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; } } }
oldQueryable.close(); } else { log.info(
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; } } }
oldQueryable.close(); } else { log.info(