NLBEmulator.stop() is not serialized with add_node() and remove_node(). A concurrent add can start a proxy that stop() misses before publication, and concurrent dictionary mutation can race with shutdown iteration.
Serialize lifecycle operations, prevent proxy publication after shutdown, and add concurrent lifecycle tests.
Related: #949.
NLBEmulator.stop()is not serialized withadd_node()andremove_node(). A concurrent add can start a proxy thatstop()misses before publication, and concurrent dictionary mutation can race with shutdown iteration.Serialize lifecycle operations, prevent proxy publication after shutdown, and add concurrent lifecycle tests.
Related: #949.