schema transformer could crash during port update if port disappears in the middle of the update
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Juniper Openstack | Status tracked in Trunk | |||||
R2.21.x |
Fix Committed
|
Undecided
|
Sahil Sabharwal | |||
R4.0 |
Fix Committed
|
Undecided
|
Sahil Sabharwal | |||
Trunk |
Fix Committed
|
Undecided
|
Sahil Sabharwal |
Bug Description
Observed on a customer setup that schema transformer could crash with the following traceback:
Traceback (most recent call last):
File "/usr/lib/
transformer
File "/usr/lib/
func(idents, meta)
File "/usr/lib/
vmi.
File "/usr/lib/
_vnc_
File "/usr/lib/
self.
File "/usr/lib/
raise he
HttpError: HTTP Status: 500 Content: Internal Server Error
This happened because api server didn't handle the disappearance of the port while it tried to update last modified timestamp with the traceback below:
Traceback (most recent call last):
File "/usr/lib/
return route.call(**args)
File "/usr/lib/
rv = callback(*a, **ka)
File "/usr/lib/
rv = callback(*a, **ka)
File "/usr/lib/
response = handler(*args, **kwargs)
File "/usr/lib/
id = self._db_
File "/usr/lib/
ref_data, operation)
File "/usr/lib/
self.
File "/usr/lib/
['prop:
File "/usr/lib/
return func(*args, **kwargs)
File "/usr/lib/
read_
File "/usr/lib/
return getattr(conn, f)(*args, **kwargs)
File "/usr/lib/
result = f(self, *args, **kwargs)
File "/usr/lib/
return self.recv_get()
File "/usr/lib/
raise result.nfe
NotFoundException: NotFoundExcepti
10.96.0.155 - - [2017-05-03 15:16:47] "POST /ref-update HTTP/1.1" 500 156 0.019676
On releases older than 3.0, such a crash could cause schema transformer to lose some 'in-flight' messages from ifmap server. As a result, those messages won't be processed resulting in lost functionality until schema transformer is restarted.
This problem is not there in 3.0 or later because schema transformer does not drop any in-flight messages. However, the traceback still needs to be handled in api server.