[openstack-dev] [neutron][l2gw] Preventing DB out-of-sync
Ricardo Noriega De Soto
rnoriega at redhat.com
Tue Dec 12 10:20:30 UTC 2017
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.
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.
> 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 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
>> > . 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.
>> > 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.op
>> > 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:unsubscrib
> 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:unsubscribe
Senior Software Engineer - NFV Partner Engineer | Office of Technology |
irc: rnoriega @freenode
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the OpenStack-dev