Re: [dev] Better tpc_finish (was Re: [dev] RFC IMVCCStorage everywhere (Move ZODB's MVCC to storage layer))

Jim Fulton <[email protected]>
Newsgroups gmane.comp.web.zope.zodb
Message-ID <CAPDm-Fgf=yMmygGGBE+0m01kH48qCYQpDwFRBepeooOG59GnTA@mail.gmail.com>
On Fri, Jun 17, 2016 at 7:31 AM, Julien Muchembled <[email protected]> wrote:
> Le 06/16/16 22:29, Jim Fulton a écrit :
>>> You can find the monkey-patch at
>>>   https://lab.nexedi.com/nexedi/neoppod/blob/v1.6.3/neo/client/__init__.py#L35
>>>
>>> https://lab.nexedi.com/nexedi/neoppod/blob/v1.6.3/ZODB.patch
>>> contains other changes:
>>> - update of IStorage.tpc_finish doc string
>>> - update of existing unit tests
>>
>> This is the 21st Century. You should start submitting pull requests. :)
>
> Sure, when I'm actually decided to work on this. And I also realized that our patch was not ready.
>
>> I'm with you.  I'm planning to make ZEO5 like NEO in this regard and
>> there's even a new comment in ZODB that alludes to this.
>
> :)
>
>> Let's change ZODB5 to make this easier/saner for NEO and future ZEO.
>>
>> Let's think of how we **want** this to work and work out a transition
>> plan.  I'd like to do this in a way that doesn't break existing
>> storages if practical.
>>
>> Here's a straw man:
>>
>> - store, undo, and tpc_vote are no longer required to return serials,
>> except when they want to signal oids who's conflicts have been
>> resolved.
>>
>> - tpc_finish may optionally return a tid. If it does, then that tid
>> should be applied to modified objects who's without resolved
>> conflicts.
>>
>> - If tpc_finish doesn't return a tid, then store, undo, and tpc_vote
>> must return serials for all stored objects.
>
> I don't understand what you mean, because that's already what our patch does:
> - it does not touch store, undo, or tpc_vote
> - tpc_finish is not required to return a tid

I wasn't commenting on your patch. I was just describing how I think
it should work. I'm glad it matches the patch.

>
>> - There are some special cases where undo or tpc_vote should return
>> serials for without conflicts, because objects were modified via unto.
>> The serials in this case may be None, as long as tpc_finish returns a
>> tid.
>
> About the expected failure in NEO when checking undo (previous mail), it was actually a misuse of ZODB API in the test. The undo was done directly at the storage level and obviously oids were automatically invalidated.
>
> Anyway, since undo is not done via a connection, there's nothing to change here, and tpc_finish is not required to return a tid.
>
>> Eventually, it will be expected for tpc_finish to return a tid.
>>
>> Thoughts?
>
> Except for the TODO I listed in a previous mail, the patch looks acceptable.
> We can go further by adding deprecation warnings if we expected tpc_finish to return a tid.
> The return type of tpc_vote and store can also be simplified to a simple list and a boolean respectively.

I look forward to a PR!

Jim

-- 
Jim Fulton
http://jimfulton.info

-- 
You received this message because you are subscribed to the Google Groups "zodb" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/d/optout.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.