Fix for issue 589.
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMHarness.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMHarness.java
index de691e5..3817e5a 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMHarness.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/LSMHarness.java
@@ -64,8 +64,9 @@
             lsmIndex.getOperationalComponents(ctx);
             List<ILSMComponent> components = ctx.getComponentHolder();
             try {
-                // The purpose of the synchronized block is to make the beforeOperation call and entering the mutable component an atomic operation.
-                synchronized (this) {
+                // The purpose of the synchronized block is to make bumping the counter inside the op. tracker
+                // and entering the mutable component an atomic operation.
+                synchronized (opTracker) {
                     for (ILSMComponent c : components) {
                         if (!c.threadEnter(opType)) {
                             break;