diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java
index 1a23ca8..829c9cc 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java
@@ -251,7 +251,7 @@
             final Map<String, ILSMComponentId> componentIdMap = new HashMap<>();
             boolean atomic = false;
             for (IIndex index : indexes) {
-                if (((ILSMIndex) index).isAtomic()) {
+                if (index != null && ((ILSMIndex) index).isAtomic()) {
                     PrimaryIndexOperationTracker opTracker =
                             ((PrimaryIndexOperationTracker) ((ILSMIndex) index).getOperationTracker());
                     opTracker.finishAllFlush();
@@ -279,7 +279,7 @@
     private void abortAtomicInsertDelete() throws HyracksDataException {
         if (isPrimary) {
             for (IIndex index : indexes) {
-                if (((ILSMIndex) index).isAtomic()) {
+                if (index != null && ((ILSMIndex) index).isAtomic()) {
                     PrimaryIndexOperationTracker opTracker =
                             ((PrimaryIndexOperationTracker) ((ILSMIndex) index).getOperationTracker());
                     opTracker.abort();
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryInsertOperatorNodePushable.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryInsertOperatorNodePushable.java
index 2c89b61..7891312 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryInsertOperatorNodePushable.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryInsertOperatorNodePushable.java
@@ -354,7 +354,7 @@
         final Map<String, ILSMComponentId> componentIdMap = new HashMap<>();
         boolean atomic = false;
         for (IIndex index : indexes) {
-            if (((ILSMIndex) index).isAtomic()) {
+            if (index != null && ((ILSMIndex) index).isAtomic()) {
                 PrimaryIndexOperationTracker opTracker =
                         ((PrimaryIndexOperationTracker) ((ILSMIndex) index).getOperationTracker());
                 opTracker.finishAllFlush();
@@ -380,7 +380,7 @@
 
     private void abortAtomicInsert() throws HyracksDataException {
         for (IIndex index : indexes) {
-            if (((ILSMIndex) index).isAtomic()) {
+            if (index != null && ((ILSMIndex) index).isAtomic()) {
                 PrimaryIndexOperationTracker opTracker =
                         ((PrimaryIndexOperationTracker) ((ILSMIndex) index).getOperationTracker());
                 opTracker.abort();
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
index 113a40a..71f699d 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java
@@ -576,7 +576,7 @@
         final Map<String, ILSMComponentId> componentIdMap = new HashMap<>();
         boolean atomic = false;
         for (IIndex index : indexes) {
-            if (((ILSMIndex) index).isAtomic()) {
+            if (index != null && ((ILSMIndex) index).isAtomic()) {
                 PrimaryIndexOperationTracker opTracker =
                         ((PrimaryIndexOperationTracker) ((ILSMIndex) index).getOperationTracker());
                 opTracker.finishAllFlush();
@@ -602,7 +602,7 @@
 
     private void abortAtomicUpsert() throws HyracksDataException {
         for (IIndex index : indexes) {
-            if (((ILSMIndex) index).isAtomic()) {
+            if (index != null && ((ILSMIndex) index).isAtomic()) {
                 PrimaryIndexOperationTracker opTracker =
                         ((PrimaryIndexOperationTracker) ((ILSMIndex) index).getOperationTracker());
                 opTracker.abort();
