HBASE-15204 Try to estimate the cell count for adding into WALEdit (Ram)
This commit is contained in:
parent
1942a99b83
commit
fec9733893
|
@ -2951,7 +2951,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
|
||||||
Set<byte[]> deletesCfSet = null;
|
Set<byte[]> deletesCfSet = null;
|
||||||
long currentNonceGroup = HConstants.NO_NONCE;
|
long currentNonceGroup = HConstants.NO_NONCE;
|
||||||
long currentNonce = HConstants.NO_NONCE;
|
long currentNonce = HConstants.NO_NONCE;
|
||||||
WALEdit walEdit = new WALEdit(replay);
|
WALEdit walEdit = null;
|
||||||
boolean locked = false;
|
boolean locked = false;
|
||||||
// reference family maps directly so coprocessors can mutate them if desired
|
// reference family maps directly so coprocessors can mutate them if desired
|
||||||
Map<byte[], List<Cell>>[] familyMaps = new Map[batchOp.operations.length];
|
Map<byte[], List<Cell>>[] familyMaps = new Map[batchOp.operations.length];
|
||||||
|
@ -2962,6 +2962,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
|
||||||
int noOfPuts = 0;
|
int noOfPuts = 0;
|
||||||
int noOfDeletes = 0;
|
int noOfDeletes = 0;
|
||||||
WriteEntry writeEntry = null;
|
WriteEntry writeEntry = null;
|
||||||
|
int cellCount = 0;
|
||||||
/** Keep track of the locks we hold so we can release them in finally clause */
|
/** Keep track of the locks we hold so we can release them in finally clause */
|
||||||
List<RowLock> acquiredRowLocks = Lists.newArrayListWithCapacity(batchOp.operations.length);
|
List<RowLock> acquiredRowLocks = Lists.newArrayListWithCapacity(batchOp.operations.length);
|
||||||
try {
|
try {
|
||||||
|
@ -2990,7 +2991,11 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
|
||||||
|
|
||||||
lastIndexExclusive++;
|
lastIndexExclusive++;
|
||||||
numReadyToWrite++;
|
numReadyToWrite++;
|
||||||
|
if (replay) {
|
||||||
|
for (List<Cell> cells : mutation.getFamilyCellMap().values()) {
|
||||||
|
cellCount += cells.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
if (mutation instanceof Put) {
|
if (mutation instanceof Put) {
|
||||||
// If Column Families stay consistent through out all of the
|
// If Column Families stay consistent through out all of the
|
||||||
// individual puts then metrics can be reported as a multiput across
|
// individual puts then metrics can be reported as a multiput across
|
||||||
|
@ -3041,8 +3046,15 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
|
||||||
noOfDeletes++;
|
noOfDeletes++;
|
||||||
}
|
}
|
||||||
rewriteCellTags(familyMaps[i], mutation);
|
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, replay);
|
||||||
lock(this.updatesLock.readLock(), numReadyToWrite);
|
lock(this.updatesLock.readLock(), numReadyToWrite);
|
||||||
locked = true;
|
locked = true;
|
||||||
|
|
||||||
|
@ -3082,7 +3094,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
|
||||||
if (nonceGroup != currentNonceGroup || nonce != currentNonce) {
|
if (nonceGroup != currentNonceGroup || nonce != currentNonce) {
|
||||||
// Write what we have so far for nonces out to WAL
|
// Write what we have so far for nonces out to WAL
|
||||||
appendCurrentNonces(m, replay, walEdit, now, currentNonceGroup, currentNonce);
|
appendCurrentNonces(m, replay, walEdit, now, currentNonceGroup, currentNonce);
|
||||||
walEdit = new WALEdit(replay);
|
walEdit = new WALEdit(cellCount, replay);
|
||||||
currentNonceGroup = nonceGroup;
|
currentNonceGroup = nonceGroup;
|
||||||
currentNonce = nonce;
|
currentNonce = nonce;
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,7 +99,7 @@ public class WALEdit implements Writable, HeapSize {
|
||||||
private final int VERSION_2 = -1;
|
private final int VERSION_2 = -1;
|
||||||
private final boolean isReplay;
|
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();
|
public static final WALEdit EMPTY_WALEDIT = new WALEdit();
|
||||||
|
|
||||||
|
@ -117,7 +117,16 @@ public class WALEdit implements Writable, HeapSize {
|
||||||
}
|
}
|
||||||
|
|
||||||
public WALEdit(boolean isReplay) {
|
public WALEdit(boolean isReplay) {
|
||||||
|
this(1, isReplay);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WALEdit(int cellCount) {
|
||||||
|
this(cellCount, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public WALEdit(int cellCount, boolean isReplay) {
|
||||||
this.isReplay = isReplay;
|
this.isReplay = isReplay;
|
||||||
|
cells = new ArrayList<Cell>(cellCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue