From 3fb5dfdd53827ebacd1601e88ace25a4a26a7e7a Mon Sep 17 00:00:00 2001
From: Yannick Lecaillez <yannick.lecaillez@forgerock.com>
Date: Fri, 10 Jul 2015 09:14:19 +0000
Subject: [PATCH] OPENDJ-2217: Contended keys generate too many rollbacks
---
opendj-server-legacy/src/main/java/org/opends/server/backends/pdb/PDBStorage.java | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pdb/PDBStorage.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pdb/PDBStorage.java
index 8df442f..296b50d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pdb/PDBStorage.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pdb/PDBStorage.java
@@ -105,6 +105,8 @@
public final class PDBStorage implements Storage, Backupable, ConfigurationChangeListener<PDBBackendCfg>,
DiskSpaceMonitorHandler
{
+ private static final double MAX_SLEEP_ON_RETRY_MS = 50.0;
+
private static final String VOLUME_NAME = "dj";
private static final String JOURNAL_NAME = VOLUME_NAME + "_journal";
@@ -888,7 +890,8 @@
}
catch (final RollbackException e)
{
- // retry
+ // retry after random sleep (reduces transactions collision. Drawback: increased latency)
+ Thread.sleep((long) (Math.random() * MAX_SLEEP_ON_RETRY_MS));
}
catch (final Exception e)
{
--
Gitblit v1.10.0