writingChannelManager.finalizeChannel(channelPath);
/** * Initializes the channel managers that will use default executor service. */ @BeforeClass public void initChannelManagers() { writingChannelManager = new WritingChannelManager(); readingChannelManager = new ReadingChannelManager(); }
/** * Logs the storage stats. */ private void logStorageStatistics() { log.info("Status of the Write Channel Manager's executor service: " + writingChannelManager.getExecutorServiceStatus()); log.info("Status of each writable storage and its executor service:"); Map<StorageData, String> writersStatusMap = storageManager.getWritersStatus(); if (!writersStatusMap.isEmpty()) { for (Map.Entry<StorageData, String> entry : writersStatusMap.entrySet()) { log.info("Storage " + entry.getKey() + " - " + entry.getValue()); } } else { log.info("No active writable storage available."); } if (storageManager.getRecordingState() == RecordingState.ON) { StorageData recordingStorageData = storageManager.getRecordingStorage(); if (null != recordingStorageData) { log.info("Recording is active on the storage " + recordingStorageData + "."); } } else { log.info("Recording is not active."); } log.info("Byte buffer provider has " + byteBufferProvider.getBufferPoolSize() + " available buffers in the pool with total capacity of " + byteBufferProvider.getAvailableCapacity() + " bytes. Total created capacity of the pool is " + byteBufferProvider.getCreatedCapacity() + " bytes."); }
long position = writingChannelManager.write(byteBuffer, file, new WriteReadCompletionRunnable() { @Override public void run() { writingChannelManager.finalizeChannel(file);
@Test public void writeTaskExceptionDuringWrite() throws IOException { TimerData timerData = new TimerData(); WriteTask writeTask = storageWriter.new WriteTask(timerData, Collections.emptyMap()); doThrow(IOException.class).when(writingChannelManager).write(Matchers.<ExtendedByteBufferOutputStream> anyObject(), Matchers.<Path> anyObject(), Matchers.<WriteReadCompletionRunnable> anyObject()); writeTask.run(); verify(storageIndexingTreeHandler, times(1)).writeFailed(writeTask); verify(extendedByteBufferOutputStream, times(1)).close(); verify(serializerQueue, times(1)).add(serializer); }
log.info("Failed to submit writing IO task, channel is closed. Trying to reopen the channel.."); this.openAsyncChannel(channel);
long position = writingChannelManager.write(byteBuffer, file, new WriteReadCompletionRunnable() { @Override public void run() { assertThat(readBytes, is(equalTo(bytes))); writingChannelManager.finalizeChannel(file); readingChannelManager.finalizeChannel(file);
@Test public void writeTaskThrowableDuringWrite() throws IOException { TimerData timerData = new TimerData(); WriteTask writeTask = storageWriter.new WriteTask(timerData, Collections.emptyMap()); doThrow(Throwable.class).when(writingChannelManager).write(Matchers.<ExtendedByteBufferOutputStream> anyObject(), Matchers.<Path> anyObject(), Matchers.<WriteReadCompletionRunnable> anyObject()); writeTask.run(); verify(storageIndexingTreeHandler, times(1)).writeFailed(writeTask); verify(extendedByteBufferOutputStream, times(1)).close(); verify(serializerQueue, times(1)).add(serializer); }
log.info("Failed to submit writing IO task, channel is closed. Trying to reopen the channel.."); this.openAsyncChannel(channel);
try { writingChannelManager.write(extendedByteBufferOutputStream, channelPath, completionRunnable); } catch (IOException e) {
Mockito.when(outputStream.getAllByteBuffers()).thenReturn(buffers); Mockito.when(outputStream.getTotalWriteSize()).thenReturn((long) bytes.length); long position = writingChannelManager.write(outputStream, file, new WriteReadCompletionRunnable(buffers.size()) { @Override public void run() {