This is an error in Core where the internal semaphore is set to null when Dispose is called on the BlockingCollection. When Dispose is called by the client the client correctly stops accepting configs by calling CompleteAdding on the blocking collection and then calls Dispose after removing any items that may be in enqueued. This is on the dedicated config thread (CT); however, worker threads from operation requests still firing may try to enqueue. Since the object is disposed (and should throw an ODE) it throws a ArgumentNullException because the internal semaphore is already null.
A quick fix will be to be to capture and ignore this specific exception.
This is an error in Core where the internal semaphore is set to null when Dispose is called on the BlockingCollection. When Dispose is called by the client the client correctly stops accepting configs by calling CompleteAdding on the blocking collection and then calls Dispose after removing any items that may be in enqueued. This is on the dedicated config thread (CT); however, worker threads from operation requests still firing may try to enqueue. Since the object is disposed (and should throw an ODE) it throws a ArgumentNullException because the internal semaphore is already null.
A quick fix will be to be to capture and ignore this specific exception.