void clearSessionsAfter(final long logPosition) { for (final Iterator<ClusterSession> i = sessionByIdMap.values().iterator(); i.hasNext(); ) { final ClusterSession session = i.next(); if (session.openedLogPosition() >= logPosition) { i.remove(); session.close(); } } for (final ClusterSession session : pendingSessions) { session.close(); } pendingSessions.clear(); }
private void snapshotState(final Publication publication, final long logPosition, final long leadershipTermId) { final ServiceSnapshotTaker snapshotTaker = new ServiceSnapshotTaker(publication, idleStrategy, null); snapshotTaker.markBegin(ClusteredServiceContainer.SNAPSHOT_TYPE_ID, logPosition, leadershipTermId, 0); for (final ClientSession clientSession : sessionByIdMap.values()) { snapshotTaker.snapshotSession(clientSession); } snapshotTaker.markEnd(ClusteredServiceContainer.SNAPSHOT_TYPE_ID, logPosition, leadershipTermId, 0); }
public int doWork() { int workCount = 0; if (state == State.ACTIVE) { if (image.isClosed()) { state = State.INACTIVE; for (final Session session : controlSessionByIdMap.values()) { session.abort(); } } else { workCount += image.poll(adapter, FRAGMENT_LIMIT); } } return workCount; }
void becomeLeader(final long leadershipTermId, final long logPosition, final int logSessionId) { this.leadershipTermId = leadershipTermId; final ChannelUri channelUri = ChannelUri.parse(ctx.logChannel()); channelUri.put(CommonContext.SESSION_ID_PARAM_NAME, Integer.toString(logSessionId)); startLogRecording(channelUri.toString(), SourceLocation.LOCAL); createAppendPosition(logSessionId); awaitServicesReady(channelUri, logSessionId, logPosition); for (final ClusterSession session : sessionByIdMap.values()) { if (session.state() != CLOSED) { session.connect(aeron); } } final long nowMs = epochClock.time(); for (final ClusterSession session : sessionByIdMap.values()) { if (session.state() != CLOSED) { session.timeOfLastActivityMs(nowMs); session.hasNewLeaderEventPending(true); } } }
private void forceCloseResources() { for (final Object resource : resourceByRegIdMap.values()) { if (resource instanceof Subscription) { final Subscription subscription = (Subscription)resource; subscription.internalClose(); } else if (resource instanceof Publication) { final Publication publication = (Publication)resource; publication.internalClose(); releaseLogBuffers(publication.logBuffers(), publication.originalRegistrationId()); } else if (resource instanceof Counter) { final Counter counter = (Counter)resource; counter.internalClose(); } } resourceByRegIdMap.clear(); } }
for (final Iterator<ClusterSession> i = sessionByIdMap.values().iterator(); i.hasNext(); )
for (final ReplaySession replaySession : replaySessionByIdMap.values())
private void snapshotState(final Publication publication, final long logPosition, final long leadershipTermId) { final ConsensusModuleSnapshotTaker snapshotTaker = new ConsensusModuleSnapshotTaker( publication, idleStrategy, aeronClientInvoker); snapshotTaker.markBegin(SNAPSHOT_TYPE_ID, logPosition, leadershipTermId, 0); for (final ClusterSession session : sessionByIdMap.values()) { if (session.state() == OPEN || session.state() == CLOSED) { snapshotTaker.snapshotSession(session); } } aeronClientInvoker.invoke(); timerService.snapshot(snapshotTaker); snapshotTaker.consensusModuleState(nextSessionId); snapshotTaker.clusterMembers(memberId, highMemberId, clusterMembers); snapshotTaker.markEnd(SNAPSHOT_TYPE_ID, logPosition, leadershipTermId, 0); }
public void onClose() { if (!ctx.ownsAeronClient()) { for (final ClusterSession session : sessionByIdMap.values()) { session.close(); } CloseHelper.close(memberStatusAdapter); ClusterMember.closeMemberPublications(clusterMembers); logPublisher.disconnect(); CloseHelper.close(ingressAdapter); CloseHelper.close(serviceProxy); CloseHelper.close(consensusModuleAdapter); } CloseHelper.close(archive); ctx.close(); }
public void onClose() { if (isServiceActive) { isServiceActive = false; try { service.onTerminate(this); } catch (final Exception ex) { ctx.countedErrorHandler().onError(ex); } } if (!ctx.ownsAeronClient()) { for (final ClientSession session : sessionByIdMap.values()) { session.disconnect(); } CloseHelper.close(logAdapter); CloseHelper.close(serviceAdapter); CloseHelper.close(consensusModuleProxy); } ctx.close(); }
for (final ClusterSession session : sessionByIdMap.values())
public void onChannelEndpointError(final int statusIndicatorId, final String message) { final Long2ObjectHashMap<Object>.ValueIterator iterator = resourceByRegIdMap.values().iterator(); while (iterator.hasNext()) { final Object resource = iterator.next(); if (resource instanceof Subscription) { final Subscription subscription = (Subscription)resource; if (subscription.channelStatusId() == statusIndicatorId) { handleError(new ChannelEndpointException(statusIndicatorId, message)); subscription.internalClose(); iterator.remove(); } } else if (resource instanceof Publication) { final Publication publication = (Publication)resource; if (publication.channelStatusId() == statusIndicatorId) { handleError(new ChannelEndpointException(statusIndicatorId, message)); publication.internalClose(); releaseLogBuffers(publication.logBuffers(), publication.originalRegistrationId()); iterator.remove(); } } } }
private void joinActiveLog() { final Subscription logSubscription = aeron.addSubscription(activeLogEvent.channel, activeLogEvent.streamId); consensusModuleProxy.ack(activeLogEvent.logPosition, ackId++, serviceId); final Image image = awaitImage(activeLogEvent.sessionId, logSubscription); heartbeatCounter.setOrdered(epochClock.time()); egressMessageHeaderEncoder.leadershipTermId(activeLogEvent.leadershipTermId); memberId = activeLogEvent.memberId; ctx.clusterMarkFile().memberId(memberId); logChannel = activeLogEvent.channel; activeLogEvent = null; logAdapter = new BoundedLogAdapter(image, commitPosition, this); role(Role.get((int)roleCounter.get())); for (final ClientSession session : sessionByIdMap.values()) { if (Role.LEADER == role) { if (ctx.isRespondingService()) { session.connect(aeron); } session.resetClosing(); } else { session.disconnect(); } } }
public Collection<DeployedWorkflow> getWorkflowsByBpmnProcessId( final DirectBuffer bpmnProcessId) { updateCompleteInMemoryState(); final Long2ObjectHashMap<DeployedWorkflow> workflowsByVersions = workflowsByProcessIdAndVersion.get(bpmnProcessId); if (workflowsByVersions != null) { return workflowsByVersions.values(); } return Collections.EMPTY_LIST; }
public Collection<DeployedWorkflow> getWorkflowsByBpmnProcessId( final DirectBuffer bpmnProcessId) { updateCompleteInMemoryState(); final Long2ObjectHashMap<DeployedWorkflow> workflowsByVersions = workflowsByProcessIdAndVersion.get(bpmnProcessId); if (workflowsByVersions != null) { return workflowsByVersions.values(); } return Collections.EMPTY_LIST; }
int checkTimeouts(final long timeInMs) { int count = 0; for (final SenderEndPoint senderEndPoint : connectionIdToSenderEndpoint.values()) { if (senderEndPoint.checkTimeouts(timeInMs)) { count++; } } return count; }
public Collection<DeployedWorkflow> getWorkflows() { updateCompleteInMemoryState(); return workflowsByKey.values(); }
private int libraryLookup(final long sessionId) { for (final SenderEndPoint senderEndPoint : connectionIdToSenderEndpoint.values()) { if (senderEndPoint.sessionId() == sessionId) { return senderEndPoint.libraryId(); } } return FixEngine.ENGINE_LIBRARY_ID; }
public void close() { if (state != CLOSED) { connectionIdToSession.values().forEach(subscriber -> subscriber.session().disable()); state = CLOSED; } } }
private void snapshotState(final Publication publication, final long logPosition, final long leadershipTermId) { final ServiceSnapshotTaker snapshotTaker = new ServiceSnapshotTaker(publication, idleStrategy, null); snapshotTaker.markBegin(ClusteredServiceContainer.SNAPSHOT_TYPE_ID, logPosition, leadershipTermId, 0); for (final ClientSession clientSession : sessionByIdMap.values()) { snapshotTaker.snapshotSession(clientSession); } snapshotTaker.markEnd(ClusteredServiceContainer.SNAPSHOT_TYPE_ID, logPosition, leadershipTermId, 0); }