[NO ISSUE][STO] Fix concurrency issue in merge operations

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Synchronize on opTracker when entering components for merge
  operations.

Change-Id: Ic612afe7bd250dea1a75d6121af437a201636381
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2643
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Till Westmann <tillw@apache.org>
Contrib: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
index 2a3e983..53e6a57 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
@@ -566,7 +566,9 @@
         if (LOGGER.isInfoEnabled()) {
             LOGGER.info("Started a merge operation for index: {}", lsmIndex);
         }
-        enterComponents(operation.getAccessor().getOpContext(), LSMOperationType.MERGE);
+        synchronized (opTracker) {
+            enterComponents(operation.getAccessor().getOpContext(), LSMOperationType.MERGE);
+        }
         try {
             doIo(operation);
         } finally {
@@ -577,7 +579,7 @@
                     operation.getAccessor().getOpContext().getModificationCallback());
         }
         if (LOGGER.isInfoEnabled()) {
-            LOGGER.info("Finished the merge operation for index: {}. Result: ", lsmIndex, operation.getStatus());
+            LOGGER.info("Finished the merge operation for index: {}. Result: {}", lsmIndex, operation.getStatus());
         }
     }