private void allocateCrossCheckBlock(SplitFileInserterCrossSegmentStorage segment, Random xsRandom) { int x = 0; for (int i = 0; i < 10; i++) { x = xsRandom.nextInt(segments.length); SplitFileInserterSegmentStorage seg = segments[x]; int blockNum = seg.allocateCrossCheckBlock(segment, xsRandom, segment.getAllocatedCrossCheckBlocks()); if (blockNum >= 0) { segment.addCheckBlock(seg, blockNum); return; } } for (int i = 0; i < segments.length; i++) { x++; if (x == segments.length) x = 0; SplitFileInserterSegmentStorage seg = segments[x]; int blockNum = seg.allocateCrossCheckBlock(segment, xsRandom, segment.getAllocatedCrossCheckBlocks()); if (blockNum >= 0) { segment.addCheckBlock(seg, blockNum); return; } } throw new IllegalStateException("Unable to allocate cross data block!"); }