@Override public void onSuccess(ByteBuffer response) { try { streamHandle = (StreamHandle) BlockTransferMessage.Decoder.fromByteBuffer(response); logger.trace("Successfully opened blocks {}, preparing to fetch chunks.", streamHandle); // Immediately request all chunks -- we expect that the total size of the request is // reasonable due to higher level chunking in [[ShuffleBlockFetcherIterator]]. for (int i = 0; i < streamHandle.numChunks; i++) { if (tempShuffleFileManager != null) { client.stream(OneForOneStreamManager.genStreamChunkId(streamHandle.streamId, i), new DownloadCallback(i)); } else { client.fetchChunk(streamHandle.streamId, i, chunkCallback); } } } catch (Exception e) { logger.error("Failed while starting block fetches after success", e); failRemainingBlocks(blockIds, e); } }
@Override public void onSuccess(ByteBuffer response) { try { streamHandle = (StreamHandle) BlockTransferMessage.Decoder.fromByteBuffer(response); logger.trace("Successfully opened blocks {}, preparing to fetch chunks.", streamHandle); // Immediately request all chunks -- we expect that the total size of the request is // reasonable due to higher level chunking in [[ShuffleBlockFetcherIterator]]. for (int i = 0; i < streamHandle.numChunks; i++) { if (downloadFileManager != null) { client.stream(OneForOneStreamManager.genStreamChunkId(streamHandle.streamId, i), new DownloadCallback(i)); } else { client.fetchChunk(streamHandle.streamId, i, chunkCallback); } } } catch (Exception e) { logger.error("Failed while starting block fetches after success", e); failRemainingBlocks(blockIds, e); } }
@Override public void onSuccess(ByteBuffer response) { try { streamHandle = (StreamHandle) BlockTransferMessage.Decoder.fromByteBuffer(response); logger.trace("Successfully opened blocks {}, preparing to fetch chunks.", streamHandle); // Immediately request all chunks -- we expect that the total size of the request is // reasonable due to higher level chunking in [[ShuffleBlockFetcherIterator]]. for (int i = 0; i < streamHandle.numChunks; i++) { if (downloadFileManager != null) { client.stream(OneForOneStreamManager.genStreamChunkId(streamHandle.streamId, i), new DownloadCallback(i)); } else { client.fetchChunk(streamHandle.streamId, i, chunkCallback); } } } catch (Exception e) { logger.error("Failed while starting block fetches after success", e); failRemainingBlocks(blockIds, e); } }
private FetchResult fetchChunks(List<Integer> chunkIndices) throws Exception { TransportClient client = clientFactory.createClient(TestUtils.getLocalHost(), server.getPort()); final Semaphore sem = new Semaphore(0); final FetchResult res = new FetchResult(); res.successChunks = Collections.synchronizedSet(new HashSet<Integer>()); res.failedChunks = Collections.synchronizedSet(new HashSet<Integer>()); res.buffers = Collections.synchronizedList(new LinkedList<ManagedBuffer>()); ChunkReceivedCallback callback = new ChunkReceivedCallback() { @Override public void onSuccess(int chunkIndex, ManagedBuffer buffer) { buffer.retain(); res.successChunks.add(chunkIndex); res.buffers.add(buffer); sem.release(); } @Override public void onFailure(int chunkIndex, Throwable e) { res.failedChunks.add(chunkIndex); sem.release(); } }; for (int chunkIndex : chunkIndices) { client.fetchChunk(STREAM_ID, chunkIndex, callback); } if (!sem.tryAcquire(chunkIndices.size(), 5, TimeUnit.SECONDS)) { fail("Timeout getting response from the server"); } client.close(); return res; }
private FetchResult fetchChunks(List<Integer> chunkIndices) throws Exception { TransportClient client = clientFactory.createClient(TestUtils.getLocalHost(), server.getPort()); final Semaphore sem = new Semaphore(0); final FetchResult res = new FetchResult(); res.successChunks = Collections.synchronizedSet(new HashSet<Integer>()); res.failedChunks = Collections.synchronizedSet(new HashSet<Integer>()); res.buffers = Collections.synchronizedList(new LinkedList<ManagedBuffer>()); ChunkReceivedCallback callback = new ChunkReceivedCallback() { @Override public void onSuccess(int chunkIndex, ManagedBuffer buffer) { buffer.retain(); res.successChunks.add(chunkIndex); res.buffers.add(buffer); sem.release(); } @Override public void onFailure(int chunkIndex, Throwable e) { res.failedChunks.add(chunkIndex); sem.release(); } }; for (int chunkIndex : chunkIndices) { client.fetchChunk(STREAM_ID, chunkIndex, callback); } if (!sem.tryAcquire(chunkIndices.size(), 5, TimeUnit.SECONDS)) { fail("Timeout getting response from the server"); } client.close(); return res; }
}).when(callback).onSuccess(anyInt(), any(ManagedBuffer.class)); ctx.client.fetchChunk(0, 0, callback); lock.await(10, TimeUnit.SECONDS);
}).when(callback).onSuccess(anyInt(), any(ManagedBuffer.class)); ctx.client.fetchChunk(0, 0, callback); lock.await(10, TimeUnit.SECONDS);
}).when(client).fetchChunk(anyLong(), anyInt(), any());
}).when(client).fetchChunk(anyLong(), anyInt(), any());
}).when(client).fetchChunk(anyLong(), anyInt(), any());
client.fetchChunk(0, 0, callback0); Uninterruptibles.sleepUninterruptibly(1200, TimeUnit.MILLISECONDS); client.fetchChunk(0, 1, callback1); Uninterruptibles.sleepUninterruptibly(1200, TimeUnit.MILLISECONDS);
client.fetchChunk(0, 0, callback0); Uninterruptibles.sleepUninterruptibly(1200, TimeUnit.MILLISECONDS); client.fetchChunk(0, 1, callback1); Uninterruptibles.sleepUninterruptibly(1200, TimeUnit.MILLISECONDS);
client2.fetchChunk(streamId, 0, callback); chunkReceivedLatch.await(); checkSecurityException(exception.get());
client2.fetchChunk(streamId, 0, callback); chunkReceivedLatch.await(); checkSecurityException(exception.get());
client2.fetchChunk(streamId, 0, callback); chunkReceivedLatch.await(); checkSecurityException(exception.get());