@Override public void start(ServiceStartContext startContext) { startContext.async(logStream.openAppender()); }
@Override public void start(ServiceStartContext startContext) { startContext.async(logStream.openAppender()); }
public LogStream createLogStream(final String name, final int partitionId) { final String rootPath = storageDirectory.getAbsolutePath(); final LogStream logStream = LogStreams.createFsLogStream(partitionId) .logRootPath(rootPath) .serviceContainer(serviceContainer) .logName(name) .deleteOnClose(true) .build() .join(); actorScheduler .submitActor( new Actor() { @Override protected void onActorStarting() { final ActorCondition condition = actor.onCondition( "on-append", () -> logStream.setCommitPosition(Long.MAX_VALUE)); logStream.registerOnAppendCondition(condition); } }) .join(); logStream.openAppender().join(); managedLogs.put(name, logStream); closeables.manage(logStream); return logStream; }
public LogStream createLogStream(final String name, final int partitionId) { final String rootPath = storageDirectory.getAbsolutePath(); final LogStream logStream = LogStreams.createFsLogStream(partitionId) .logRootPath(rootPath) .serviceContainer(serviceContainer) .logName(name) .deleteOnClose(true) .build() .join(); actorScheduler .submitActor( new Actor() { @Override protected void onActorStarting() { final ActorCondition condition = actor.onCondition( "on-append", () -> logStream.setCommitPosition(Long.MAX_VALUE)); logStream.registerOnAppendCondition(condition); } }) .join(); logStream.openAppender().join(); managedLogs.put(name, logStream); closeables.manage(logStream); return logStream; }
/** * 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); } }
/** * 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); } }
@Before public void setup() { MockitoAnnotations.initMocks(this); serverOutput = new BufferingServerOutput(); logStream = LogStreams.createFsLogStream(LOG_STREAM_PARTITION_ID) .logRootPath(tempFolder.getRoot().getAbsolutePath()) .serviceContainer(serviceContainerRule.get()) .logName("Test") .build() .join(); logStream.openAppender().join(); messageHandler = new ClientApiMessageHandler(mockControlMessageDispatcher); final Partition partition = new Partition(new PartitionInfo(LOG_STREAM_PARTITION_ID, 1), RaftState.LEADER) { @Override public LogStream getLogStream() { return logStream; } }; messageHandler.addPartition(partition); logStream.setTerm(RAFT_TERM); }
@Before public void setup() { MockitoAnnotations.initMocks(this); serverOutput = new BufferingServerOutput(); logStream = LogStreams.createFsLogStream(LOG_STREAM_PARTITION_ID) .logRootPath(tempFolder.getRoot().getAbsolutePath()) .serviceContainer(serviceContainerRule.get()) .logName("Test") .build() .join(); logStream.openAppender().join(); messageHandler = new ClientApiMessageHandler(mockControlMessageDispatcher); final Partition partition = new Partition(new PartitionInfo(LOG_STREAM_PARTITION_ID, 1), RaftState.LEADER) { @Override public LogStream getLogStream() { return logStream; } }; messageHandler.addPartition(partition); logStream.setTerm(RAFT_TERM); }