@Override public void onFailure(LowLevelPutException e, SendableRequestItem keyNum, ClientContext context) { InsertException e1 = InsertException.constructFrom(e); if(keyNum == null) { storage.fail(e1); } else { BlockInsert block = (BlockInsert) keyNum; block.segment.onFailure(block.blockNumber, e1); } }
assertEquals(storage.getStatus(), Status.ENCODED); segment.setKey(0, segment.encodeBlock(0).getClientKey()); segment.onFailure(0, new InsertException(InsertExceptionMode.ROUTE_NOT_FOUND)); assertEquals(storage.getStatus(), Status.ENCODED); segment.onFailure(0, new InsertException(InsertExceptionMode.ROUTE_NOT_FOUND)); assertEquals(storage.getStatus(), Status.ENCODED); segment.onFailure(0, new InsertException(InsertExceptionMode.REJECTED_OVERLOAD));
public void testCancel() throws IOException, InsertException, MissingKeyException { Random r = new Random(12124); long size = 32768*6; BarrierRandomAccessBuffer data = new BarrierRandomAccessBuffer(generateData(r, size)); HashResult[] hashes = getHashes(data); data.pause(); MyCallback cb = new MyCallback(); InsertContext context = baseContext.clone(); context.earlyEncode = true; KeysFetchingLocally keys = new MyKeysFetchingLocally(); SplitFileInserterStorage storage = new SplitFileInserterStorage(data, size, cb, null, new ClientMetadata(), false, null, smallRAFFactory, false, context, cryptoAlgorithm, cryptoKey, null, hashes, smallBucketFactory, checker, r, memoryLimitedJobRunner, jobRunner, ticker, keys, false, 0, 0, 0, 0); storage.start(); assertEquals(storage.getStatus(), Status.STARTED); assertEquals(storage.segments.length, 1); SplitFileInserterSegmentStorage segment = storage.segments[0]; segment.onFailure(0, new InsertException(InsertExceptionMode.INTERNAL_ERROR)); data.proceed(); // Now it will complete encoding, and then report in, and then fail. try { cb.waitForFinishedEncode(); assertFalse(true); // Should have failed. } catch (InsertException e) { assertFalse(segment.isEncoding()); assertEquals(storage.getStatus(), Status.FAILED); } }
chosenBlocks[chosen.blockNumber] = true; segment.setKey(chosen.blockNumber, segment.encodeBlock(chosen.blockNumber).getClientKey()); segment.onFailure(chosen.blockNumber, new InsertException(InsertExceptionMode.ROUTE_NOT_FOUND)); assertFalse(chosenBlocks[chosen.blockNumber]); chosenBlocks[chosen.blockNumber] = true; segment.onFailure(chosen.blockNumber, new InsertException(InsertExceptionMode.ROUTE_NOT_FOUND));
assertEquals(storage.getStatus(), Status.ENCODED); for(int i=0;i<3;i++) { segment.onFailure(0, new InsertException(InsertExceptionMode.ROUTE_NOT_FOUND));
assertEquals(storage.getStatus(), Status.ENCODED); assertTrue(InsertException.isFatal(InsertExceptionMode.INTERNAL_ERROR)); segment.onFailure(0, new InsertException(InsertExceptionMode.INTERNAL_ERROR)); try { cb.waitForSucceededInsert();
assertFalse(chosenBlocks[chosen.blockNumber]); chosenBlocks[chosen.blockNumber] = true; segment.onFailure(chosen.blockNumber, new InsertException(InsertExceptionMode.ROUTE_NOT_FOUND));
assertFalse(chosenBlocks[chosen.blockNumber]); chosenBlocks[chosen.blockNumber] = true; segment.onFailure(chosen.blockNumber, new InsertException(InsertExceptionMode.ROUTE_NOT_FOUND));
assertEquals(segment.crossCheckBlockCount, 0); assertTrue(resumed.getStatus() == Status.ENCODED); segment.onFailure(0, new InsertException(InsertExceptionMode.ROUTE_NOT_FOUND));
for(int i=0;i<segment.totalBlockCount;i++) { segment.onFailure(i, new InsertException(InsertExceptionMode.REJECTED_OVERLOAD)); assertFalse(storage.noBlocksToSend());
assertTrue(storage.noBlocksToSend()); for(int i=0;i<segment.totalBlockCount;i++) { segment.onFailure(i, new InsertException(InsertExceptionMode.ROUTE_NOT_FOUND)); assertFalse(storage.noBlocksToSend());
assertFalse(chosenBlocks[chosen.blockNumber]); chosenBlocks[chosen.blockNumber] = true; segment.onFailure(chosen.blockNumber, new InsertException(InsertExceptionMode.ROUTE_NOT_FOUND));
segment.onFailure(0, new InsertException(InsertExceptionMode.INTERNAL_ERROR));