@Override public void partitionLost(MigrationEvent migrationEvent) { //TODO: make this faster, too many loops Set<UUID> uuids = futureTracker.getTrackedTaskIds(); for(UUID uuid : uuids) { Partition partition = partitionManager.getPartition(uuid); if(migrationEvent.getPartitionId() == partition.getPartitionId()) { futureTracker.errorFuture(uuid, new MemberLeftException()); } } } });
/** Sends a {@link MigrationEvent} to the registered event listeners. */ void sendMigrationEvent(final MigrationInfo migrationInfo, final MigrationEvent.MigrationStatus status) { if (migrationInfo.getSourceCurrentReplicaIndex() != 0 && migrationInfo.getDestinationNewReplicaIndex() != 0) { // only fire events for 0th replica migrations return; } ClusterServiceImpl clusterService = node.getClusterService(); MemberImpl current = clusterService.getMember(migrationInfo.getSourceAddress()); MemberImpl newOwner = clusterService.getMember(migrationInfo.getDestinationAddress()); MigrationEvent event = new MigrationEvent(migrationInfo.getPartitionId(), current, newOwner, status); EventService eventService = nodeEngine.getEventService(); Collection<EventRegistration> registrations = eventService.getRegistrations(SERVICE_NAME, MIGRATION_EVENT_TOPIC); eventService.publishEvent(SERVICE_NAME, registrations, event, event.getPartitionId()); }
/** Sends a {@link MigrationEvent} to the registered event listeners. */ void sendMigrationEvent(final MigrationInfo migrationInfo, final MigrationEvent.MigrationStatus status) { if (migrationInfo.getSourceCurrentReplicaIndex() != 0 && migrationInfo.getDestinationNewReplicaIndex() != 0) { // only fire events for 0th replica migrations return; } ClusterServiceImpl clusterService = node.getClusterService(); MemberImpl current = clusterService.getMember(migrationInfo.getSource()); MemberImpl newOwner = clusterService.getMember(migrationInfo.getDestination()); MigrationEvent event = new MigrationEvent(migrationInfo.getPartitionId(), current, newOwner, status); EventService eventService = nodeEngine.getEventService(); Collection<EventRegistration> registrations = eventService.getRegistrations(SERVICE_NAME, MIGRATION_EVENT_TOPIC); eventService.publishEvent(SERVICE_NAME, registrations, event, event.getPartitionId()); }
private void render(DiagnosticsLogWriter writer, MigrationEvent event) { switch (event.getStatus()) { case STARTED: writer.startSection("MigrationStarted"); break; case COMPLETED: writer.startSection("MigrationCompleted"); break; case FAILED: writer.startSection("MigrationFailed"); break; default: return; } Member oldOwner = event.getOldOwner(); writer.writeKeyValueEntry("oldOwner", oldOwner == null ? "null" : oldOwner.getAddress().toString()); writer.writeKeyValueEntry("newOwner", event.getNewOwner().getAddress().toString()); writer.writeKeyValueEntry("partitionId", event.getPartitionId()); writer.endSection(); }
private void render(DiagnosticsLogWriter writer, MigrationEvent event) { switch (event.getStatus()) { case STARTED: writer.startSection("MigrationStarted"); break; case COMPLETED: writer.startSection("MigrationCompleted"); break; case FAILED: writer.startSection("MigrationFailed"); break; default: return; } Member oldOwner = event.getOldOwner(); writer.writeKeyValueEntry("oldOwner", oldOwner == null ? "null" : oldOwner.getAddress().toString()); writer.writeKeyValueEntry("newOwner", event.getNewOwner().getAddress().toString()); writer.writeKeyValueEntry("partitionId", event.getPartitionId()); writer.endSection(); }