From c26d4d70df1e4ddf24df912c6107f140499e78b2 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Tue, 23 Sep 2014 08:55:04 +0000
Subject: [PATCH] OPENDJ-1375 CR-4618: prevent deadlocks when updating id2subtree using IndexBuffers
---
opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexBuffer.java | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexBuffer.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexBuffer.java
index f26a909..f88f04a 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexBuffer.java
+++ b/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 =
--
Gitblit v1.10.0