From 7a533d8020f5dcec4cf70b25c1b229d3b820a5ef Mon Sep 17 00:00:00 2001 From: Guanghao Zhang Date: Sat, 29 Dec 2018 17:35:30 +0800 Subject: [PATCH] HBASE-21660 Apply the cell to right memstore for increment/append operation --- .../java/org/apache/hadoop/hbase/regionserver/HRegion.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index ec222c7..2e51c64 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -7980,12 +7980,18 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi for (Map.Entry> entry: mutation.getFamilyCellMap().entrySet()) { final byte[] columnFamilyName = entry.getKey(); List deltas = entry.getValue(); - HStore store = this.stores.get(columnFamilyName); // Reckon for the Store what to apply to WAL and MemStore. List toApply = - reckonDeltasByStore(store, op, mutation, effectiveDurability, now, deltas, results); + reckonDeltasByStore(stores.get(columnFamilyName), op, mutation, effectiveDurability, now, deltas, results); if (!toApply.isEmpty()) { - forMemStore.put(store, toApply); + for (Cell cell : toApply) { + HStore store = getStore(cell); + if (store == null) { + checkFamily(CellUtil.cloneFamily(cell)); + } else { + forMemStore.computeIfAbsent(store, key -> new ArrayList<>()).add(cell); + } + } if (writeToWAL) { if (walEdit == null) { walEdit = new WALEdit(); -- 2.7.4