Merge branch 'cassandra-3.0' into cassandra-3.5
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/cd69d9d3 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/cd69d9d3 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/cd69d9d3 Branch: refs/heads/cassandra-3.5 Commit: cd69d9d3333e9c89a559eac4795e7a8cfa3e13c4 Parents: 7fbdce8 6807c59 Author: Marcus Eriksson <marc...@apache.org> Authored: Thu Mar 31 09:44:35 2016 +0200 Committer: Marcus Eriksson <marc...@apache.org> Committed: Thu Mar 31 09:44:35 2016 +0200 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../db/compaction/CompactionManager.java | 17 ++++++++++------- .../repair/RepairMessageVerbHandler.java | 18 ++++++++++-------- .../cassandra/service/ActiveRepairService.java | 2 +- 4 files changed, 22 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/cd69d9d3/CHANGES.txt ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/cd69d9d3/src/java/org/apache/cassandra/db/compaction/CompactionManager.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/cd69d9d3/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java index 3b23b1f,eeefec4..519fe5f --- a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java +++ b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java @@@ -98,17 -98,19 +98,19 @@@ public class RepairMessageVerbHandler i !sstable.metadata.isIndex() && // exclude SSTables from 2i new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(repairingRange); } - }, true); //ephemeral snapshot, if repair fails, it will be cleaned next startup + }, true, false); //ephemeral snapshot, if repair fails, it will be cleaned next startup - - Set<SSTableReader> currentlyRepairing = ActiveRepairService.instance.currentlyRepairing(cfs.metadata.cfId, desc.parentSessionId); - if (!Sets.intersection(currentlyRepairing, snapshottedSSSTables).isEmpty()) + if (ActiveRepairService.instance.getParentRepairSession(desc.parentSessionId).isGlobal) { - // clear snapshot that we just created - cfs.clearSnapshot(desc.sessionId.toString()); - logErrorAndSendFailureResponse("Cannot start multiple repair sessions over the same sstables", message.from, id); - return; + Set<SSTableReader> currentlyRepairing = ActiveRepairService.instance.currentlyRepairing(cfs.metadata.cfId, desc.parentSessionId); + if (!Sets.intersection(currentlyRepairing, snapshottedSSSTables).isEmpty()) + { + // clear snapshot that we just created + cfs.clearSnapshot(desc.sessionId.toString()); + logErrorAndSendFailureResponse("Cannot start multiple repair sessions over the same sstables", message.from, id); + return; + } + ActiveRepairService.instance.getParentRepairSession(desc.parentSessionId).addSSTables(cfs.metadata.cfId, snapshottedSSSTables); } - ActiveRepairService.instance.getParentRepairSession(desc.parentSessionId).addSSTables(cfs.metadata.cfId, snapshottedSSSTables); logger.debug("Enqueuing response to snapshot request {} to {}", desc.sessionId, message.from); MessagingService.instance().sendReply(new MessageOut(MessagingService.Verb.INTERNAL_RESPONSE), id, message.from); break;