protected void resetActive() { // Record the MutableSegment' heap overhead when initialing MemStoreSizing memstoreAccounting = new NonThreadSafeMemStoreSizing(); // Reset heap to not include any keys active = SegmentFactory.instance().createMutableSegment(conf, comparator, memstoreAccounting); // regionServices can be null when testing if (regionServices != null) { regionServices.addMemStoreSize(memstoreAccounting.getDataSize(), memstoreAccounting.getHeapSize(), memstoreAccounting.getOffHeapSize(), memstoreAccounting.getCellsCount()); } timeOfOldestEdit = Long.MAX_VALUE; }
public MemStoreSize getPipelineSize() { MemStoreSizing memStoreSizing = new NonThreadSafeMemStoreSizing(); LinkedList<? extends Segment> localCopy = readOnlyCopy; for (Segment segment : localCopy) { memStoreSizing.incMemStoreSize(segment.getMemStoreSize()); } return memStoreSizing.getMemStoreSize(); }
@Override public boolean compareAndSetDataSize(long expected, long updated) { return memStoreSizing.compareAndSetDataSize(expected, updated); }
this.memstore.add(kv, sizeChangeForSecondCell); assertEquals(Segment.getCellLength(kv), sizeChangeForFirstCell.getMemStoreSize().getDataSize()); Segment segment = this.memstore.getActive(); MemStoreLAB msLab = segment.getMemStoreLAB(); if (msLab.isOnHeap()) { assertTrue("HeapSize should always bigger or equal than data size", sizeChangeForFirstCell.getHeapSize() >= sizeChangeForFirstCell .getDataSize()); assertTrue("HeapSize should always bigger or equal than data size", sizeChangeForSecondCell.getHeapSize() >= sizeChangeForSecondCell .getDataSize()); } else { assertTrue("OffHeapSize should always bigger or equal than data size", sizeChangeForFirstCell.getOffHeapSize() >= sizeChangeForFirstCell .getDataSize()); assertTrue("OffHeapSize should always bigger or equal than data size", sizeChangeForSecondCell.getOffHeapSize() >= sizeChangeForSecondCell .getDataSize()); sizeChangeForSecondCell.getMemStoreSize().getDataSize()); assertEquals(0, sizeChangeForSecondCell.getMemStoreSize().getDataSize()); assertEquals(0, sizeChangeForSecondCell.getMemStoreSize().getHeapSize());
@Override public MemStoreSize getMemStoreSize() { return this.memStoreSizing.getMemStoreSize(); }
/** * @return The new dataSize ONLY as a convenience */ default long decMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta, int cellsCountDelta) { return incMemStoreSize(-dataSizeDelta, -heapSizeDelta, -offHeapSizeDelta, -cellsCountDelta); }
int flushCount = 0; long tmp = 0; long remainingSize = this.memStoreSizing.getDataSize(); while (remainingSize > 0) { try { tmp = this.memStoreSizing.getDataSize(); if (tmp >= remainingSize) { failedfFlushCount++; + getRegionInfo().getRegionNameAsString() + " " + store + ". flushableSize expected=0, actual={" + mss + "}. Current memStoreSize=" + this.memStoreSizing.getMemStoreSize() + ". Maybe a coprocessor " + "operation failed and left the memstore in a partially updated state.", null); decrMemStoreSize(this.memStoreSizing.getMemStoreSize()); } else if (this.memStoreSizing.getDataSize() != 0) { LOG.error("Memstore data size is {}", this.memStoreSizing.getDataSize());
if (this.memStoreSizing.getDataSize() <= 0) { if (this.memStoreSizing.getDataSize() <= 0) { totalSizeOfFlushableStores.incMemStoreSize(snapshotSize); storeFlushableSize.put(name, snapshotSize); });
@Override public long getDataSize() { return this.memStoreSizing.getDataSize(); }
prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize); MemStoreSize mss = prepareResult.totalFlushableSize.getMemStoreSize(); this.decrMemStoreSize(mss); MemStoreSize mss = prepareResult.totalFlushableSize.getMemStoreSize(); long memstoresize = this.memStoreSizing.getMemStoreSize().getDataSize(); String msg = "Finished flush of" + " dataSize ~" + StringUtils.byteDesc(mss.getDataSize()) + "/" + mss.getDataSize()
@Override public long getMemStoreHeapSize() { return memStoreSizing.getHeapSize(); }
@Override public long getOffHeapSize() { return this.memStoreSizing.getOffHeapSize(); }
void decrMemStoreSize(long dataSizeDelta, long heapSizeDelta, long offHeapSizeDelta, int cellsCountDelta) { if (this.rsAccounting != null) { rsAccounting.decGlobalMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta); } long dataSize = this.memStoreSizing.decMemStoreSize(dataSizeDelta, heapSizeDelta, offHeapSizeDelta, cellsCountDelta); checkNegativeMemStoreDataSize(dataSize, -dataSizeDelta); }
@Override public int getCellsCount() { return memStoreSizing.getCellsCount(); }
private void requestFlushIfNeeded() throws RegionTooBusyException { if(isFlushSize(this.memStoreSizing.getMemStoreSize())) { requestFlush(); } }
@Override public long incMemStoreSize(long delta, long heapOverhead, long offHeapOverhead, int cellsCount) { return this.memStoreSizing.incMemStoreSize(delta, heapOverhead, offHeapOverhead, cellsCount); }
@Override public long getMemStoreDataSize() { return memStoreSizing.getDataSize(); }
@Override public long getHeapSize() { return this.memStoreSizing.getHeapSize(); }
@Override public long getMemStoreOffHeapSize() { return memStoreSizing.getOffHeapSize(); }
incMemStoreSize(-cellLen, -heapSize, -offHeapSize, -1); if (memStoreSizing != null) { memStoreSizing.decMemStoreSize(cellLen, heapSize, offHeapSize, 1);