[openstack-dev] [neutron][l2gw] Preventing DB out-of-sync

Ricardo Noriega De Soto rnoriega at redhat.com
Thu Jan 18 11:18:27 UTC 2018


Just for awareness on this subject. Peng has proposed an initial patch to
tackle this issue:

https://review.openstack.org/#/c/529009/6



On Tue, Dec 12, 2017 at 11:20 AM, Ricardo Noriega De Soto <
rnoriega at redhat.com> wrote:

> Peng, I think you are right. We should have a common behavior among the
> drivers, and move the implementation to the proper methods like
> post-commits, do the validation on the pre-commits, etc, etc.
>
> Second phase to tackle the out-of-sync could be the "revision number"
> approach from networking-ovn.
>
> Cheers
>
> On Mon, Dec 11, 2017 at 4:32 PM, Peng Liu <pliu at redhat.com> wrote:
>
>> Hi Michael,
>>
>> Yes, it's a similar issue but different aspect. Actually, the case for
>> l2gw is worse, considering we have to deal with 2 existing back-end driver
>> which have different understanding for the interfaces. But I think the
>> proposed approach for networking-ovn is inspiring and helpful for l2gw.
>>
>> Thanks,
>>
>> On Fri, Dec 8, 2017 at 11:59 PM, Michael Bayer <mbayer at redhat.com> wrote:
>>
>>> On Wed, Dec 6, 2017 at 3:46 AM, Peng Liu <pliu at redhat.com> wrote:
>>> > Hi,
>>> >
>>> > During working on this patch[0], I encounter some DB out-of-sync
>>> problem. I
>>> > think maybe the design can be improved. Here is my thought, all
>>> comments are
>>> > welcome.
>>>
>>>
>>> see also https://review.openstack.org/#/c/490834/ which I think is
>>> dealing with a similar (if not the same) issue.
>>>
>>> >
>>> > In plugin code, I found all the resource operations follow the pattern
>>> in
>>> > [1]. It is a very misleading design compare to [2].
>>> >
>>> > "For every action that can be taken on a resource, the mechanism driver
>>> > exposes two methods - ACTION_RESOURCE_precommit, which is called
>>> within the
>>> > database transaction context, and ACTION_RESOURCE_postcommit, called
>>> after
>>> > the database transaction is complete."
>>> >
>>> > In result, if we focus on the out-of-sync between plugin DB and
>>> > driver/backend DB:
>>> >
>>> > 1) In RPC driver, only methods Action_Resource and are implemented.
>>> Which
>>> > means the action is token before it was written in plugin DB. In case
>>> of
>>> > action partial succeed (especially for update case) or plugin DB
>>> operation
>>> > failure, it will cause DB out-of-sync.
>>> > 2) In ODL driver, only methods Action_Resource_postcommit are
>>> implemented,
>>> > which means there is no validation in ODL level before the record is
>>> written
>>> > in the plugin DB. In case of, ODL side failure, there is no rollback
>>> for
>>> > plugin DB.
>>> >
>>> > So, to fix this issue is costly. Both plugin and driver sides need to
>>> be
>>> > altered.
>>> >
>>> > The other side of this issue is a period db monitor mechanism between
>>> plugin
>>> > and drivers, and it is another story.
>>> >
>>> >
>>> > [0] https://review.openstack.org/#/c/516256
>>> > [1]
>>> > ...
>>> >     def Action_Resource
>>> >         self.validate_Resource_for_Action
>>> >         self.driver.Action_Resource
>>> >         with context.session.begin(subtransactions=True):
>>> >             super.Action_Resource
>>> >             self.driver.Action_Resource_precommit
>>> >         try:
>>> >             self.driver.Action_Resource_postcommit
>>> > ...
>>> > [2] https://wiki.openstack.org/wiki/Neutron/ML2
>>> >
>>> > --
>>> > Peng Liu
>>> >
>>> > ____________________________________________________________
>>> ______________
>>> > OpenStack Development Mailing List (not for usage questions)
>>> > Unsubscribe: OpenStack-dev-request at lists.op
>>> enstack.org?subject:unsubscribe
>>> > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>> >
>>>
>>> ____________________________________________________________
>>> ______________
>>> OpenStack Development Mailing List (not for usage questions)
>>> Unsubscribe: OpenStack-dev-request at lists.op
>>> enstack.org?subject:unsubscribe
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>
>>
>>
>>
>> --
>> Peng Liu | Senior Software Engineer
>>
>> Tel: +86 10 62608046 (direct)
>> Mobile: +86 13801193245 <+86%20138%200119%203245>
>>
>> Red Hat Software (Beijing) Co., Ltd.
>> 9/F, North Tower C,
>> Raycom Infotech Park,
>> No.2 Kexueyuan Nanlu, Haidian District,
>> Beijing, China, POC 100190
>>
>> ____________________________________________________________
>> ______________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscrib
>> e
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>
>
> --
> Ricardo Noriega
>
> Senior Software Engineer - NFV Partner Engineer | Office of Technology  |
> Red Hat
> irc: rnoriega @freenode
>
>


-- 
Ricardo Noriega

Senior Software Engineer - NFV Partner Engineer | Office of Technology  |
Red Hat
irc: rnoriega @freenode
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20180118/11c33c2b/attachment.html>


More information about the OpenStack-dev mailing list