diff --git a/src/java/org/apache/cassandra/service/MigrationTask.java b/src/java/org/apache/cassandra/service/MigrationTask.java index 74685829b6..1fc1db13b8 100644 --- a/src/java/org/apache/cassandra/service/MigrationTask.java +++ b/src/java/org/apache/cassandra/service/MigrationTask.java @@ -63,6 +63,7 @@ public void runMayThrow() throws Exception if (!FailureDetector.instance.isAlive(endpoint)) { logger.warn("Can't send schema pull request: node {} is down.", endpoint); + version.ifPresent(v -> MigrationManager.removeEndpointFromSchemaPullVersion(v, endpoint)); return; } @@ -72,6 +73,7 @@ public void runMayThrow() throws Exception if (!MigrationManager.shouldPullSchemaFrom(endpoint)) { logger.info("Skipped sending a migration request: node {} has a higher major version now.", endpoint); + version.ifPresent(v -> MigrationManager.removeEndpointFromSchemaPullVersion(v, endpoint)); return; } @@ -124,6 +126,12 @@ public boolean isLatencyForSnitch() return false; } }; - MessagingService.instance().sendRRWithFailure(message, endpoint, cb); + try { + MessagingService.instance().sendRRWithFailure(message, endpoint, cb); + } + catch (Exception e) + { + version.ifPresent(v -> MigrationManager.removeEndpointFromSchemaPullVersion(v, endpoint)); + } } }