-
Notifications
You must be signed in to change notification settings - Fork 586
Closed
Description
The code in AutorecoveringConnection.java acquires synchronization objects in different order (once acquires consumers and then recordedQueues, another time acquires recordedQueues and then consumers).
Acquiring synchronization objects in different order can cause circular wait (deadlock).
The first order is: (1) first acquire consumers and then recordedQueues:
- enter public method
excludeQueueFromRecovery()at line 984 - acquire synchronization on
consumersat line 987 - acquire synchronization on
recordedQueuesat line 988
The second order is: (2) first acquire recordedQueues and then consumers:
- enter public method
recoverQueue()at line 715 - acquire synchronization on
recordedQueuesat line 732 - call
deleteRecordedQueue()at line 740 - call
maybeDeleteRecordedAutoDeleteExchange()at line 973 - acquire synchronization on
consumersat line 1035
initially reported by Adrian Nistor
Metadata
Metadata
Assignees
Labels
No labels