RuntimeError from get_transport when another thread concurrently registers a new transport
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Bazaar |
Confirmed
|
Low
|
Unassigned |
Bug Description
Traceback from vila:
ERROR: bzrlib.
-------
RemoteException: Traceback (most recent call last):
File "/home/
bd = bzrdir.
File "/home/
t = get_transport(base, possible_
File "/home/
for proto, factory_list in transport_
File "/home/
return sorted(
File "/home/
for key, getter in self._dict.
RuntimeError: dictionary changed size during iteration
This is a smart-server-
The right fix is presumably to use self._dict.items() in Registry. We should try to write a test that triggers this race somehow, probably by adding a lazy registration that will add something to its registry, then calling Registry.
This also implies that Registry.