Hi Matt, We're looking into the below patches, could you please help to clarify below questions? Thanks much! * e490b5a: CGTS-3239: add process synchronization around segment allocation
From the comments "in upstream they attempted to address this by changing the segmentation allocation to be random so that the probability of 2 processes accessing the same record is lessened but it does not completely eliminate the possibility. In our environment we allocate sequentially so the likelyhood of this occurring is even greater. We allocate sequentially to facilitate predictable network setup order."
Do you think this issue still need to be addressed when STX adopt upstream type driver since (1) the possibility is low and (2) the patch introduce a global lock which may have side effect on performance? * 8e7249: GTS-6926: wsgi: prevent accepting socket without a greenthread
From the comments "This is really a bug (IMHO) in the eventlet code but to test the waters and make sure this works properly I am pushing this to neutron first before deciding whether to make the same/equivalent change at a lower level. Neutron is planning on moving away from the eventlet.wsgi.server so hopefully in the future the API will be run by a proper webserver which won't be susceptible to this type of failure."
By reviewing the code, I think Allain is correct and it make more sense to fix this issue in low level code (maybe in eventlet.wsgi.Server, check the status for available working threads then determine whether to process the request or return 'server busy' error directly; by applying the patch in neutron, the client may get "server unavailable" error). And since eventlet.wsgi.server is planned to be removed by neutron, do you think hold on this fix for now make sense? Thank much! Best Regards, Le, Huifeng