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

Matthew Swift
23.55.2014 7015f01703dc616085a44db89a5bc4f23c8c49fb
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
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexBuffer.java 7 ●●●● patch | view | raw | blame | history
opendj-sdk/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 =