mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noel Rouvignac
10.50.2013 1c3a3e354aeb853680cd722767e62a51ef85a2a6
refs
author Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Thursday, October 10, 2013 11:50 +0200
committer Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Thursday, October 10, 2013 11:50 +0200
commit1c3a3e354aeb853680cd722767e62a51ef85a2a6
tree 17f91cd52a3d72c53097a23653fd85f2bdfbee44 tree | zip | gz
parent 585d35b94a797fa403ad080c4bffec73b910eee6 view | diff
Stabilizing JEChangeNumberIndexDBTest.testClear().



Here is the failure scenario for this test (with one CPU):

t1 (test thread) t2 (CNIndexDB purge thread)
---------------- ---------------------------
| |
| v
| JEChangeNumberIndexDB
| run()
| trim()
| clear(null) <- entered, but not completed
v
ChangeNumberIndexDB
setPurgeDelay(0);
addRecord(1)
addRecord(2)
addRecord(3)
| |
| +--> executes the clear()
v
getFirstRecord() <- BOOM NullPointerException!



Ensured the CNIndexDB is not trimmed until we explicitly test it:
to do this, ensured the thread is only started when needed by the test.
Also took the occasion to ensure a faster shutdown for the CNIndexDB trimming thread.



JEChangeNumberIndexDB.java:
Ensured we use volatile and AtomicBoolean.
Renamed thread field to trimmingThread.
Extracted method startTrimmingThread().
In trim(), added an AtomicBoolean parameter.
Added methods clear(DN, AtomicBoolean shutdown) and mustShutdown() to ensure faster shutdown.



JEChangelogDB.java:
Called JEChangeNumberIndexDB.startTrimmingThread() after creating the JEChangeNumberIndexDB instance.

JEChangeNumberIndexDBTest.java:
Extracted constants.
In testTrim(), called JEChangeNumberIndexDB.startTrimmingThread().
In testClear(), removed
3 files modified
79 ■■■■■ changed files
opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java 55 ●●●●● diff | view | raw | blame | history
opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java 1 ●●●● diff | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDBTest.java 23 ●●●●● diff | view | raw | blame | history