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

Jean-Noel Rouvignac
10.50.2013 52df1e0c040cb7f4af2f849e617ce94b61a22fa8
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
commit52df1e0c040cb7f4af2f849e617ce94b61a22fa8
tree 48277907a62a424a074093b4aa52031d25b11300 tree | zip | gz
parent e3854b002c7b9c12e4c2c1d7a6fe86277f031b43 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
opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDB.java 55 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java 1 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/server/changelog/je/JEChangeNumberIndexDBTest.java 23 ●●●●● diff | view | raw | blame | history