-
Type:
Bug
-
Status: Done
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 5.5.0, 6.0.0, 6.5.0, 7.0.0
-
Component/s: replication
-
Labels:
-
Epic Link:
-
Story Points:3
-
Support Ticket IDs:
During the code review for OPENDJ-6325, a few problems became apparent with the ReplaySynchronizer:
- In UpdateReplayThreadPool.ReplayThread.run(), when the thread exits the loop, because of shutdown, ReplaySynchronizer.notifyAllReplaysDone() is never called while it looks like it should.
- Risk: Replica listener threads remain blocked - will prevent the server from stopping
- In that case, this will unlock the replica listener thread, which will end up calling UpdateReplayThreadPool.offer(), which will throw a IndexOutOfBoundsException because updateQueues has been cleared
- Another issue with UpdateReplayThreadPool.ReplaySynchronizer.waitForAllReplaysDone() is the case of spurious wake-ups: when Semaphore.acquire(int) throws InterruptedException (because of spurious wake-up) it will incorrectly execute the following code in the finally block:stopTheWorld = false;
There may be some other concurrency issue as well.
This issue can be considered to be fixed when all identified concurreny issues are addressed.
- is backported by
-
OPENDJ-6611 Backport OPENDJ-6377: Replication replay: issues with ReplaySynchronizer
-
- Done
-
-
OPENDJ-6953 Backport OPENDJ-6377: Replication replay: issues with ReplaySynchronizer
-
- Done
-
-
OPENDJ-6998 Backport OPENDJ-6377: Replication replay: issues with ReplaySynchronizer
-
- Done
-
- is caused by
-
OPENDJ-6325 Replication: modifying an entry leaf with a new superior is not replicated
-
- Done
-
- is related to
-
OPENDJ-6416 Replication replay: consider blocking the updates to replay only by domain instead of globally
-
- Dev backlog
-
- relates to
-
OPENDJ-5498 Deadlock with Replay threads "stop the world" mechanism when there are multiple domains
-
- Dev backlog
-