public TypedStreamReaderImpl( LogStream stream, EnumMap<ValueType, Class<? extends UnpackedObject>> eventRegistry) { this.reader = new BufferedLogStreamReader(stream); this.eventCache = new HashMap<>(); eventRegistry.forEach((t, c) -> eventCache.put(c, ReflectUtil.newInstance(c))); }
public TypedStreamReaderImpl( LogStream stream, EnumMap<ValueType, Class<? extends UnpackedObject>> eventRegistry) { this.reader = new BufferedLogStreamReader(stream); this.eventCache = new HashMap<>(); eventRegistry.forEach((t, c) -> eventCache.put(c, ReflectUtil.newInstance(c))); }
public void sendRequest() { this.reader = new BufferedLogStreamReader(raft.getLogStream(), true); final BufferWriter request = createRequest(); sendRequestToMembers(request); }
public void sendRequest() { this.reader = new BufferedLogStreamReader(raft.getLogStream(), true); final BufferWriter request = createRequest(); sendRequestToMembers(request); }
public Stream<LoggedEvent> events(final String logName) { final LogStream logStream = managedLogs.get(logName); final LogStreamReader reader = new BufferedLogStreamReader(logStream); closeables.manage(reader); reader.seekToFirstEvent(); final Iterable<LoggedEvent> iterable = () -> reader; return StreamSupport.stream(iterable.spliterator(), false); }
public BufferedLogStorageAppender(final Raft raft) { this.raft = raft; this.logStream = raft.getLogStream(); this.reader = new BufferedLogStreamReader(logStream, true); lastWrittenPosition = previousEventPositionNullValue(); lastWrittenTerm = previousEventTermNullValue(); allocateMemory(INITIAL_CAPACITY); closed = false; }
public Stream<LoggedEvent> events(final String logName) { final LogStream logStream = managedLogs.get(logName); final LogStreamReader reader = new BufferedLogStreamReader(logStream); closeables.manage(reader); reader.seekToFirstEvent(); final Iterable<LoggedEvent> iterable = () -> reader; return StreamSupport.stream(iterable.spliterator(), false); }
public BufferedLogStorageAppender(final Raft raft) { this.raft = raft; this.logStream = raft.getLogStream(); this.reader = new BufferedLogStreamReader(logStream, true); lastWrittenPosition = previousEventPositionNullValue(); lastWrittenTerm = previousEventTermNullValue(); allocateMemory(INITIAL_CAPACITY); closed = false; }
public MemberReplicateLogController( Raft raft, RaftMember member, ClientTransport clientTransport) { this.member = member; this.nodeId = member.getNodeId(); this.name = String.format("raft-repl-%s-%d", raft.getName(), nodeId); this.raft = raft; this.heartbeatInterval = raft.getConfiguration().getHeartbeatIntervalDuration(); this.clientOutput = clientTransport.getOutput(); this.logStream = raft.getLogStream(); this.reader = new BufferedLogStreamReader(logStream, true); }
public MemberReplicateLogController( Raft raft, RaftMember member, ClientTransport clientTransport) { this.member = member; this.nodeId = member.getNodeId(); this.name = String.format("raft-repl-%s-%d", raft.getName(), nodeId); this.raft = raft; this.heartbeatInterval = raft.getConfiguration().getHeartbeatIntervalDuration(); this.clientOutput = clientTransport.getOutput(); this.logStream = raft.getLogStream(); this.reader = new BufferedLogStreamReader(logStream, true); }
public static void printRecords(final LogStream logStream) { final StringBuilder sb = new StringBuilder(); sb.append("Records on partition "); sb.append(logStream.getPartitionId()); sb.append(":\n"); try (final LogStreamReader streamReader = new BufferedLogStreamReader(logStream)) { streamReader.seekToFirstEvent(); while (streamReader.hasNext()) { final LoggedEvent event = streamReader.next(); writeRecord(event, sb); } } LOGGER.info(sb.toString()); }
public static void printRecords(final LogStream logStream) { final StringBuilder sb = new StringBuilder(); sb.append("Records on partition "); sb.append(logStream.getPartitionId()); sb.append(":\n"); try (final LogStreamReader streamReader = new BufferedLogStreamReader(logStream)) { streamReader.seekToFirstEvent(); while (streamReader.hasNext()) { final LoggedEvent event = streamReader.next(); writeRecord(event, sb); } } LOGGER.info(sb.toString()); }
public AbstractRaftState(final Raft raft, ActorControl raftActor) { this.raft = raft; this.raftActor = raftActor; this.requestQueue = raft.getRequestQueue(); this.messageBuffer = raft.getMessageReceiveBuffer(); this.logStream = raft.getLogStream(); this.appender = new BufferedLogStorageAppender(raft); this.heartbeat = raft.getHeartbeat(); this.raftMembers = raft.getRaftMembers(); reader = new BufferedLogStreamReader(logStream, true); reset(); }
public AbstractRaftState(final Raft raft, ActorControl raftActor) { this.raft = raft; this.raftActor = raftActor; this.requestQueue = raft.getRequestQueue(); this.messageBuffer = raft.getMessageReceiveBuffer(); this.logStream = raft.getLogStream(); this.appender = new BufferedLogStorageAppender(raft); this.heartbeat = raft.getHeartbeat(); this.raftMembers = raft.getRaftMembers(); reader = new BufferedLogStreamReader(logStream, true); reset(); }
@Test public void shouldWriteCommandRequestEventType() { // given final int writtenLength = writeCommandRequestToBuffer( buffer, LOG_STREAM_PARTITION_ID, null, ValueType.JOB, JobIntent.CREATE); // when final boolean isHandled = messageHandler.onRequest(serverOutput, DEFAULT_ADDRESS, buffer, 0, writtenLength, 123); // then assertThat(isHandled).isTrue(); final BufferedLogStreamReader logStreamReader = new BufferedLogStreamReader(logStream, true); waitForAvailableEvent(logStreamReader); final LoggedEvent loggedEvent = logStreamReader.next(); final RecordMetadata eventMetadata = new RecordMetadata(); loggedEvent.readMetadata(eventMetadata); assertThat(eventMetadata.getValueType()).isEqualTo(ValueType.JOB); assertThat(eventMetadata.getIntent()).isEqualTo(JobIntent.CREATE); }
@Test public void shouldWriteCommandRequestEventType() { // given final int writtenLength = writeCommandRequestToBuffer( buffer, LOG_STREAM_PARTITION_ID, null, ValueType.JOB, JobIntent.CREATE); // when final boolean isHandled = messageHandler.onRequest(serverOutput, DEFAULT_ADDRESS, buffer, 0, writtenLength, 123); // then assertThat(isHandled).isTrue(); final BufferedLogStreamReader logStreamReader = new BufferedLogStreamReader(logStream, true); waitForAvailableEvent(logStreamReader); final LoggedEvent loggedEvent = logStreamReader.next(); final RecordMetadata eventMetadata = new RecordMetadata(); loggedEvent.readMetadata(eventMetadata); assertThat(eventMetadata.getValueType()).isEqualTo(ValueType.JOB); assertThat(eventMetadata.getIntent()).isEqualTo(JobIntent.CREATE); }
@Test public void shouldWriteCommandRequestProtocolVersion() { // given final short clientProtocolVersion = Protocol.PROTOCOL_VERSION - 1; final int writtenLength = writeCommandRequestToBuffer( buffer, LOG_STREAM_PARTITION_ID, clientProtocolVersion, ValueType.JOB, JobIntent.CREATE); // when final boolean isHandled = messageHandler.onRequest(serverOutput, DEFAULT_ADDRESS, buffer, 0, writtenLength, 123); // then assertThat(isHandled).isTrue(); final BufferedLogStreamReader logStreamReader = new BufferedLogStreamReader(logStream, true); waitForAvailableEvent(logStreamReader); final LoggedEvent loggedEvent = logStreamReader.next(); final RecordMetadata eventMetadata = new RecordMetadata(); loggedEvent.readMetadata(eventMetadata); assertThat(eventMetadata.getProtocolVersion()).isEqualTo(clientProtocolVersion); }
private int determineInitialPartitionId() { final LogStorage logStorage = logStorageInjector.getValue(); final LogBlockIndex logBlockIndex = logBlockIndexInjector.getValue(); try (BufferedLogStreamReader logReader = new BufferedLogStreamReader(true)) { logReader.wrap(logStorage, logBlockIndex); long lastPosition = 0; // Get position of last entry logReader.seekToLastEvent(); if (logReader.hasNext()) { final LoggedEvent lastEntry = logReader.next(); lastPosition = lastEntry.getPosition(); } // dispatcher needs to generate positions greater than the last position int partitionId = 0; if (lastPosition > 0) { partitionId = PositionUtil.partitionId(lastPosition); } return partitionId; } }
private int determineInitialPartitionId() { final LogStorage logStorage = logStorageInjector.getValue(); final LogBlockIndex logBlockIndex = logBlockIndexInjector.getValue(); try (BufferedLogStreamReader logReader = new BufferedLogStreamReader(true)) { logReader.wrap(logStorage, logBlockIndex); long lastPosition = 0; // Get position of last entry logReader.seekToLastEvent(); if (logReader.hasNext()) { final LoggedEvent lastEntry = logReader.next(); lastPosition = lastEntry.getPosition(); } // dispatcher needs to generate positions greater than the last position int partitionId = 0; if (lastPosition > 0) { partitionId = PositionUtil.partitionId(lastPosition); } return partitionId; } }
/** * Truncates events with getPosition greater than the argument. Includes committed events. Resets * commit getPosition to the argument getPosition. * * @param position exclusive (unlike {@link LogStream#truncate(long)}!) */ public void truncate(final String stream, final long position) { final LogStream logStream = getLogStream(stream); try (final LogStreamReader reader = new BufferedLogStreamReader(logStream)) { logStream.closeAppender().get(); reader.seek(position + 1); logStream.setCommitPosition(position); if (reader.hasNext()) { logStream.truncate(reader.next().getPosition()); } logStream.setCommitPosition(Long.MAX_VALUE); logStream.openAppender().get(); } catch (final Exception e) { throw new RuntimeException("Could not truncate log stream " + stream, e); } }