public IdRangeIterator( IdRange idRange ) { this.defrag = idRange.getDefragIds(); this.start = idRange.getRangeStart(); this.length = idRange.getRangeLength(); }
@Override public long nextId() { long id; if ( batch == null || (id = batch.nextId()) == -1 ) { IdRange idRange = source.nextIdBatch( batchSize ); while ( IdValidator.hasReservedIdInRange( idRange.getRangeStart(), idRange.getRangeStart() + idRange.getRangeLength() ) ) { idRange = source.nextIdBatch( batchSize ); } batch = new IdRangeIterator( idRange ); id = batch.nextId(); } return id; }
private void assertNoReservedId( IdRange range ) { for ( long id : range.getDefragIds() ) { assertFalse( IdValidator.isReservedId( id ) ); } assertFalse( IdValidator.hasReservedIdInRange( range.getRangeStart(), range.getRangeStart() + range.getRangeLength() ) ); } }
IdRangeIterator( IdRange idRange ) { this.defrag = idRange.getDefragIds(); this.start = idRange.getRangeStart(); this.length = idRange.getRangeLength(); }
public IdRangeIterator( IdRange idRange ) { this.defrag = idRange.getDefragIds(); this.start = idRange.getRangeStart(); this.length = idRange.getRangeLength(); }
private IdRange respectingHighId( IdRange idRange ) { int adjustment = 0; long originalRangeStart = idRange.getRangeStart(); if ( highId > originalRangeStart ) { adjustment = (int) (highId - originalRangeStart); } long rangeStart = max( this.highId, originalRangeStart ); int rangeLength = idRange.getRangeLength() - adjustment; if ( rangeLength <= 0 ) { throw new IllegalStateException( "IdAllocation state is probably corrupted or out of sync with the cluster. " + "Local highId is " + highId + " and allocation range is " + idRange ); } return new IdRange( idRange.getDefragIds(), rangeStart, rangeLength ); } }
private IdRange respectingHighId( IdRange idRange ) { int adjustment = 0; long originalRangeStart = idRange.getRangeStart(); if ( highId > originalRangeStart ) { adjustment = (int) (highId - originalRangeStart); } long rangeStart = max( this.highId, originalRangeStart ); int rangeLength = idRange.getRangeLength() - adjustment; if ( rangeLength <= 0 ) { throw new IllegalStateException( "IdAllocation state is probably corrupted or out of sync with the cluster. " + "Local highId is " + highId + " and allocation range is " + idRange ); } return new IdRange( idRange.getDefragIds(), rangeStart, rangeLength ); }
@Override public long nextId() { long id; if ( batch == null || (id = batch.nextId()) == -1 ) { IdRange idRange = source.nextIdBatch( batchSize ); while ( IdValidator.hasReservedIdInRange( idRange.getRangeStart(), idRange.getRangeStart() + idRange.getRangeLength() ) ) { idRange = source.nextIdBatch( batchSize ); } batch = new IdRangeIterator( idRange ); id = batch.nextId(); } return id; }