@Nullable @Override public Set<String> fromSnapshotStore(final SnapshotOffer snapshotOffer) { final String persistenceId = snapshotOffer.metadata().persistenceId(); final Object snapshotEntity = snapshotOffer.snapshot(); return createSetFromSnapshot(persistenceId, snapshotEntity); }
@Nullable @Override public Set<String> fromSnapshotStore(final SnapshotOffer snapshotOffer) { final String persistenceId = snapshotOffer.metadata().persistenceId(); final Object snapshotEntity = snapshotOffer.snapshot(); return createSetFromSnapshot(persistenceId, snapshotEntity); }
@Nullable @Override public ConnectionData fromSnapshotStore(final SnapshotOffer snapshotOffer) { final String persistenceId = snapshotOffer.metadata().persistenceId(); final Object snapshotEntity = snapshotOffer.snapshot(); return createConnectionDataFromSnapshot(persistenceId, snapshotEntity); }
/** * Recovers the passed in {@link SnapshotOffer} to a {@link Thing}. * * @param snapshotOffer the snapshot offer * @return the Thing restored from the snapshot offer or {@code null}. * @throws NullPointerException if {@code snapshotOffer} is {@code null}. */ @Nullable public Thing recoverThingFromSnapshotOffer(@Nonnull final SnapshotOffer snapshotOffer) { checkNotNull(snapshotOffer, "snapshot offer"); final ThingWithSnapshotTag result = snapshotAdapter.fromSnapshotStore(snapshotOffer); final SnapshotMetadata metadata = snapshotOffer.metadata(); final SnapshotTag snapshotTag = Optional.ofNullable(result) .map(ThingWithSnapshotTag::getSnapshotTag) .orElse(SnapshotTag.UNPROTECTED); snapshotterState = new SnapshotterState(false, metadata.sequenceNr(), snapshotTag, null, null); return result; }
/** * Recovers the passed in {@link SnapshotOffer} to a {@link Thing}. * * @param snapshotOffer the snapshot offer * @return the Thing restored from the snapshot offer or {@code null}. * @throws NullPointerException if {@code snapshotOffer} is {@code null}. */ @Nullable public Thing recoverThingFromSnapshotOffer(@Nonnull final SnapshotOffer snapshotOffer) { checkNotNull(snapshotOffer, "snapshot offer"); final ThingWithSnapshotTag result = snapshotAdapter.fromSnapshotStore(snapshotOffer); final SnapshotMetadata metadata = snapshotOffer.metadata(); final SnapshotTag snapshotTag = Optional.ofNullable(result) .map(ThingWithSnapshotTag::getSnapshotTag) .orElse(SnapshotTag.UNPROTECTED); snapshotterState = new SnapshotterState(false, metadata.sequenceNr(), snapshotTag, null, null); return result; }
@Override public Receive createReceiveRecover() { return ReceiveBuilder.create() // # Snapshot handling .match(SnapshotOffer.class, ss -> { final Set<String> fromSnapshotStore = snapshotAdapter.fromSnapshotStore(ss); log.info("Received SnapshotOffer containing connectionIds: <{}>", fromSnapshotStore); if (fromSnapshotStore != null) { connectionIds.clear(); connectionIds.addAll(fromSnapshotStore); } lastSnapshotSequenceNr = ss.metadata().sequenceNr(); }) .match(ConnectionCreated.class, event -> connectionIds.add(event.getConnectionId())) .match(ConnectionOpened.class, event -> connectionIds.add(event.getConnectionId())) .match(ConnectionClosed.class, event -> connectionIds.remove(event.getConnectionId())) .match(ConnectionDeleted.class, event -> connectionIds.remove(event.getConnectionId())) .match(RecoveryCompleted.class, rc -> connectionIds.forEach(this::reconnect)) .matchAny(m -> log.warning("Unknown recover message: {}", m)) .build(); }
@Override public Receive createReceiveRecover() { return ReceiveBuilder.create() .match(SnapshotOffer.class, ss -> { batchIds = snapshotAdapter.fromSnapshotStore(ss); snapshotSequenceNr = ss.metadata().sequenceNr(); }) .match(BatchExecutionStarted.class, event -> batchIds.add(event.getBatchId())) .match(BatchExecutionFinished.class, event -> batchIds.remove(event.getBatchId())) .match(RecoveryCompleted.class, rc -> { log.debug("Recovery completed"); batchIds.forEach(this::lookupBatchCoordinatorActor); }) .matchAny(m -> log.warning("Unknown recover message: {}", m)) .build(); }
@Override public Receive createReceiveRecover() { // defines how state is updated during recovery return handlePolicyEvents.orElse(ReceiveBuilder.create() // # Snapshot handling .match(SnapshotOffer.class, ss -> { policy = snapshotAdapter.fromSnapshotStore(ss); lastSnapshotSequenceNr = ss.metadata().sequenceNr(); }) // # Recovery handling .match(RecoveryCompleted.class, rc -> { if (policy != null) { log.debug("Policy <{}> was recovered.", policyId); if (isPolicyActive()) { becomePolicyCreatedHandler(); } else if (isPolicyDeleted()) { becomePolicyDeletedHandler(); } else { log.error("Unknown lifecycle state <{}> for Policy <{}>.", policy.getLifecycle(), policyId); } } }) // # Handle unknown .matchAny(m -> log.warning("Unknown recover message: {}", m)) .build()); }
@Override public Receive createReceiveRecover() { // defines how state is updated during recovery return handlePolicyEvents.orElse(ReceiveBuilder.create() // # Snapshot handling .match(SnapshotOffer.class, ss -> { policy = snapshotAdapter.fromSnapshotStore(ss); lastSnapshotSequenceNr = ss.metadata().sequenceNr(); }) // # Recovery handling .match(RecoveryCompleted.class, rc -> { if (policy != null) { log.debug("Policy <{}> was recovered.", policyId); if (isPolicyActive()) { becomePolicyCreatedHandler(); } else if (isPolicyDeleted()) { becomePolicyDeletedHandler(); } else { log.error("Unknown lifecycle state <{}> for Policy <{}>.", policy.getLifecycle(), policyId); } } }) // # Handle unknown .matchAny(m -> log.warning("Unknown recover message: {}", m)) .build()); }
connectionStatus = fromSnapshotStore.getConnectionStatus(); lastSnapshotSequenceNr = ss.metadata().sequenceNr(); }) .match(ConnectionCreated.class, event -> {
restoreConnection(fromSnapshotStore); lastSnapshotSequenceNr = ss.metadata().sequenceNr(); }) .match(ConnectionCreated.class, event -> restoreConnection(event.getConnection()))
restoreConnection(fromSnapshotStore); lastSnapshotSequenceNr = ss.metadata().sequenceNr(); }) .match(ConnectionCreated.class, event -> restoreConnection(event.getConnection()))