Fixes #8376 If a recycle should fail, we will sort of handle it by deleting the segment, so no leaks. But if we have waiter(s) on the recycle queue, we could end up deadlocked/starved because nothing is incoming there. This adds an abort of the queue iff we failed and no objects are available. This will wake up any waiter, and he should retry, and hopefully at least be able to create a new segment. We then reset the queue to a new one. So we can go on. v2: * Forgot to reset queue v3: * Nicer exception handling in allocate_segment_ex
100 KiB
100 KiB