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 19:17:14 GMT
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).

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