You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2016/03/31 09:50:16 UTC

[01/10] cassandra git commit: Dont mark sstables as repairing with sub range repairs

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.2 1dac59d1e -> 10f25aeeb
  refs/heads/cassandra-3.0 202786e06 -> 6807c5984
  refs/heads/cassandra-3.5 7fbdce812 -> cd69d9d33
  refs/heads/trunk d00bda88b -> fafbf27fd


Dont mark sstables as repairing with sub range repairs

Patch by marcuse; reviewed by yukim for CASSANDRA-11451


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/10f25aee
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/10f25aee
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/10f25aee

Branch: refs/heads/cassandra-2.2
Commit: 10f25aeebb22d43bf4f61413380f69f8e3ab3189
Parents: 1dac59d
Author: Marcus Eriksson <ma...@apache.org>
Authored: Tue Mar 29 17:06:42 2016 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Thu Mar 31 09:41:04 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/10f25aee/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 6e43496..e7aa321 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.2.6
+ * Dont mark sstables as repairing with sub range repairs (CASSANDRA-11451)
  * Fix use of NullUpdater for 2i during compaction (CASSANDRA-11450)
  * Notify when sstables change after cancelling compaction (CASSANDRA-11373)
  * cqlsh: COPY FROM should check that explicit column names are valid (CASSANDRA-11333)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10f25aee/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index ca02747..675d3cc 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -1176,12 +1176,15 @@ public class CompactionManager implements CompactionManagerMBean
                 }
             }
 
-            Set<SSTableReader> currentlyRepairing = ActiveRepairService.instance.currentlyRepairing(cfs.metadata.cfId, validator.desc.parentSessionId);
-
-            if (!Sets.intersection(currentlyRepairing, sstablesToValidate).isEmpty())
+            if (prs.isGlobal)
             {
-                logger.error("Cannot start multiple repair sessions over the same sstables");
-                throw new RuntimeException("Cannot start multiple repair sessions over the same sstables");
+                Set<SSTableReader> currentlyRepairing = ActiveRepairService.instance.currentlyRepairing(cfs.metadata.cfId, validator.desc.parentSessionId);
+
+                if (!Sets.intersection(currentlyRepairing, sstablesToValidate).isEmpty())
+                {
+                    logger.error("Cannot start multiple repair sessions over the same sstables");
+                    throw new RuntimeException("Cannot start multiple repair sessions over the same sstables");
+                }
             }
 
             sstables = Refs.tryRef(sstablesToValidate);
@@ -1191,8 +1194,8 @@ public class CompactionManager implements CompactionManagerMBean
                 throw new RuntimeException("Could not reference sstables");
             }
         }
-
-        prs.addSSTables(cfs.metadata.cfId, sstablesToValidate);
+        if (prs.isGlobal)
+            prs.addSSTables(cfs.metadata.cfId, sstablesToValidate);
 
         return sstables;
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10f25aee/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
index b8f8b65..8a0706a 100644
--- a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
+++ b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
@@ -108,16 +108,18 @@ public class RepairMessageVerbHandler implements IVerbHandler<RepairMessage>
                                     new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(Collections.singleton(repairingRange));
                         }
                     }, true); //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;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10f25aee/src/java/org/apache/cassandra/service/ActiveRepairService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/ActiveRepairService.java b/src/java/org/apache/cassandra/service/ActiveRepairService.java
index 9ac1186..39be051 100644
--- a/src/java/org/apache/cassandra/service/ActiveRepairService.java
+++ b/src/java/org/apache/cassandra/service/ActiveRepairService.java
@@ -426,7 +426,7 @@ public class ActiveRepairService
         private final Map<UUID, Set<SSTableReader>> sstableMap = new HashMap<>();
         private final long repairedAt;
         public final boolean isIncremental;
-        private final boolean isGlobal;
+        public final boolean isGlobal;
 
         public ParentRepairSession(List<ColumnFamilyStore> columnFamilyStores, Collection<Range<Token>> ranges, boolean isIncremental, boolean isGlobal, long repairedAt)
         {


[10/10] cassandra git commit: Merge branch 'cassandra-3.5' into trunk

Posted by ma...@apache.org.
Merge branch 'cassandra-3.5' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/fafbf27f
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/fafbf27f
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/fafbf27f

Branch: refs/heads/trunk
Commit: fafbf27fd629bf9474e406ec636dea4e6d9c76fc
Parents: d00bda8 cd69d9d
Author: Marcus Eriksson <ma...@apache.org>
Authored: Thu Mar 31 09:46:02 2016 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Thu Mar 31 09:46:02 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/fafbf27f/CHANGES.txt
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/fafbf27f/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------


[08/10] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.5

Posted by ma...@apache.org.
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 <ma...@apache.org>
Authored: Thu Mar 31 09:44:35 2016 +0200
Committer: Marcus Eriksson <ma...@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;


[05/10] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

Posted by ma...@apache.org.
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6807c598
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6807c598
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6807c598

Branch: refs/heads/cassandra-3.5
Commit: 6807c5984965b2689e077dbd1c4b9a3dd92a6d96
Parents: 202786e 10f25ae
Author: Marcus Eriksson <ma...@apache.org>
Authored: Thu Mar 31 09:42:22 2016 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Thu Mar 31 09:42:22 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/6807c598/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index ea0040f,e7aa321..449a2b5
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,17 -1,6 +1,18 @@@
 -2.2.6
 +3.0.5
 + * Upgrade ohc to 0.4.3
 + * Enable SO_REUSEADDR for JMX RMI server sockets (CASSANDRA-11093)
 + * Allocate merkletrees with the correct size (CASSANDRA-11390)
 + * Support streaming pre-3.0 sstables (CASSANDRA-10990)
 + * Add backpressure to compressed commit log (CASSANDRA-10971)
 + * SSTableExport supports secondary index tables (CASSANDRA-11330)
 + * Fix sstabledump to include missing info in debug output (CASSANDRA-11321)
 + * Establish and implement canonical bulk reading workload(s) (CASSANDRA-10331)
 + * Fix paging for IN queries on tables without clustering columns (CASSANDRA-11208)
 + * Remove recursive call from CompositesSearcher (CASSANDRA-11304)
 + * Fix filtering on non-primary key columns for queries without index (CASSANDRA-6377)
 + * Fix sstableloader fail when using materialized view (CASSANDRA-11275)
 +Merged from 2.2:
+  * Dont mark sstables as repairing with sub range repairs (CASSANDRA-11451)
 - * Fix use of NullUpdater for 2i during compaction (CASSANDRA-11450)
   * Notify when sstables change after cancelling compaction (CASSANDRA-11373)
   * cqlsh: COPY FROM should check that explicit column names are valid (CASSANDRA-11333)
   * Add -Dcassandra.start_gossip startup option (CASSANDRA-10809)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6807c598/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6807c598/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
index 703d187,8a0706a..eeefec4
--- a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
+++ b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
@@@ -95,20 -104,22 +95,22 @@@ public class RepairMessageVerbHandler i
                          public boolean apply(SSTableReader sstable)
                          {
                              return sstable != null &&
 -                                    !(sstable.partitioner instanceof LocalPartitioner) && // exclude SSTables from 2i
 -                                    new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(Collections.singleton(repairingRange));
 +                                   !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
- 
-                     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;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6807c598/src/java/org/apache/cassandra/service/ActiveRepairService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/ActiveRepairService.java
index 46d1e2c,39be051..b0fe91a
--- a/src/java/org/apache/cassandra/service/ActiveRepairService.java
+++ b/src/java/org/apache/cassandra/service/ActiveRepairService.java
@@@ -424,9 -426,9 +424,9 @@@ public class ActiveRepairServic
          private final Map<UUID, Set<SSTableReader>> sstableMap = new HashMap<>();
          private final long repairedAt;
          public final boolean isIncremental;
-         private final boolean isGlobal;
+         public final boolean isGlobal;
  
 -        public ParentRepairSession(List<ColumnFamilyStore> columnFamilyStores, Collection<Range<Token>> ranges, boolean isIncremental, boolean isGlobal, long repairedAt)
 +        public ParentRepairSession(List<ColumnFamilyStore> columnFamilyStores, Collection<Range<Token>> ranges, boolean isIncremental, long repairedAt, boolean isGlobal)
          {
              for (ColumnFamilyStore cfs : columnFamilyStores)
              {


[06/10] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

Posted by ma...@apache.org.
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6807c598
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6807c598
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6807c598

Branch: refs/heads/cassandra-3.0
Commit: 6807c5984965b2689e077dbd1c4b9a3dd92a6d96
Parents: 202786e 10f25ae
Author: Marcus Eriksson <ma...@apache.org>
Authored: Thu Mar 31 09:42:22 2016 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Thu Mar 31 09:42:22 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/6807c598/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index ea0040f,e7aa321..449a2b5
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,17 -1,6 +1,18 @@@
 -2.2.6
 +3.0.5
 + * Upgrade ohc to 0.4.3
 + * Enable SO_REUSEADDR for JMX RMI server sockets (CASSANDRA-11093)
 + * Allocate merkletrees with the correct size (CASSANDRA-11390)
 + * Support streaming pre-3.0 sstables (CASSANDRA-10990)
 + * Add backpressure to compressed commit log (CASSANDRA-10971)
 + * SSTableExport supports secondary index tables (CASSANDRA-11330)
 + * Fix sstabledump to include missing info in debug output (CASSANDRA-11321)
 + * Establish and implement canonical bulk reading workload(s) (CASSANDRA-10331)
 + * Fix paging for IN queries on tables without clustering columns (CASSANDRA-11208)
 + * Remove recursive call from CompositesSearcher (CASSANDRA-11304)
 + * Fix filtering on non-primary key columns for queries without index (CASSANDRA-6377)
 + * Fix sstableloader fail when using materialized view (CASSANDRA-11275)
 +Merged from 2.2:
+  * Dont mark sstables as repairing with sub range repairs (CASSANDRA-11451)
 - * Fix use of NullUpdater for 2i during compaction (CASSANDRA-11450)
   * Notify when sstables change after cancelling compaction (CASSANDRA-11373)
   * cqlsh: COPY FROM should check that explicit column names are valid (CASSANDRA-11333)
   * Add -Dcassandra.start_gossip startup option (CASSANDRA-10809)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6807c598/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6807c598/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
index 703d187,8a0706a..eeefec4
--- a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
+++ b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
@@@ -95,20 -104,22 +95,22 @@@ public class RepairMessageVerbHandler i
                          public boolean apply(SSTableReader sstable)
                          {
                              return sstable != null &&
 -                                    !(sstable.partitioner instanceof LocalPartitioner) && // exclude SSTables from 2i
 -                                    new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(Collections.singleton(repairingRange));
 +                                   !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
- 
-                     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;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6807c598/src/java/org/apache/cassandra/service/ActiveRepairService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/ActiveRepairService.java
index 46d1e2c,39be051..b0fe91a
--- a/src/java/org/apache/cassandra/service/ActiveRepairService.java
+++ b/src/java/org/apache/cassandra/service/ActiveRepairService.java
@@@ -424,9 -426,9 +424,9 @@@ public class ActiveRepairServic
          private final Map<UUID, Set<SSTableReader>> sstableMap = new HashMap<>();
          private final long repairedAt;
          public final boolean isIncremental;
-         private final boolean isGlobal;
+         public final boolean isGlobal;
  
 -        public ParentRepairSession(List<ColumnFamilyStore> columnFamilyStores, Collection<Range<Token>> ranges, boolean isIncremental, boolean isGlobal, long repairedAt)
 +        public ParentRepairSession(List<ColumnFamilyStore> columnFamilyStores, Collection<Range<Token>> ranges, boolean isIncremental, long repairedAt, boolean isGlobal)
          {
              for (ColumnFamilyStore cfs : columnFamilyStores)
              {


[02/10] cassandra git commit: Dont mark sstables as repairing with sub range repairs

Posted by ma...@apache.org.
Dont mark sstables as repairing with sub range repairs

Patch by marcuse; reviewed by yukim for CASSANDRA-11451


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/10f25aee
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/10f25aee
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/10f25aee

Branch: refs/heads/cassandra-3.0
Commit: 10f25aeebb22d43bf4f61413380f69f8e3ab3189
Parents: 1dac59d
Author: Marcus Eriksson <ma...@apache.org>
Authored: Tue Mar 29 17:06:42 2016 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Thu Mar 31 09:41:04 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/10f25aee/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 6e43496..e7aa321 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.2.6
+ * Dont mark sstables as repairing with sub range repairs (CASSANDRA-11451)
  * Fix use of NullUpdater for 2i during compaction (CASSANDRA-11450)
  * Notify when sstables change after cancelling compaction (CASSANDRA-11373)
  * cqlsh: COPY FROM should check that explicit column names are valid (CASSANDRA-11333)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10f25aee/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index ca02747..675d3cc 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -1176,12 +1176,15 @@ public class CompactionManager implements CompactionManagerMBean
                 }
             }
 
-            Set<SSTableReader> currentlyRepairing = ActiveRepairService.instance.currentlyRepairing(cfs.metadata.cfId, validator.desc.parentSessionId);
-
-            if (!Sets.intersection(currentlyRepairing, sstablesToValidate).isEmpty())
+            if (prs.isGlobal)
             {
-                logger.error("Cannot start multiple repair sessions over the same sstables");
-                throw new RuntimeException("Cannot start multiple repair sessions over the same sstables");
+                Set<SSTableReader> currentlyRepairing = ActiveRepairService.instance.currentlyRepairing(cfs.metadata.cfId, validator.desc.parentSessionId);
+
+                if (!Sets.intersection(currentlyRepairing, sstablesToValidate).isEmpty())
+                {
+                    logger.error("Cannot start multiple repair sessions over the same sstables");
+                    throw new RuntimeException("Cannot start multiple repair sessions over the same sstables");
+                }
             }
 
             sstables = Refs.tryRef(sstablesToValidate);
@@ -1191,8 +1194,8 @@ public class CompactionManager implements CompactionManagerMBean
                 throw new RuntimeException("Could not reference sstables");
             }
         }
-
-        prs.addSSTables(cfs.metadata.cfId, sstablesToValidate);
+        if (prs.isGlobal)
+            prs.addSSTables(cfs.metadata.cfId, sstablesToValidate);
 
         return sstables;
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10f25aee/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
index b8f8b65..8a0706a 100644
--- a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
+++ b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
@@ -108,16 +108,18 @@ public class RepairMessageVerbHandler implements IVerbHandler<RepairMessage>
                                     new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(Collections.singleton(repairingRange));
                         }
                     }, true); //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;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10f25aee/src/java/org/apache/cassandra/service/ActiveRepairService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/ActiveRepairService.java b/src/java/org/apache/cassandra/service/ActiveRepairService.java
index 9ac1186..39be051 100644
--- a/src/java/org/apache/cassandra/service/ActiveRepairService.java
+++ b/src/java/org/apache/cassandra/service/ActiveRepairService.java
@@ -426,7 +426,7 @@ public class ActiveRepairService
         private final Map<UUID, Set<SSTableReader>> sstableMap = new HashMap<>();
         private final long repairedAt;
         public final boolean isIncremental;
-        private final boolean isGlobal;
+        public final boolean isGlobal;
 
         public ParentRepairSession(List<ColumnFamilyStore> columnFamilyStores, Collection<Range<Token>> ranges, boolean isIncremental, boolean isGlobal, long repairedAt)
         {


[09/10] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.5

Posted by ma...@apache.org.
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/trunk
Commit: cd69d9d3333e9c89a559eac4795e7a8cfa3e13c4
Parents: 7fbdce8 6807c59
Author: Marcus Eriksson <ma...@apache.org>
Authored: Thu Mar 31 09:44:35 2016 +0200
Committer: Marcus Eriksson <ma...@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;


[03/10] cassandra git commit: Dont mark sstables as repairing with sub range repairs

Posted by ma...@apache.org.
Dont mark sstables as repairing with sub range repairs

Patch by marcuse; reviewed by yukim for CASSANDRA-11451


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/10f25aee
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/10f25aee
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/10f25aee

Branch: refs/heads/cassandra-3.5
Commit: 10f25aeebb22d43bf4f61413380f69f8e3ab3189
Parents: 1dac59d
Author: Marcus Eriksson <ma...@apache.org>
Authored: Tue Mar 29 17:06:42 2016 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Thu Mar 31 09:41:04 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/10f25aee/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 6e43496..e7aa321 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.2.6
+ * Dont mark sstables as repairing with sub range repairs (CASSANDRA-11451)
  * Fix use of NullUpdater for 2i during compaction (CASSANDRA-11450)
  * Notify when sstables change after cancelling compaction (CASSANDRA-11373)
  * cqlsh: COPY FROM should check that explicit column names are valid (CASSANDRA-11333)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10f25aee/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index ca02747..675d3cc 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -1176,12 +1176,15 @@ public class CompactionManager implements CompactionManagerMBean
                 }
             }
 
-            Set<SSTableReader> currentlyRepairing = ActiveRepairService.instance.currentlyRepairing(cfs.metadata.cfId, validator.desc.parentSessionId);
-
-            if (!Sets.intersection(currentlyRepairing, sstablesToValidate).isEmpty())
+            if (prs.isGlobal)
             {
-                logger.error("Cannot start multiple repair sessions over the same sstables");
-                throw new RuntimeException("Cannot start multiple repair sessions over the same sstables");
+                Set<SSTableReader> currentlyRepairing = ActiveRepairService.instance.currentlyRepairing(cfs.metadata.cfId, validator.desc.parentSessionId);
+
+                if (!Sets.intersection(currentlyRepairing, sstablesToValidate).isEmpty())
+                {
+                    logger.error("Cannot start multiple repair sessions over the same sstables");
+                    throw new RuntimeException("Cannot start multiple repair sessions over the same sstables");
+                }
             }
 
             sstables = Refs.tryRef(sstablesToValidate);
@@ -1191,8 +1194,8 @@ public class CompactionManager implements CompactionManagerMBean
                 throw new RuntimeException("Could not reference sstables");
             }
         }
-
-        prs.addSSTables(cfs.metadata.cfId, sstablesToValidate);
+        if (prs.isGlobal)
+            prs.addSSTables(cfs.metadata.cfId, sstablesToValidate);
 
         return sstables;
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10f25aee/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
index b8f8b65..8a0706a 100644
--- a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
+++ b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
@@ -108,16 +108,18 @@ public class RepairMessageVerbHandler implements IVerbHandler<RepairMessage>
                                     new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(Collections.singleton(repairingRange));
                         }
                     }, true); //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;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10f25aee/src/java/org/apache/cassandra/service/ActiveRepairService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/ActiveRepairService.java b/src/java/org/apache/cassandra/service/ActiveRepairService.java
index 9ac1186..39be051 100644
--- a/src/java/org/apache/cassandra/service/ActiveRepairService.java
+++ b/src/java/org/apache/cassandra/service/ActiveRepairService.java
@@ -426,7 +426,7 @@ public class ActiveRepairService
         private final Map<UUID, Set<SSTableReader>> sstableMap = new HashMap<>();
         private final long repairedAt;
         public final boolean isIncremental;
-        private final boolean isGlobal;
+        public final boolean isGlobal;
 
         public ParentRepairSession(List<ColumnFamilyStore> columnFamilyStores, Collection<Range<Token>> ranges, boolean isIncremental, boolean isGlobal, long repairedAt)
         {


[07/10] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

Posted by ma...@apache.org.
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6807c598
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6807c598
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6807c598

Branch: refs/heads/trunk
Commit: 6807c5984965b2689e077dbd1c4b9a3dd92a6d96
Parents: 202786e 10f25ae
Author: Marcus Eriksson <ma...@apache.org>
Authored: Thu Mar 31 09:42:22 2016 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Thu Mar 31 09:42:22 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/6807c598/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index ea0040f,e7aa321..449a2b5
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,17 -1,6 +1,18 @@@
 -2.2.6
 +3.0.5
 + * Upgrade ohc to 0.4.3
 + * Enable SO_REUSEADDR for JMX RMI server sockets (CASSANDRA-11093)
 + * Allocate merkletrees with the correct size (CASSANDRA-11390)
 + * Support streaming pre-3.0 sstables (CASSANDRA-10990)
 + * Add backpressure to compressed commit log (CASSANDRA-10971)
 + * SSTableExport supports secondary index tables (CASSANDRA-11330)
 + * Fix sstabledump to include missing info in debug output (CASSANDRA-11321)
 + * Establish and implement canonical bulk reading workload(s) (CASSANDRA-10331)
 + * Fix paging for IN queries on tables without clustering columns (CASSANDRA-11208)
 + * Remove recursive call from CompositesSearcher (CASSANDRA-11304)
 + * Fix filtering on non-primary key columns for queries without index (CASSANDRA-6377)
 + * Fix sstableloader fail when using materialized view (CASSANDRA-11275)
 +Merged from 2.2:
+  * Dont mark sstables as repairing with sub range repairs (CASSANDRA-11451)
 - * Fix use of NullUpdater for 2i during compaction (CASSANDRA-11450)
   * Notify when sstables change after cancelling compaction (CASSANDRA-11373)
   * cqlsh: COPY FROM should check that explicit column names are valid (CASSANDRA-11333)
   * Add -Dcassandra.start_gossip startup option (CASSANDRA-10809)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6807c598/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6807c598/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
index 703d187,8a0706a..eeefec4
--- a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
+++ b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
@@@ -95,20 -104,22 +95,22 @@@ public class RepairMessageVerbHandler i
                          public boolean apply(SSTableReader sstable)
                          {
                              return sstable != null &&
 -                                    !(sstable.partitioner instanceof LocalPartitioner) && // exclude SSTables from 2i
 -                                    new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(Collections.singleton(repairingRange));
 +                                   !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
- 
-                     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;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6807c598/src/java/org/apache/cassandra/service/ActiveRepairService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/ActiveRepairService.java
index 46d1e2c,39be051..b0fe91a
--- a/src/java/org/apache/cassandra/service/ActiveRepairService.java
+++ b/src/java/org/apache/cassandra/service/ActiveRepairService.java
@@@ -424,9 -426,9 +424,9 @@@ public class ActiveRepairServic
          private final Map<UUID, Set<SSTableReader>> sstableMap = new HashMap<>();
          private final long repairedAt;
          public final boolean isIncremental;
-         private final boolean isGlobal;
+         public final boolean isGlobal;
  
 -        public ParentRepairSession(List<ColumnFamilyStore> columnFamilyStores, Collection<Range<Token>> ranges, boolean isIncremental, boolean isGlobal, long repairedAt)
 +        public ParentRepairSession(List<ColumnFamilyStore> columnFamilyStores, Collection<Range<Token>> ranges, boolean isIncremental, long repairedAt, boolean isGlobal)
          {
              for (ColumnFamilyStore cfs : columnFamilyStores)
              {


[04/10] cassandra git commit: Dont mark sstables as repairing with sub range repairs

Posted by ma...@apache.org.
Dont mark sstables as repairing with sub range repairs

Patch by marcuse; reviewed by yukim for CASSANDRA-11451


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/10f25aee
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/10f25aee
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/10f25aee

Branch: refs/heads/trunk
Commit: 10f25aeebb22d43bf4f61413380f69f8e3ab3189
Parents: 1dac59d
Author: Marcus Eriksson <ma...@apache.org>
Authored: Tue Mar 29 17:06:42 2016 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Thu Mar 31 09:41:04 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/10f25aee/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 6e43496..e7aa321 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.2.6
+ * Dont mark sstables as repairing with sub range repairs (CASSANDRA-11451)
  * Fix use of NullUpdater for 2i during compaction (CASSANDRA-11450)
  * Notify when sstables change after cancelling compaction (CASSANDRA-11373)
  * cqlsh: COPY FROM should check that explicit column names are valid (CASSANDRA-11333)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10f25aee/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index ca02747..675d3cc 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -1176,12 +1176,15 @@ public class CompactionManager implements CompactionManagerMBean
                 }
             }
 
-            Set<SSTableReader> currentlyRepairing = ActiveRepairService.instance.currentlyRepairing(cfs.metadata.cfId, validator.desc.parentSessionId);
-
-            if (!Sets.intersection(currentlyRepairing, sstablesToValidate).isEmpty())
+            if (prs.isGlobal)
             {
-                logger.error("Cannot start multiple repair sessions over the same sstables");
-                throw new RuntimeException("Cannot start multiple repair sessions over the same sstables");
+                Set<SSTableReader> currentlyRepairing = ActiveRepairService.instance.currentlyRepairing(cfs.metadata.cfId, validator.desc.parentSessionId);
+
+                if (!Sets.intersection(currentlyRepairing, sstablesToValidate).isEmpty())
+                {
+                    logger.error("Cannot start multiple repair sessions over the same sstables");
+                    throw new RuntimeException("Cannot start multiple repair sessions over the same sstables");
+                }
             }
 
             sstables = Refs.tryRef(sstablesToValidate);
@@ -1191,8 +1194,8 @@ public class CompactionManager implements CompactionManagerMBean
                 throw new RuntimeException("Could not reference sstables");
             }
         }
-
-        prs.addSSTables(cfs.metadata.cfId, sstablesToValidate);
+        if (prs.isGlobal)
+            prs.addSSTables(cfs.metadata.cfId, sstablesToValidate);
 
         return sstables;
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10f25aee/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
index b8f8b65..8a0706a 100644
--- a/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
+++ b/src/java/org/apache/cassandra/repair/RepairMessageVerbHandler.java
@@ -108,16 +108,18 @@ public class RepairMessageVerbHandler implements IVerbHandler<RepairMessage>
                                     new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(Collections.singleton(repairingRange));
                         }
                     }, true); //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;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10f25aee/src/java/org/apache/cassandra/service/ActiveRepairService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/ActiveRepairService.java b/src/java/org/apache/cassandra/service/ActiveRepairService.java
index 9ac1186..39be051 100644
--- a/src/java/org/apache/cassandra/service/ActiveRepairService.java
+++ b/src/java/org/apache/cassandra/service/ActiveRepairService.java
@@ -426,7 +426,7 @@ public class ActiveRepairService
         private final Map<UUID, Set<SSTableReader>> sstableMap = new HashMap<>();
         private final long repairedAt;
         public final boolean isIncremental;
-        private final boolean isGlobal;
+        public final boolean isGlobal;
 
         public ParentRepairSession(List<ColumnFamilyStore> columnFamilyStores, Collection<Range<Token>> ranges, boolean isIncremental, boolean isGlobal, long repairedAt)
         {