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

Matthew Swift
23.55.2014 c26d4d70df1e4ddf24df912c6107f140499e78b2
OPENDJ-1375 CR-4618: prevent deadlocks when updating id2subtree using IndexBuffers

Lock entry ID keys in descending order (children then parents) in order to be
consistent with id2subtree updates performed for single entry add and delete
operations.
1 files modified
7 ■■■■ changed files
opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexBuffer.java 7 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexBuffer.java
@@ -214,8 +214,13 @@
    if(bufferedValues != null)
    {
      /*
       * OPENDJ-1375: add keys in reverse order to be consistent with single
       * entry processing in add/delete processing. This is necessary in order
       * to avoid deadlocks.
       */
      Iterator<Map.Entry<ByteString, BufferedIndexValues>> keyIterator =
          bufferedValues.entrySet().iterator();
          bufferedValues.descendingMap().entrySet().iterator();
      while(keyIterator.hasNext())
      {
        Map.Entry<ByteString, BufferedIndexValues> bufferedKey =