ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Denis Magda <dma...@apache.org>
Subject Re: Persistent Store example fails with NPE
Date Fri, 26 May 2017 20:25:35 GMT
As I see from the AffinityFunction implementations, client nodes are not used there that implies
there is no way to deploy replicated and partitioned caches there.

—
Denis

> On May 26, 2017, at 12:19 PM, Dmitriy Setrakyan <dsetrakyan@apache.org> wrote:
> 
> On Fri, May 26, 2017 at 12:17 PM, Denis Magda <dmagda@apache.org> wrote:
> 
>> Local and near caches can be configured on clients. But you can still
>> define replicated and partitioned ones in the clients’ configuration and
>> they will be simply ignored. I want us to do the same for the persistent
>> store (simply ignore it if it’s defined in a client’s configuration).
>> 
> 
> Denis, are you absolutely 100% sure that there is no way to configure
> normal cache on the client nodes? If yes, then I agree with you.
> 
> 
>> Sounds reasonable?
>> 
>> 
>> —
>> Denis
>> 
>>> On May 26, 2017, at 12:14 PM, Dmitriy Setrakyan <dsetrakyan@apache.org>
>> wrote:
>>> 
>>> On Fri, May 26, 2017 at 11:59 AM, Denis Magda <dmagda@apache.org> wrote:
>>> 
>>>> Exactly, you can specify caches in the configuration of both clients and
>>>> servers BUT the caches will be deployed on the servers only.
>>>> This is why it’s absolutely fine to use a single configuration (with
>>>> caches defined) for all your cluster nodes because Ignite can
>> automatically
>>>> figure out what doesn’t make sense for clients and what’s not.
>>>> 
>>> 
>>> Agree. But it is still possible to configure caches on the client side,
>>> right? All I want is for us to remain consistent and provide identical
>>> behavior with persistence enabled.
>>> 
>>> 
>>>> 
>>>> —
>>>> Denis
>>>> 
>>>>> On May 26, 2017, at 11:46 AM, Dmitriy Setrakyan <dsetrakyan@apache.org
>>> 
>>>> wrote:
>>>>> 
>>>>> Denis,
>>>>> 
>>>>> I think I misunderstand the issue. How do we do it for caches? Caches
>> are
>>>>> only supposed to be enabled on the servers by default. Do we require
a
>>>>> different configuration file for clients and servers for the caches?
>>>>> 
>>>>> D.
>>>>> 
>>>>> On Fri, May 26, 2017 at 11:41 AM, Denis Magda <dmagda@apache.org>
>> wrote:
>>>>> 
>>>>>> I tend to use a single XML configuration for all my cluster nodes
>>>> (servers
>>>>>> and clients). Presently, I forced to create and maintain at least
2.
>>>> This
>>>>>> is the first concern. The second concern is if persistence store
has
>> no
>>>>>> effect for the client node why not simply ignore it and not make
the
>>>> user
>>>>>> to set MemoryConfiguration explicitly if the goal is to use a single
>> XML
>>>>>> config.
>>>>>> 
>>>>>> —
>>>>>> Denis
>>>>>> 
>>>>>>> On May 26, 2017, at 11:33 AM, Dmitriy Setrakyan <
>> dsetrakyan@apache.org
>>>>> 
>>>>>> wrote:
>>>>>>> 
>>>>>>> On Fri, May 26, 2017 at 11:29 AM, Denis Magda <dmagda@apache.org
>>>>>> <mailto:dmagda@apache.org>> wrote:
>>>>>>> 
>>>>>>>>> Can we just fix the exception
>>>>>>>>> message to clearly state that client mode requires all
explicit
>>>>>>>>> configuration for such and such functionality?
>>>>>>>> 
>>>>>>>> I don’t like this. It will require me as a user:
>>>>>>>> 
>>>>>>>> * have a separate configuration for clients ALL the times.
>>>>>>>> * initialize the memory bean explicitly which looks like
a hack and
>>>>>>>> workaround
>>>>>>>> 
>>>>>>>> <property name="memoryConfiguration">
>>>>>>>> <bean class="org.apache.ignite.configuration.MemoryConfiguration">
>>>>>>>> </bean>
>>>>>>>> </property>
>>>>>>>> 
>>>>>>>> 
>>>>>>> Denis,
>>>>>>> 
>>>>>>> Why would you even have a use case for a persistence configuration
on
>>>> the
>>>>>>> client side? What happened in your case was a mistake and you
should
>>>> have
>>>>>>> received a proper exception. I am simply suggesting that in the
odd
>>>> case
>>>>>>> that someone does need it, we provide proper error message explaining
>>>>>>> exactly what needs to be done. Why not?
>>>>>>> 
>>>>>>> 
>>>>>>>>> On May 26, 2017, at 11:02 AM, Dmitriy Setrakyan <
>>>> dsetrakyan@apache.org
>>>>>>> 
>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>> I don't like ignoring any configuration, but I do agree
that
>> enabling
>>>>>>>>> persistence on the client side seems odd. Can we just
fix the
>>>> exception
>>>>>>>>> message to clearly state that client mode requires all
explicit
>>>>>>>>> configuration for such and such functionality?
>>>>>>>>> 
>>>>>>>>> D.
>>>>>>>>> 
>>>>>>>>> On Fri, May 26, 2017 at 10:34 AM, Sergey Chugunov <
>>>>>>>> sergey.chugunov@gmail.com
>>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> Denis,
>>>>>>>>>> 
>>>>>>>>>> Thanks for quick reply,
>>>>>>>>>> 
>>>>>>>>>> I made a change and tested it with your example,
everything looks
>>>>>> fine.
>>>>>>>>>> 
>>>>>>>>>> Pull request is open and available at [1]
>>>>>>>>>> 
>>>>>>>>>> [1] https://github.com/apache/ignite/pull/2016
>>>>>>>>>> 
>>>>>>>>>> On Fri, May 26, 2017 at 8:25 PM, Denis Magda <dmagda@apache.org>
>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>>> I would suggest on the first iteration to
simply ignore
>>>> persistence
>>>>>>>>>>>> configuration on client nodes.
>>>>>>>>>>>> If client node finds persistence configuration
on startup it
>> will
>>>>>>>>>>> printout
>>>>>>>>>>>> warning message to log and proceed without
persistence.
>>>>>>>>>>> 
>>>>>>>>>>> +1 for this. Otherwise, it looks like a dirty
hack when I need to
>>>> add
>>>>>>>> an
>>>>>>>>>>> empty MemoryConfiguration to a client config
file. Plus, it
>>>> requires
>>>>>> us
>>>>>>>>>> to
>>>>>>>>>>> create different configuration files for servers
and clients
>> which
>>>>>> has
>>>>>>>> to
>>>>>>>>>>> be optional by default.
>>>>>>>>>>> 
>>>>>>>>>>> —
>>>>>>>>>>> Denis
>>>>>>>>>>> 
>>>>>>>>>>>> On May 26, 2017, at 9:50 AM, Sergey Chugunov
<
>>>>>>>>>> sergey.chugunov@gmail.com>
>>>>>>>>>>> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>> Moreover, enabling persistence on client
node is very risky and
>>>> may
>>>>>>>>>> lead
>>>>>>>>>>> to
>>>>>>>>>>>> many tricky cases.
>>>>>>>>>>>> 
>>>>>>>>>>>> I would suggest on the first iteration to
simply ignore
>>>> persistence
>>>>>>>>>>>> configuration on client nodes.
>>>>>>>>>>>> If client node finds persistence configuration
on startup it
>> will
>>>>>>>>>>> printout
>>>>>>>>>>>> warning message to log and proceed without
persistence.
>>>>>>>>>>>> 
>>>>>>>>>>>> Supporting persistence on client nodes definitely
requires more
>>>>>>>>>>> thoughtful
>>>>>>>>>>>> discussion and may be added in the future.
>>>>>>>>>>>> 
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Sergey.
>>>>>>>>>>>> 
>>>>>>>>>>>> On Fri, May 26, 2017 at 7:28 PM, Sergey Chugunov
<
>>>>>>>>>>> sergey.chugunov@gmail.com>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>>> Denis,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I see from example that you're trying
to start a client node
>> with
>>>>>>>>>>>>> persistence configuration specified and
you're saying that
>> Ignite
>>>>>>>> must
>>>>>>>>>>>>> provide default MemoryConfiguration.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> But that contradicts with decision we
all agreed on in the
>>>>>>>>>>> discussion[1]:
>>>>>>>>>>>>> if user wants to do something unusual
on client nodes like
>>>> storing
>>>>>>>>>> cache
>>>>>>>>>>>>> partitions (or in this case persisting
stuff) he/she *must
>>>> *provide
>>>>>>>>>> all
>>>>>>>>>>>>> necessary configuration explicitly.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Server node with the same persistence
configuration (and
>> without
>>>>>>>>>>> explicit
>>>>>>>>>>>>> memory configuration) starts just fine.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> [1] http://apache-ignite-developers.2346864.n4.nabble.
>>>>>>>>>>>>> com/Question-local-cache-on-client-nodes-tt15950.html
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>> Sergey.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Fri, May 26, 2017 at 7:03 PM, Denis
Magda <
>> dmagda@apache.org>
>>>>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Sergey,
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> The issue vanishes as soon as I add
the following to the
>>>>>>>>>> configuration:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> <property name="memoryConfiguration">
>>>>>>>>>>>>>> <bean class="org.apache.ignite.configuration.
>>>>>>>>>> MemoryConfiguration">
>>>>>>>>>>>>>> </bean>
>>>>>>>>>>>>>> </property>
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> My point is that we just need to
create a MemoryConfiguration
>>>>>>>>>>> implicitly
>>>>>>>>>>>>>> if it’s not defined (no any warnings
or extra messages). It’s
>> a
>>>>>>>>>>>>>> responsibility of our platform to
generate a default
>>>> configuration
>>>>>>>> if
>>>>>>>>>>> it’s
>>>>>>>>>>>>>> not set explicitly.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> —
>>>>>>>>>>>>>> Denis
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On May 26, 2017, at 8:46 AM,
Sergey Chugunov <
>>>>>>>>>>> sergey.chugunov@gmail.com>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Hi Denis,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> What is the expected behavior
in that case? Bug doesn't
>> suggest
>>>>>>>> any.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> From my point of view it would
be better to throw an
>> exception
>>>> on
>>>>>>>>>>>>>> startup
>>>>>>>>>>>>>>> with meaningful message than
to silently create a default
>>>>>>>>>>>>>>> MemoryConfiguration under the
cover.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>> Sergey.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On Fri, May 26, 2017 at 4:00
AM, Denis Magda <
>>>> dmagda@apache.org>
>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Igniters,
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> I’ve just added the first
Persistent Store example to the
>>>> branch
>>>>>>>>>> that
>>>>>>>>>>>>>>>> fosters the donation:
>>>>>>>>>>>>>>>> https://github.com/apache/ignite/tree/ignite-5267/
>>>>>>>>>>>>>>>> examples/src/main/java/org/apache/ignite/examples/
>>>>>> persistentstore
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> However, the example fails
with an NPE if a
>>>> MemoryConfiguration
>>>>>> is
>>>>>>>>>>> not
>>>>>>>>>>>>>>>> defined explicitly:
>>>>>>>>>>>>>>>> https://issues.apache.org/jira/browse/IGNITE-5295
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Please those who are involved
in the store development fix
>> the
>>>>>>>>>> issue
>>>>>>>>>>> by
>>>>>>>>>>>>>>>> the end of tomorrow. I want
to complete with the technical
>>>>>>>>>>>>>> documentation
>>>>>>>>>>>>>>>> referring to a workable example.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> —
>>>>>>>>>>>>>>>> Denis
>>>>>> 
>>>>>> 
>>>> 
>>>> 
>> 
>> 


Mime
View raw message