BGPaaS: Schema in infinite loop trying to incorrectly delete bgp-router upon service restart
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Juniper Openstack | Status tracked in Trunk | |||||
Trunk |
Fix Committed
|
High
|
Suresh Balineni |
Bug Description
contrail version 3.0-2698.
BGPaaS object is attached to a VMI. bgp-router client/server objects are correctly created. Now, if config services are restarted, it is seen that schema is trying to delete the bgpaas-client bgp-router object. This of course fails cause there is a bgpaas back ref present. ST continues to periodically attempt the delete.
01/20/2016 11:22:17 AM [contrail-schema]: SANDESH: Logging: LEVEL: [SYS_INFO] -> [SYS_NOTICE]
<class 'cfgm_common.
Python 2.7.6: /usr/bin/python
Wed Jan 20 11:22:23 2016
A problem occurred in a Python script. Here is the sequence of
function calls leading up to the error, in the order they occurred.
/usr/bin/
6
7 if __name__ == '__main__':
8 sys.exit(
9 load_entry_
10 )
load_entry_point = <function load_entry_point>
/usr/lib/
821 def server_main():
822 cgitb.enable(
823 main()
824 # end server_main
825
global main = <function main>
/usr/lib/
815 _zookeeper_
816 os.getpid(), run_schema_
817 args)
818 # end main
819
args = Namespace(
/usr/lib/
334 def master_
335 self._election = self._zk_
336 self._election.
337 # end master_election
338
self = <cfgm_common.
self._election = <kazoo.
self._election.run = <bound method Election.run of <kazoo.
func = <function run_schema_
args = (Namespace(
kwargs = {}
/usr/lib/
46 try:
47 with self.lock:
48 func(*args, **kwargs)
49
50 except CancelledError:
func = <function run_schema_
args = (Namespace(
kwargs = {}
/usr/lib/
796
797 global transformer
798 transformer = SchemaTransform
799 gevent.
800 # end run_schema_
global transformer = None
global SchemaTransformer = <class 'schema_
args = Namespace(
/usr/lib/
208 DBBaseST._vnc_lib = _vnc_lib
209 ServiceChain.init()
210 self.reinit()
211 # create cpu_info object to send periodic updates
212 sysinfo_req = False
self = <schema_
self.reinit = <bound method SchemaTransform
/usr/lib/
461 for cls in DBBaseST.
462 for obj in cls.values():
463 obj.evaluate()
464 self.process_
465 # end reinit
obj = <schema_
obj.evaluate = <bound method BgpRouterST.
/usr/lib/
2699 except NoIdError:
2700 pass
2701 self._vnc_
2702 self.delete(
2703 elif ret:
self = <schema_
self._vnc_lib = <vnc_api.
self._vnc_
builtinid = <built-in function id>
self.obj = <vnc_api.
self.obj.uuid = u'617100bf-
/usr/lib/
37 retry_on_
38 self._parse_
39 return func(self, *args, **kwargs)
40 return wrapper
41
func = <function _object_delete>
self = <vnc_api.
args = ('bgp-router',)
kwargs = {'id': u'617100bf-
/usr/lib/
495 uri = obj_cls.
496
497 content = self._request_
498 # end _object_delete
499
content undefined
self = <vnc_api.
self._request_
global rest = <module 'cfgm_common.rest' from '/usr/lib/
rest.OP_DELETE = 4
uri = u'/bgp-
/usr/lib/
695 return self._request(op, url, data=data, retry_on_
696 retry_after_
697 retry_count=
698
699 def _request(self, op, url, data=None, retry_on_
retry_count = 30
/usr/lib/
740 raise PermissionDenie
741 elif status == 409:
742 raise RefsExistError(
743 elif status == 504:
744 # Request sent to API server, but no response came within 50s
global RefsExistError = <class 'cfgm_common.
content = u"Delete when resource still referred: ['http://
<class 'cfgm_common.
__class__ = <class 'cfgm_common.
__delattr__ = <method-wrapper '__delattr__' of RefsExistError object>
__dict__ = {}
__doc__ = None
__format__ = <built-in method __format__ of RefsExistError object>
__getattrib
__getitem__ = <method-wrapper '__getitem__' of RefsExistError object>
__getslice__ = <method-wrapper '__getslice__' of RefsExistError object>
__hash__ = <method-wrapper '__hash__' of RefsExistError object>
__init__ = <method-wrapper '__init__' of RefsExistError object>
__module__ = 'cfgm_common.
__new__ = <built-in method __new__ of type object>
__reduce__ = <built-in method __reduce__ of RefsExistError object>
__reduce_ex__ = <built-in method __reduce_ex__ of RefsExistError object>
__repr__ = <method-wrapper '__repr__' of RefsExistError object>
__setattr__ = <method-wrapper '__setattr__' of RefsExistError object>
__setstate__ = <built-in method __setstate__ of RefsExistError object>
__sizeof__ = <built-in method __sizeof__ of RefsExistError object>
__str__ = <method-wrapper '__str__' of RefsExistError object>
__subclassh
__unicode__ = <built-in method __unicode__ of RefsExistError object>
__weakref__ = None
args = (u"Delete when resource still referred: ['http://
message = u"Delete when resource still referred: ['http://
The above is a description of an error in a Python program. Here is
the original traceback:
Traceback (most recent call last):
File "/usr/bin/
load_
File "/usr/lib/
main()
File "/usr/lib/
args)
File "/usr/lib/
self.
File "/usr/lib/
func(*args, **kwargs)
File "/usr/lib/
transformer = SchemaTransform
File "/usr/lib/
self.reinit()
File "/usr/lib/
obj.evaluate()
File "/usr/lib/
self.
File "/usr/lib/
return func(self, *args, **kwargs)
File "/usr/lib/
content = self._request_
File "/usr/lib/
retry_
File "/usr/lib/
raise RefsExistError(
RefsExistError: Delete when resource still referred: ['http://
summary: |
- BGPaaS: Schema in infinite loop trying to incorrectly delete bhp-router + BGPaaS: Schema in infinite loop trying to incorrectly delete bgp-router upon service restart |
Review in progress for https:/ /review. opencontrail. org/16760
Submitter: Suresh Balineni (<email address hidden>)