Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
It seems that the following situation is possible. Two threads try to call getOrCreateQuotaSensors() at the same time. Initially, quotaSensor is not registered, then both threads try to get the write lock to register quotaSensor. Thread 1 grabs the write lock and registers both quotaSensor and throttleTimeSensor, and then releases the lock. Thread 2 grabs the write lock again and reads a non-null quotaSensor. It then skips the logic to register throttleTimeSensor and returns. However, the returned throttleTimeSensor will be null.