Otherwise, the bug probably still affects us: if OVSNeutronAgent.__init__ raises a RuntimeError (or any other exception), then the agent is terminated, instead of retry. Once in the daemon_loop, we correctly catch all Exceptions, which doesn't result in agent dying. Instead we resync, which is correct.
To fix this bug, we would probably need to make sure that if __init__ raises a specific retriable exception, we retry initialization. Note that we probably don't want to retry every single exception because some of them are not recoverable, and hence we would then get in a infinite loop.
Otherwise, the bug probably still affects us: if OVSNeutronAgent .__init_ _ raises a RuntimeError (or any other exception), then the agent is terminated, instead of retry. Once in the daemon_loop, we correctly catch all Exceptions, which doesn't result in agent dying. Instead we resync, which is correct.
To fix this bug, we would probably need to make sure that if __init__ raises a specific retriable exception, we retry initialization. Note that we probably don't want to retry every single exception because some of them are not recoverable, and hence we would then get in a infinite loop.