I’m confused.  Once a cache update has been distributed to other members it 
can’t be undone.  That update could have triggered myriad other application 
behaviors.

Anthony

> On Sep 11, 2017, at 2:04 PM, Michael Stolz <mst...@pivotal.io> wrote:
> 
> Great, that's exactly the behavior I would expect.
> 
> Thanks.
> 
> --
> Mike Stolz
> Principal Engineer, GemFire Product Manager
> Mobile: +1-631-835-4771
> 
> On Mon, Sep 11, 2017 at 4:34 PM, Jason Huynh <jhu...@pivotal.io> wrote:
> 
>> Hi Mike, I think the concern was less about the security portion but rather
>> if any exception occurs during index update, right now, the region gets
>> updated and the rest of the system (index/wan/callbacks) may or may not be
>> updated.  I think Naba just tried to provide an example where this might
>> occur, but that specific scenario is invalid.
>> 
>> I believe Nabarun has opened a ticket for rolling back the put operation
>> when an index exception occurs. GEODE-3589.  It can probably be modified to
>> state any exception instead of index exceptions.
>> 
>> To summarize my understanding:
>> -Someone will need to implement the rollback for GEODE-3589.  This means
>> that if any exception occurs during a put, geode it will propagate back to
>> the user and it is expected the rollback mechanism will clean up any
>> partial put.
>> 
>> GEODE-3520 should be modified to:
>> -Add the isValid() api to index interface
>> -Mark an index as invalid during async index updates but not for
>> synchronous index updates.  The synchronous index updates will rely on a
>> rollback mechanism
>> 
>> 
>> 
>> 
>> On Mon, Sep 11, 2017 at 1:23 PM Michael Stolz <mst...@pivotal.io> wrote:
>> 
>>> I think there was an intention of having CREATION of an index require a
>>> higher privilege than DATA:WRITE, but it shouldn't affect applying the
>>> index on either of put or get operations.
>>> 
>>> If we are requiring something like CLUSTER:MANAGE for put on an indexed
>>> region, that is an incorrect requirement. Only DATA:WRITE should be
>>> required to put an entry and have it be indexed if an index is present.
>>> 
>>> --
>>> Mike Stolz
>>> Principal Engineer, GemFire Product Manager
>>> Mobile: +1-631-835-4771 <(631)%20835-4771>
>>> 
>>> On Fri, Sep 8, 2017 at 6:04 PM, Anilkumar Gingade <aging...@pivotal.io>
>>> wrote:
>>> 
>>>> Indexes are critical for querying; most of the databases doesn't allow
>>>> insert/update if there is any failure with index maintenance...
>>>> 
>>>> As Geode OQL supports two ways (sync and async) to maintain the
>> indexes,
>>> we
>>>> need be careful about the error handling in both cases...
>>>> 
>>>> My take is:
>>>> 1. For synchronous index maintenance:
>>>> If there is any failure in updating any index (security/auth or logical
>>>> error) on the region; throw an exception and rollback the cache
>> update/op
>>>> (index management id done under region.entry lock - we should be able
>> to
>>>> revert the op). If index or cache is left in bad state, then its a bug
>>> that
>>>> needs to be addressed.
>>>> 
>>>> Most of the time, If there is any logical error in index, it will be
>>>> detected as soon as index is created (on existing data) or when first
>>>> update is done to the cache.
>>>> 
>>>> 2. For Asynchronous index maintenance:
>>>> As this is async (assuming) user has good understanding of the risk
>>>> involved with async, any error with index maintenance, the index should
>>> be
>>>> invalidated...
>>>> 
>>>> About the security/auth, the user permission with region read/write
>>> needs
>>>> to be applied for index updates, there should not be different
>> permission
>>>> on index.
>>>> 
>>>> -Anil.
>>>> 
>>>> 
>>>> 
>>>> On Fri, Sep 8, 2017 at 2:01 PM, Nabarun Nag <n...@pivotal.io> wrote:
>>>> 
>>>>> Hi Mike,
>>>>> 
>>>>> Please do find our answers below:
>>>>> *Question:* What if there were multiple indices that were in flight
>> and
>>>>> only the third
>>>>> one errors out, will they all be marked invalid?
>>>>> 
>>>>> *Answer:* Only the third will be marked invalid and only the third
>> one
>>>> will
>>>>> not be used for query execution.
>>>>> 
>>>>> *Question/Statement:* If anything goes wrong with the put it should
>>>>> probably still throw back to
>>>>> the caller. Silent invalidation of the index is probably not
>> desirable.
>>>>> 
>>>>> *Answer: *
>>>>> In our current design this the flow of execution of a put operation:
>>>>> entry put into region -> update index -> other wan related
>> executions /
>>>>> callbacks etc.
>>>>> 
>>>>> If an exception happens while updating the index, the cache gets
>> into a
>>>> bad
>>>>> state, and we may end up getting different results depending on the
>>> index
>>>>> we are using. As the failure happens half way in a put operation, the
>>>>> regions / cache are now in a bad state.
>>>>> --------------------------
>>>>> We are thinking that if index is created  over a method invocation in
>>> an
>>>>> empty region and then we do puts, but method invocation is not
>> allowed
>>> as
>>>>> per security policies. The puts will now be successful but the index
>>> will
>>>>> be rendered invalid. Previously the puts will fail with exception and
>>> put
>>>>> the entire cache in a bad state.
>>>>> 
>>>>> 
>>>>> 
>>>>> Regards
>>>>> Nabarun
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> On Fri, Sep 8, 2017 at 10:43 AM Michael Stolz <mst...@pivotal.io>
>>> wrote:
>>>>> 
>>>>>> Just to help me understand, the index is corrupted in a way beyond
>>> just
>>>>> the
>>>>>> field that errors out?
>>>>>> What if there were multiple indices that were in flight and only
>> the
>>>>> third
>>>>>> one errors out, will they all be marked invalid?
>>>>>> If anything goes wrong with the put it should probably still throw
>>> back
>>>>> to
>>>>>> the caller. Silent invalidation of the index is probably not
>>> desirable.
>>>>>> 
>>>>>> --
>>>>>> Mike Stolz
>>>>>> Principal Engineer, GemFire Product Manager
>>>>>> Mobile: +1-631-835-4771 <(631)%20835-4771> <(631)%20835-4771>
>>>>>> 
>>>>>> On Fri, Sep 8, 2017 at 12:34 PM, Dan Smith <dsm...@pivotal.io>
>>> wrote:
>>>>>> 
>>>>>>> +1
>>>>>>> 
>>>>>>> -Dan
>>>>>>> 
>>>>>>> On Thu, Sep 7, 2017 at 9:14 PM, Nabarun Nag <n...@apache.org>
>>> wrote:
>>>>>>> 
>>>>>>>> *Proposal:*
>>>>>>>> * Index interface will include an API - isValid() which will
>>> return
>>>>>> true
>>>>>>> if
>>>>>>>> the index is still valid / uncorrupted, else will return false
>> if
>>>> it
>>>>>>>> corrupted / invalid.
>>>>>>>> * gfsh command "list index" will have one more column "Is
>> Valid"
>>>>> which
>>>>>>> will
>>>>>>>> state the status as "true" or "false".
>>>>>>>> * Invalid indexes will not be used during query executions.
>>>>>>>> * In case the index is found to be invalid, the user will be
>> able
>>>> to
>>>>>>>> remove/destroy the index.
>>>>>>>> * When a put operation corrupts an index, it will be logged.
>>>>>>>> 
>>>>>>>> *Reasoning:*
>>>>>>>> * Currently if a put operation raises an exception while
>> updating
>>>> the
>>>>>>>> index, the put operation fails with an exception to the putter.
>>>>>>>> * For example, if an index is created on an object method, and
>>> that
>>>>>>> method
>>>>>>>> causes an exception while updating the index as a part of a put
>>>>>>> operation,
>>>>>>>> then the put operation fails for that particular entry and the
>>>> index
>>>>> is
>>>>>>>> left in a bad state.
>>>>>>>> * This may occur also due to lack of permission to update index
>>> but
>>>>>> have
>>>>>>>> permission to do puts.
>>>>>>>> * We are proposing that in the above mentioned scenarios, the
>> put
>>>>>>> succeeds
>>>>>>>> in putting the entry in the region but the index which it was
>>>> trying
>>>>> to
>>>>>>>> update will be marked invalid and will not be used for query
>>>>>> executions.
>>>>>>>> * This can be justified because the corrupted index will not
>>>>> correctly
>>>>>>>> represent the region entries.
>>>>>>>> 
>>>>>>>> *Status Quo:*
>>>>>>>> * Index creation will still fail if we are trying to create an
>>>> index
>>>>>>> over a
>>>>>>>> region containing an entry/entries  which will cause an
>> exception
>>>>> while
>>>>>>>> loading the entry into the index.
>>>>>>>> 
>>>>>>>> Regards
>>>>>>>> Nabarun Nag
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 

Reply via email to