diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionalMap.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionalMap.java
index 469cf11..c96b20a 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionalMap.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/DefaultTransactionalMap.java
@@ -56,7 +56,7 @@
     private final TransactionContext txContext;
     private static final String TX_CLOSED_ERROR = "Transaction is closed";
     private final AsyncConsistentMap<K, V> backingMap;
-    private final ConsistentMap<K, V> backingConsitentMap;
+    private final ConsistentMap<K, V> backingConsistentMap;
     private final String name;
     private final Serializer serializer;
     private final Map<K, Versioned<V>> readCache = Maps.newConcurrentMap();
@@ -87,7 +87,7 @@
             Serializer serializer) {
         this.name = name;
         this.backingMap = backingMap;
-        this.backingConsitentMap = backingMap.asConsistentMap();
+        this.backingConsistentMap = backingMap.asConsistentMap();
         this.txContext = txContext;
         this.serializer = serializer;
     }
@@ -103,7 +103,7 @@
         if (latest != null) {
             return latest;
         } else {
-            Versioned<V> v = readCache.computeIfAbsent(key, k -> backingConsitentMap.get(k));
+            Versioned<V> v = readCache.computeIfAbsent(key, k -> backingConsistentMap.get(k));
             return v != null ? v.value() : null;
         }
     }
@@ -286,4 +286,4 @@
         writeCache.clear();
         deleteSet.clear();
     }
-}
\ No newline at end of file
+}
