[openstack-dev] [neutron][l2gw] Preventing DB out-of-sync
pliu at redhat.com
Mon Dec 11 15:32:35 UTC 2017
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.
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, I encounter some DB out-of-sync
> problem. I
> > think maybe the design can be improved. Here is my thought, all comments
> > 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
> > . It is a very misleading design compare to .
> > "For every action that can be taken on a resource, the mechanism driver
> > exposes two methods - ACTION_RESOURCE_precommit, which is called within
> > database transaction context, and ACTION_RESOURCE_postcommit, called
> > 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
> > failure, it will cause DB out-of-sync.
> > 2) In ODL driver, only methods Action_Resource_postcommit are
> > which means there is no validation in ODL level before the record is
> > 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
> > and drivers, and it is another story.
> >  https://review.openstack.org/#/c/516256
> > 
> > ...
> > 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
> > ...
> >  https://wiki.openstack.org/wiki/Neutron/ML2
> > --
> > Peng Liu
> > ____________________________________________________________
> > OpenStack Development Mailing List (not for usage questions)
> > Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:
> > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
Peng Liu | Senior Software Engineer
Tel: +86 10 62608046 (direct)
Mobile: +86 13801193245
Red Hat Software (Beijing) Co., Ltd.
9/F, North Tower C,
Raycom Infotech Park,
No.2 Kexueyuan Nanlu, Haidian District,
Beijing, China, POC 100190
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the OpenStack-dev