protected Segment(Segment segment) { this.cellSet.set(segment.getCellSet()); this.comparator = segment.getComparator(); this.updatesLock = segment.getUpdatesLock(); this.minSequenceId = segment.getMinSequenceId(); this.memStoreLAB = segment.getMemStoreLAB(); this.memStoreSizing = segment.memStoreSizing; this.tagsPresent = segment.isTagsPresent(); this.timeRangeTracker = segment.getTimeRangeTracker(); }
protected void updateMetaInfo(Cell cellToAdd, boolean succ, boolean mslabUsed, MemStoreSizing memstoreSizing, boolean sizeAddedPreOperation) { long delta = 0; long cellSize = getCellLength(cellToAdd); int cellsCount = succ ? 1 : 0; // If there's already a same cell in the CellSet and we are using MSLAB, we must count in the // MSLAB allocation size as well, or else there will be memory leak (occupied heap size larger // than the counted number) if (succ || mslabUsed) { delta = cellSize; } if (sizeAddedPreOperation) { delta -= cellSize; } long heapSize = heapSizeChange(cellToAdd, succ || mslabUsed); long offHeapSize = offHeapSizeChange(cellToAdd, succ || mslabUsed); incMemStoreSize(delta, heapSize, offHeapSize, cellsCount); if (memstoreSizing != null) { memstoreSizing.incMemStoreSize(delta, heapSize, offHeapSize, cellsCount); } getTimeRangeTracker().includeTimestamp(cellToAdd); minSequenceId = Math.min(minSequenceId, cellToAdd.getSequenceId()); // In no tags case this NoTagsKeyValue.getTagsLength() is a cheap call. // When we use ACL CP or Visibility CP which deals with Tags during // mutation, the TagRewriteCell.getTagsLength() is a cheaper call. We do not // parse the byte[] to identify the tags length. if (cellToAdd.getTagsLength() > 0) { tagsPresent = true; } }
assertEquals(numberOfCell, memstore.getSegments().stream().mapToInt(Segment::getCellsCount).sum()); assertEquals(minTs, memstore.getSegments().stream().mapToLong( m -> m.getTimeRangeTracker().getMin()).min().getAsLong()); assertEquals(currentTs, memstore.getSegments().stream().mapToLong( m -> m.getTimeRangeTracker().getMax()).max().getAsLong()); assertEquals(numberOfCell, memstore.getSegments().stream().mapToInt(Segment::getCellsCount).sum()); assertEquals(minTs, memstore.getSegments().stream().mapToLong( m -> m.getTimeRangeTracker().getMin()).min().getAsLong()); assertEquals(currentTs, memstore.getSegments().stream().mapToLong( m -> m.getTimeRangeTracker().getMax()).max().getAsLong()); m -> m.getTimeRangeTracker().getMin()).min().getAsLong()); assertEquals(currentTs, memstore.getSegments().stream().mapToLong( m -> m.getTimeRangeTracker().getMax()).max().getAsLong());
assertEquals(numberOfCell, memstore.getSegments().stream().mapToInt(Segment::getCellsCount).sum()); assertEquals(minTs, memstore.getSegments().stream().mapToLong( m -> m.getTimeRangeTracker().getMin()).min().getAsLong()); assertEquals(currentTs, memstore.getSegments().stream().mapToLong( m -> m.getTimeRangeTracker().getMax()).max().getAsLong()); assertEquals(numberOfCell, memstore.getSegments().stream().mapToInt(Segment::getCellsCount).sum()); assertEquals(minTs, memstore.getSegments().stream().mapToLong( m -> m.getTimeRangeTracker().getMin()).min().getAsLong()); assertEquals(currentTs, memstore.getSegments().stream().mapToLong( m -> m.getTimeRangeTracker().getMax()).max().getAsLong()); m -> m.getTimeRangeTracker().getMin()).min().getAsLong()); assertEquals(currentTs, memstore.getSegments().stream().mapToLong( m -> m.getTimeRangeTracker().getMax()).max().getAsLong());