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 2014/09/26 09:10:10 UTC
git commit: Support many sstables to be passed into sstablerepairedset
Repository: cassandra
Updated Branches:
refs/heads/cassandra-2.1 c65ef9af6 -> 2a12e0574
Support many sstables to be passed into sstablerepairedset
Patch by carlyeks; reviewed by marcuse for CASSANDRA-7995
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2a12e057
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2a12e057
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2a12e057
Branch: refs/heads/cassandra-2.1
Commit: 2a12e057464fff44d2d229fe2dc7bf5bcd6d7fc9
Parents: c65ef9a
Author: Carl Yeksigian <ca...@yeksigian.com>
Authored: Tue Sep 23 16:59:01 2014 -0400
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Fri Sep 26 09:08:16 2014 +0200
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../tools/SSTableRepairedAtSetter.java | 67 ++++++++++----------
2 files changed, 34 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2a12e057/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ce0e76a..0080b25 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.1.1
+ * Make sstablerepairedset take a list of files (CASSANDRA-7995)
* (cqlsh) Tab completeion for indexes on map keys (CASSANDRA-7972)
* (cqlsh) Fix UDT field selection in select clause (CASSANDRA-7891)
* Fix resource leak in event of corrupt sstable
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2a12e057/src/java/org/apache/cassandra/tools/SSTableRepairedAtSetter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/SSTableRepairedAtSetter.java b/src/java/org/apache/cassandra/tools/SSTableRepairedAtSetter.java
index 4dec32c..b37d3b4 100644
--- a/src/java/org/apache/cassandra/tools/SSTableRepairedAtSetter.java
+++ b/src/java/org/apache/cassandra/tools/SSTableRepairedAtSetter.java
@@ -17,25 +17,16 @@
*/
package org.apache.cassandra.tools;
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintStream;
+import java.io.*;
+import java.nio.charset.Charset;
import java.nio.file.Files;
+import java.nio.file.Paths;
import java.nio.file.attribute.FileTime;
-import java.util.EnumSet;
-import java.util.Map;
-import java.util.Set;
+import java.util.Arrays;
+import java.util.List;
-import org.apache.cassandra.config.DatabaseDescriptor;
-import org.apache.cassandra.db.ColumnFamilyStore;
-import org.apache.cassandra.db.Keyspace;
import org.apache.cassandra.io.sstable.Component;
import org.apache.cassandra.io.sstable.Descriptor;
-import org.apache.cassandra.io.sstable.metadata.CompactionMetadata;
-import org.apache.cassandra.io.sstable.metadata.MetadataComponent;
-import org.apache.cassandra.io.sstable.metadata.MetadataType;
-import org.apache.cassandra.io.sstable.metadata.StatsMetadata;
-import org.apache.cassandra.io.sstable.metadata.ValidationMetadata;
import org.apache.cassandra.service.ActiveRepairService;
/**
@@ -45,7 +36,7 @@ import org.apache.cassandra.service.ActiveRepairService;
*
* If you know you ran repair 2 weeks ago, you can do something like
*
- * for x in $(find /var/lib/cassandra/data/.../ -iname "*Data.db*" -mtime +14); do sstablerepairset --is-repaired $x; done
+ * sstablerepairset --is-repaired -f <(find /var/lib/cassandra/data/.../ -iname "*Data.db*" -mtime +14)
*
*/
public class SSTableRepairedAtSetter
@@ -53,47 +44,55 @@ public class SSTableRepairedAtSetter
/**
* @param args a list of sstables whose metadata we are changing
*/
- public static void main(String[] args) throws IOException
+ public static void main(final String[] args) throws IOException
{
PrintStream out = System.out;
if (args.length == 0)
{
out.println("This command should be run with Cassandra stopped!");
- out.println("Usage: sstablerepairedset [--is-repaired | --is-unrepaired] <sstable>");
+ out.println("Usage: sstablerepairedset [--is-repaired | --is-unrepaired] [-f <sstable-list> | <sstables>]");
System.exit(1);
}
- for (String s : args)
- System.out.println(s);
-
- if (args.length != 3 || !args[0].equals("--really-set") || (!args[1].equals("--is-repaired") && !args[1].equals("--is-unrepaired")))
+ if (args.length < 3 || !args[0].equals("--really-set") || (!args[1].equals("--is-repaired") && !args[1].equals("--is-unrepaired")))
{
out.println("This command should be run with Cassandra stopped, otherwise you will get very strange behavior");
out.println("Verify that Cassandra is not running and then execute the command like this:");
- out.println("Usage: sstablelevelreset --really-set [--is-repaired | --is-unrepaired] <sstable>");
+ out.println("Usage: sstablelevelreset --really-set [--is-repaired | --is-unrepaired] [-f <sstable-list> | <sstables>]");
System.exit(1);
}
boolean setIsRepaired = args[1].equals("--is-repaired");
- String fname = args[2];
- Descriptor descriptor = Descriptor.fromFilename(fname);
- if (descriptor.version.hasRepairedAt)
+ List<String> fileNames;
+ if (args[2].equals("-f"))
+ {
+ fileNames = Files.readAllLines(Paths.get(args[3]), Charset.defaultCharset());
+ }
+ else
{
- if (setIsRepaired)
+ fileNames = Arrays.asList(args).subList(2, args.length);
+ }
+
+ for (String fname: fileNames)
+ {
+ Descriptor descriptor = Descriptor.fromFilename(fname);
+ if (descriptor.version.hasRepairedAt)
{
- FileTime f = Files.getLastModifiedTime(new File(descriptor.filenameFor(Component.DATA)).toPath());
- descriptor.getMetadataSerializer().mutateRepairedAt(descriptor, f.toMillis());
+ if (setIsRepaired)
+ {
+ FileTime f = Files.getLastModifiedTime(new File(descriptor.filenameFor(Component.DATA)).toPath());
+ descriptor.getMetadataSerializer().mutateRepairedAt(descriptor, f.toMillis());
+ }
+ else
+ {
+ descriptor.getMetadataSerializer().mutateRepairedAt(descriptor, ActiveRepairService.UNREPAIRED_SSTABLE);
+ }
}
else
{
- descriptor.getMetadataSerializer().mutateRepairedAt(descriptor, ActiveRepairService.UNREPAIRED_SSTABLE);
+ System.err.println("SSTable " + fname + " does not have repaired property, run upgradesstables");
}
}
- else
- {
- out.println("SSTable "+fname+" does not have repaired property, run upgradesstables");
- }
-
}
}