Changes since 2.9.0.alpha2
Fixes
-
Prevent deadlock on concurrent push disconnection (#16544)
Commit · Pull request · IssueIf the AtmospherePushConnection.disconnect method is invoked concurrently by multiple threads, a deadlock may happen if the servlet container somehow locks HTTP session, as closing AtmosphereResource may cause accesses to the HTTP session. For example, is a thread (A) is invalidating the HTTP session, thus closing Vaadin UIs and disconnecting push, and another thread (B) is also requesting a push disconnect, then B will be blocked when closing the atmosphere resource by the lock on the session held by A, but A is actually waiting to acquire the lock on AtmospherePushConnection held by B, causing the deadlock. This change allows a single thread to perform the disconnect operation, to avoid potential deadlocks.