HBASE-15204 Try to estimate the cell count for adding into WALEdit (Ram)
This commit is contained in:
parent
bc1d836738
commit
cd2b4dfa12
|
@ -3012,12 +3012,12 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
|
|||
Set<byte[]> deletesCfSet = null;
|
||||
|
||||
long currentNonceGroup = HConstants.NO_NONCE, currentNonce = HConstants.NO_NONCE;
|
||||
WALEdit walEdit = new WALEdit(isInReplay);
|
||||
WALEdit walEdit = null;
|
||||
MultiVersionConcurrencyControl.WriteEntry writeEntry = null;
|
||||
long txid = 0;
|
||||
boolean doRollBackMemstore = false;
|
||||
boolean locked = false;
|
||||
|
||||
int cellCount = 0;
|
||||
/** Keep track of the locks we hold so we can release them in finally clause */
|
||||
List<RowLock> acquiredRowLocks = Lists.newArrayListWithCapacity(batchOp.operations.length);
|
||||
// reference family maps directly so coprocessors can mutate them if desired
|
||||
|
@ -3102,7 +3102,11 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
|
|||
|
||||
lastIndexExclusive++;
|
||||
numReadyToWrite++;
|
||||
|
||||
if (isInReplay) {
|
||||
for (List<Cell> cells : mutation.getFamilyCellMap().values()) {
|
||||
cellCount += cells.size();
|
||||
}
|
||||
}
|
||||
if (isPutMutation) {
|
||||
// If Column Families stay consistent through out all of the
|
||||
// individual puts then metrics can be reported as a mutliput across
|
||||
|
@ -3150,8 +3154,15 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
|
|||
noOfDeletes++;
|
||||
}
|
||||
rewriteCellTags(familyMaps[i], mutation);
|
||||
WALEdit fromCP = batchOp.walEditsFromCoprocessors[i];
|
||||
if (fromCP != null) {
|
||||
cellCount += fromCP.size();
|
||||
}
|
||||
for (List<Cell> cells : familyMaps[i].values()) {
|
||||
cellCount += cells.size();
|
||||
}
|
||||
}
|
||||
|
||||
walEdit = new WALEdit(cellCount, isInReplay);
|
||||
lock(this.updatesLock.readLock(), numReadyToWrite);
|
||||
locked = true;
|
||||
|
||||
|
@ -3200,7 +3211,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
|
|||
currentNonceGroup, currentNonce, mvcc);
|
||||
txid = this.wal.append(this.htableDescriptor, this.getRegionInfo(), walKey,
|
||||
walEdit, true);
|
||||
walEdit = new WALEdit(isInReplay);
|
||||
walEdit = new WALEdit(cellCount, isInReplay);
|
||||
walKey = null;
|
||||
}
|
||||
currentNonceGroup = nonceGroup;
|
||||
|
|
|
@ -99,7 +99,7 @@ public class WALEdit implements Writable, HeapSize {
|
|||
private final int VERSION_2 = -1;
|
||||
private final boolean isReplay;
|
||||
|
||||
private ArrayList<Cell> cells = new ArrayList<Cell>(1);
|
||||
private ArrayList<Cell> cells = null;
|
||||
|
||||
public static final WALEdit EMPTY_WALEDIT = new WALEdit();
|
||||
|
||||
|
@ -117,7 +117,16 @@ public class WALEdit implements Writable, HeapSize {
|
|||
}
|
||||
|
||||
public WALEdit(boolean isReplay) {
|
||||
this(1, isReplay);
|
||||
}
|
||||
|
||||
public WALEdit(int cellCount) {
|
||||
this(cellCount, false);
|
||||
}
|
||||
|
||||
public WALEdit(int cellCount, boolean isReplay) {
|
||||
this.isReplay = isReplay;
|
||||
cells = new ArrayList<Cell>(cellCount);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue