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

boli
21.08.2008 d84ee43ec8ab4e6ecdad2f0ef0d64dac54f7d6af
refs
author boli <boli@localhost>
Monday, April 21, 2008 23:08 +0200
committer boli <boli@localhost>
Monday, April 21, 2008 23:08 +0200
commitd84ee43ec8ab4e6ecdad2f0ef0d64dac54f7d6af
tree 18212096c012b0118429ca11647bd548c9a89a5f tree | zip | gz
parent 700b0081283b9aefe642934ba013ad32706b6a29 view | diff
This patch adds index buffering capabilities to the JE backend as to avoid using a fixed lock timeout for subtree delete and mod DN operations. Previously, any index modifications to subordinate entries of the affected operations will be performed with dn2id and id2entry modifications. This creates multiple random access to index database keys which could cause deadlocks in face of multiple parallel operations. With this fix, all index modifications are buffered up until the end of the operation so that each key of each index will be accessed once and in order. This maintains the DB access ordering in the JE backend of dn2id, id2entry, dn2uri, indexes in config order, VLV indexes in config order, and finally id2children and id2subtree. Since deadlocks should no longer occur in the JE backend, JE lock timeouts are now disabled at the JE environment level instead of the txn level. With this change, the performance of subtree deletes and mod DN operations have increased dramatically.

In order to add buffering capabilities to the VLV index, the format of the index records had to be changed. Previous DBs with VLVs configured will no longer be compatible with this new revision.

Cursors operations for subtree mod DN and delete operations are now taken with READ_COMMITTED JE isolation level to avoid locking un-affected entries and possibility causing deadlocks. Write operations affecting the DN2ID and ID2ENTRY databases will aquire an write lock directly as early as possible to avoid deadlocks.

A issue is also fixed where the debug log genereated during unit tests does not include stack traces.

Fix for issues 2980, 2186, 2979
1 files deleted
22 files modified
3153 ■■■■■ changed files
opendj-sdk/opends/build.xml 14 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java 184 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java 17 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/BufferedIndex.java 201 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/DN2ID.java 3 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java 1296 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryIDSet.java 44 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryIDSetSorter.java 4 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/ID2Entry.java 3 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java 433 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/IndexRebuildThread.java 8 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/SortValuesSet.java 359 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/VLVIndex.java 489 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/VLVKeyComparator.java 4 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/VerifyJob.java 25 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/DNContext.java 3 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java 7 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/jeb/importLDIF/WorkThread.java 9 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/core/PluginConfigManager.java 2 ●●● diff | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/tools/DBTest.java 3 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/resource/config-changes.ldif 10 ●●●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java 24 ●●●● diff | view | raw | blame | history
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestVerifyJob.java 11 ●●●● diff | view | raw | blame | history