public FireHydrant(Segment adapter, int count) { this.index = null; this.adapter = new AtomicReference<>(new ReferenceCountingSegment(adapter)); this.count = count; }
public FireHydrant(IncrementalIndex index, int count, SegmentId segmentId) { this.index = index; this.adapter = new AtomicReference<>(new ReferenceCountingSegment(new IncrementalIndexSegment(index, segmentId))); this.count = count; }
@Before public void setUp() segment = new ReferenceCountingSegment( new AbstractSegment()
public void swapSegment(@Nullable Segment newSegment) { while (true) { ReferenceCountingSegment currentSegment = adapter.get(); if (currentSegment == null && newSegment == null) { return; } if (currentSegment != null && newSegment != null && !newSegment.getId().equals(currentSegment.getId())) { // Sanity check: identifier should not change throw new ISE( "WTF?! Cannot swap identifier[%s] -> [%s]!", currentSegment.getId(), newSegment.getId() ); } if (currentSegment == newSegment) { throw new ISE("Cannot swap to the same segment"); } ReferenceCountingSegment newReferenceCountingSegment = newSegment != null ? new ReferenceCountingSegment(newSegment) : null; if (adapter.compareAndSet(currentSegment, newReferenceCountingSegment)) { if (currentSegment != null) { currentSegment.close(); } index = null; return; } } }
segment.getInterval(), segment.getVersion(), segment.getShardSpec().createChunk(new ReferenceCountingSegment(segmentLoader.getSegment(segment))) );
segment.getInterval(), segment.getVersion(), segment.getShardSpec().createChunk(new ReferenceCountingSegment(adapter)) ); dataSourceState.addSegment(segment);
public FireHydrant(Segment adapter, int count) { this.index = null; this.adapter = new AtomicReference<>(new ReferenceCountingSegment(adapter)); this.count = count; }
public FireHydrant(IncrementalIndex index, int count, String segmentIdentifier) { this.index = index; this.adapter = new AtomicReference<>( new ReferenceCountingSegment(new IncrementalIndexSegment(index, segmentIdentifier)) ); this.count = count; }
public void swapSegment(@Nullable Segment newSegment) { while (true) { ReferenceCountingSegment currentSegment = adapter.get(); if (currentSegment == null && newSegment == null) { return; } if (currentSegment != null && newSegment != null && !newSegment.getIdentifier().equals(currentSegment.getIdentifier())) { // Sanity check: identifier should not change throw new ISE( "WTF?! Cannot swap identifier[%s] -> [%s]!", currentSegment.getIdentifier(), newSegment.getIdentifier() ); } if (currentSegment == newSegment) { throw new ISE("Cannot swap to the same segment"); } ReferenceCountingSegment newReferenceCountingSegment = newSegment != null ? new ReferenceCountingSegment(newSegment) : null; if (adapter.compareAndSet(currentSegment, newReferenceCountingSegment)) { if (currentSegment != null) { currentSegment.close(); } index = null; return; } } }
segment.getInterval(), segment.getVersion(), segment.getShardSpec().createChunk(new ReferenceCountingSegment(adapter)) ); dataSourceState.addSegment(segment);