[prev in list] [next in list] [prev in thread] [next in thread]
List: cassandra-commits
Subject: svn commit: r1040614 - in /cassandra/trunk: ./
From: jbellis () apache ! org
Date: 2010-11-30 16:24:25
Message-ID: 20101130162426.28D2623888E7 () eris ! apache ! org
[Download RAW message or body]
Author: jbellis
Date: Tue Nov 30 16:24:24 2010
New Revision: 1040614
URL: http://svn.apache.org/viewvc?rev=1040614&view=rev
Log:
merge from 0.7
Modified:
cassandra/trunk/ (props changed)
cassandra/trunk/CHANGES.txt
cassandra/trunk/README.txt
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java \
(props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java \
(props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java \
(props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java \
(props changed) cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java \
(props changed) cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
cassandra/trunk/src/java/org/apache/cassandra/cli/CliMain.java
cassandra/trunk/src/java/org/apache/cassandra/cli/CliUserHelp.java
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java
cassandra/trunk/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordWriter.java
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.java
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java
cassandra/trunk/src/java/org/apache/cassandra/net/MessageDeliveryTask.java
cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java
cassandra/trunk/src/java/org/apache/cassandra/net/sink/SinkManager.java
cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamingService.java
cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java
cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java
cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java
cassandra/trunk/src/java/org/apache/cassandra/tools/SSTableExport.java
cassandra/trunk/src/java/org/apache/cassandra/tools/SSTableImport.java
cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java
cassandra/trunk/test/resources/SimpleCF.json
cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java
cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java
cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java
Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Nov 30 16:24:24 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6:922689-1037847
-/cassandra/branches/cassandra-0.7:1026517-1038863
+/cassandra/branches/cassandra-0.6:922689-1040580
+/cassandra/branches/cassandra-0.7:1026517-1040581
/incubator/cassandra/branches/cassandra-0.3:774578-796573
/incubator/cassandra/branches/cassandra-0.4:810145-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5:888872-915439
Modified: cassandra/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Tue Nov 30 16:24:24 2010
@@ -10,7 +10,14 @@ dev
* fix add/remove index bugs in CFMetadata (CASSANDRA-1768)
* rebuild Strategy during system_update_keyspace (CASSANDRA-1762)
* cli updates prompt to ... in continuation lines (CASSANDRA-1770)
+ * support multiple Mutations per key in hadoop ColumnFamilyOutputFormat
+ (CASSANDRA-1774)
* improvements to Debian init script (CASSANDRA-1772)
+ * use local classloader to check for version.properties (CASSANDRA-1778)
+ * Validate that column names in column_metadata are valid for the
+ defined comparator, and decode properly in cli (CASSANDRA-1773)
+ * use cross-platform newlines in cli (CASSANDRA-1786)
+ * add ExpiringColumn support to sstable import/export (CASSANDRA-1754)
0.7.0-rc1
Modified: cassandra/trunk/README.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/README.txt?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/README.txt (original)
+++ cassandra/trunk/README.txt Tue Nov 30 16:24:24 2010
@@ -51,27 +51,27 @@ be sitting in front of a prompt...
Connected to: "Test Cluster" on localhost/9160
Welcome to cassandra CLI.
- Type 'help' or '?' for help. Type 'quit' or 'exit' to quit.
+ Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit.
[default@unknown]
-As the banner says, you can use 'help' or '?' to see what the CLI has to
-offer, and 'quit' or 'exit' when you've had enough fun. But lets try
+As the banner says, you can use 'help;' or '?' to see what the CLI has to
+offer, and 'quit;' or 'exit;' when you've had enough fun. But lets try
something slightly more interesting...
- [default@unknown] create keyspace Keyspace1
+ [default@unknown] create keyspace Keyspace1;
ece86bde-dc55-11df-8240-e700f669bcfc
- [default@unknown] use Keyspace1
+ [default@unknown] use Keyspace1;
Authenticated to keyspace: Keyspace1
- [default@Keyspace1] create column family Users with comparator=UTF8Type
+ [default@Keyspace1] create column family Users with comparator=UTF8Type;
737c7a71-dc56-11df-8240-e700f669bcfc
- [default@KS1] set Users[jsmith][first] = 'John'
+ [default@KS1] set Users[jsmith][first] = 'John';
Value inserted.
- [default@KS1] set Users[jsmith][last] = 'Smith'
+ [default@KS1] set Users[jsmith][last] = 'Smith';
Value inserted.
- [default@KS1] set Users[jsmith][age] = long(42)
+ [default@KS1] set Users[jsmith][age] = long(42);
Value inserted.
- [default@KS1] get Users[jsmith]
+ [default@KS1] get Users[jsmith];
=> (column=last, value=Smith, timestamp=1287604215498000)
=> (column=first, value=John, timestamp=1287604214111000)
=> (column=age, value=42, timestamp=1287604216661000)
@@ -81,7 +81,7 @@ If your session looks similar to what's
cluster is operational! But what exactly was all of that? Let's break it
down into pieces and see.
- set Users[jsmith][first] = 'John'
+ set Users[jsmith][first] = 'John';
\ \ \ \
\ \_ key \ \_ value
\ \_ column
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Nov 30 16:24:24 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1037847
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026517-1038863
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1040580
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026517-1040581
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java:810145-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/Cassandra.java:888872-903502
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Nov 30 16:24:24 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1037847
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026517-1038863
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1040580
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026517-1040581
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java:810145-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/Column.java:888872-903502
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Nov 30 16:24:24 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1037847
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026517-1038863
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1040580
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026517-1040581
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:810145-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:888872-903502
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Nov 30 16:24:24 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1037847
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026517-1038863
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1040580
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026517-1040581
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:810145-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:888872-903502
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Nov 30 16:24:24 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1037847
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026517-1038863
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1040580
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026517-1040581
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:810145-834239,834349-834350
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:888872-903502
Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java Tue Nov 30 \
16:24:24 2010 @@ -241,7 +241,7 @@ public class CliClient extends CliUserHe
SlicePredicate predicate = new \
SlicePredicate().setColumn_names(null).setSlice_range(range);
int count = \
thriftClient.get_count(ByteBuffer.wrap(key.getBytes(Charsets.UTF_8)), colParent, \
predicate, ConsistencyLevel.ONE);
- sessionState.out.printf("%d columns\n", count);
+ sessionState.out.printf("%d columns%n", count);
}
private void executeDelete(Tree statement)
@@ -319,7 +319,7 @@ public class CliClient extends CliUserHe
for (Column col : superColumn.getColumns())
{
validator = getValidatorForValue(cfDef, col.getName());
- sessionState.out.printf("\n (column=%s, value=%s, \
timestamp=%d)", formatSubcolumnName(keyspace, columnFamily, col), + \
sessionState.out.printf("%n (column=%s, value=%s, timestamp=%d)", \
formatSubcolumnName(keyspace, columnFamily, col),
validator.getString(col.value), col.timestamp);
}
@@ -329,7 +329,7 @@ public class CliClient extends CliUserHe
{
Column column = cosc.column;
validator = getValidatorForValue(cfDef, column.getName());
- sessionState.out.printf("=> (column=%s, value=%s, timestamp=%d)\n", \
formatColumnName(keyspace, columnFamily, column), + \
sessionState.out.printf("=> (column=%s, value=%s, timestamp=%d)%n", \
formatColumnName(keyspace, columnFamily, column),
validator.getString(column.value), \
column.timestamp); }
}
@@ -453,7 +453,7 @@ public class CliClient extends CliUserHe
}
// print results
- sessionState.out.printf("=> (column=%s, value=%s, timestamp=%d)\n",
+ sessionState.out.printf("=> (column=%s, value=%s, timestamp=%d)%n",
formatColumnName(keySpace, columnFamily, column), \
valueAsString, column.timestamp); }
@@ -1197,31 +1197,35 @@ public class CliClient extends CliUserHe
sessionState.out.println(" Replication Factor: " + \
ks_def.replication_factor); sessionState.out.println(" Column Families:");
+ boolean isSuper;
+
Collections.sort(ks_def.cf_defs, new CfDefNamesComparator());
for (CfDef cf_def : ks_def.cf_defs)
{
- sessionState.out.printf(" ColumnFamily: %s%s\n", cf_def.name, \
cf_def.column_type.equals("Super") ? " (Super)" : ""); + isSuper = \
cf_def.column_type.equals("Super"); + sessionState.out.printf(" \
ColumnFamily: %s%s%n", cf_def.name, isSuper ? " (Super)" : "");
if (cf_def.comment != null && !cf_def.comment.isEmpty())
{
- sessionState.out.printf(" \"%s\"\n", cf_def.comment);
+ sessionState.out.printf(" \"%s\"%n", cf_def.comment);
}
- sessionState.out.printf(" Columns sorted by: %s%s\n", \
cf_def.comparator_type, cf_def.column_type.equals("Super") ? "/" + \
cf_def.subcomparator_type : "");
- sessionState.out.printf(" Row cache size / save period: \
%s/%s\n", cf_def.row_cache_size, \
cf_def.row_cache_save_period_in_seconds);
- sessionState.out.printf(" Key cache size / save period: \
%s/%s\n", cf_def.key_cache_size, \
cf_def.key_cache_save_period_in_seconds);
- sessionState.out.printf(" Memtable thresholds: %s/%s/%s\n",
+ sessionState.out.printf(" Columns sorted by: %s%s%n", \
cf_def.comparator_type, cf_def.column_type.equals("Super") ? "/" + \
cf_def.subcomparator_type : ""); + sessionState.out.printf(" Row \
cache size / save period: %s/%s%n", cf_def.row_cache_size, \
cf_def.row_cache_save_period_in_seconds); + sessionState.out.printf(" \
Key cache size / save period: %s/%s%n", cf_def.key_cache_size, \
cf_def.key_cache_save_period_in_seconds); + sessionState.out.printf(" \
Memtable thresholds: %s/%s/%s%n",
cf_def.memtable_operations_in_millions, \
cf_def.memtable_throughput_in_mb, cf_def.memtable_flush_after_mins);
- sessionState.out.printf(" GC grace seconds: %s\n", \
cf_def.gc_grace_seconds);
- sessionState.out.printf(" Compaction min/max thresholds: \
%s/%s\n", cf_def.min_compaction_threshold, \
cf_def.max_compaction_threshold);
- sessionState.out.printf(" Read repair chance: %s\n", \
cf_def.read_repair_chance); + sessionState.out.printf(" GC grace \
seconds: %s%n", cf_def.gc_grace_seconds); + sessionState.out.printf(" \
Compaction min/max thresholds: %s/%s%n", cf_def.min_compaction_threshold, \
cf_def.max_compaction_threshold); + sessionState.out.printf(" \
Read repair chance: %s%n", cf_def.read_repair_chance);
if (cf_def.getColumn_metadataSize() != 0)
{
String leftSpace = " ";
String columnLeftSpace = leftSpace + " ";
- AbstractType columnNameValidator = \
getFormatTypeForColumn(cf_def.comparator_type); + AbstractType \
columnNameValidator = getFormatTypeForColumn(isSuper ? cf_def.subcomparator_type + \
: cf_def.comparator_type);
sessionState.out.println(leftSpace + "Column Metadata:");
for (ColumnDef columnDef : cf_def.getColumn_metadata())
@@ -1789,8 +1793,8 @@ public class CliClient extends CliUserHe
{
String keyName = (keyComparator == null) ? ByteBufferUtil.string(ks.key, \
Charsets.UTF_8) : keyComparator.getString(ks.key);
- sessionState.out.printf("-------------------\n");
- sessionState.out.printf("RowKey: %s\n", keyName);
+ sessionState.out.printf("-------------------%n");
+ sessionState.out.printf("RowKey: %s%n", keyName);
Iterator<ColumnOrSuperColumn> iterator = ks.getColumnsIterator();
while (iterator.hasNext())
@@ -1802,7 +1806,7 @@ public class CliClient extends CliUserHe
Column col = columnOrSuperColumn.column;
validator = getValidatorForValue(columnFamilyDef, \
col.getName());
- sessionState.out.printf("=> (column=%s, value=%s, \
timestamp=%d)\n", + sessionState.out.printf("=> (column=%s, \
value=%s, timestamp=%d)%n",
formatColumnName(keySpace, columnFamilyName, \
col), validator.getString(col.value), col.timestamp); }
else if (columnOrSuperColumn.super_column != null)
@@ -1814,7 +1818,7 @@ public class CliClient extends CliUserHe
{
validator = getValidatorForValue(columnFamilyDef, \
col.getName());
- sessionState.out.printf("\n (column=%s, value=%s, \
timestamp=%d)", + sessionState.out.printf("%n (column=%s, \
value=%s, timestamp=%d)",
formatSubcolumnName(keySpace, \
columnFamilyName, col), validator.getString(col.value), col.timestamp); }
@@ -1823,7 +1827,7 @@ public class CliClient extends CliUserHe
}
}
- sessionState.out.printf("\n%d Row%s Returned.\n", slices.size(), \
(slices.size() > 1 ? "s" : "")); + sessionState.out.printf("%n%d Row%s \
Returned.%n", slices.size(), (slices.size() > 1 ? "s" : "")); }
// returnsub-columnmn name in human-readable format
Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliMain.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliMain.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliMain.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliMain.java Tue Nov 30 \
16:24:24 2010 @@ -325,7 +325,12 @@ public class CliMain
{
prompt = (inCompoundStatement) ? "...\t" : getPrompt(cliClient);
- line = reader.readLine(prompt).trim();
+ line = reader.readLine(prompt);
+
+ if (line == null)
+ return;
+
+ line = line.trim();
if (line.isEmpty())
continue;
Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliUserHelp.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliUserHelp.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliUserHelp.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliUserHelp.java Tue Nov 30 \
16:24:24 2010 @@ -172,7 +172,7 @@ public class CliUserHelp {
state.out.println("attributes. Note that you must be using a \
keyspace.\n"); state.out.println("valid attributes are:");
for (ColumnFamilyArgument argument : ColumnFamilyArgument.values())
- state.out.printf(" - %s: %s\n", \
argument.toString().toLowerCase(), argumentExplanations.get(argument)); + \
state.out.printf(" - %s: %s%n", argument.toString().toLowerCase(), \
argumentExplanations.get(argument));
state.out.println(" - column_metadata: Metadata which describes \
columns of column family.");
state.out.println(" Supported format is [{ k:v, k:v, ... }, { \
... }, ...]");
state.out.println(" Valid attributes: column_name, \
validation_class (see comparator),"); @@ -197,7 +197,7 @@ public class CliUserHelp {
{
if (argument == ColumnFamilyArgument.COMPARATOR || argument == \
ColumnFamilyArgument.SUBCOMPARATOR) continue;
- state.out.printf(" - %s: %s\n", \
argument.toString().toLowerCase(), argumentExplanations.get(argument)); + \
state.out.printf(" - %s: %s%n", argument.toString().toLowerCase(), \
argumentExplanations.get(argument)); }
state.out.println(" - column_metadata: Metadata which describes \
columns of column family.");
state.out.println(" Supported format is [{ k:v, k:v, ... }, { \
... }, ...]");
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java \
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Tue Nov \
30 16:24:24 2010 @@ -215,7 +215,6 @@ public class ColumnFamilyStore implement
// scan for sstables corresponding to this cf and load them
ssTables = new SSTableTracker(table.name, columnFamilyName);
Set<DecoratedKey> savedKeys = \
readSavedCache(DatabaseDescriptor.getSerializedKeyCachePath(table.name, \
columnFamilyName));
- logger.info("read " + savedKeys.size() + " from saved key cache");
List<SSTableReader> sstables = new ArrayList<SSTableReader>();
for (Map.Entry<Descriptor,Set<Component>> sstableFiles : files(table.name, \
columnFamilyName, false).entrySet()) {
@@ -264,14 +263,13 @@ public class ColumnFamilyStore implement
protected Set<DecoratedKey> readSavedCache(File path)
{
Set<DecoratedKey> keys = new TreeSet<DecoratedKey>();
- try
+ if (path.exists())
{
- long start = System.currentTimeMillis();
-
- if (path.exists())
+ try
{
- if (logger.isDebugEnabled())
- logger.debug(String.format("reading saved cache from %s", \
path)); + long start = System.currentTimeMillis();
+
+ logger.info(String.format("reading saved cache %s", path));
ObjectInputStream in = new ObjectInputStream(new \
BufferedInputStream(new FileInputStream(path))); while (in.available() > 0)
{
@@ -282,13 +280,13 @@ public class ColumnFamilyStore implement
}
in.close();
if (logger.isDebugEnabled())
- logger.debug(String.format("completed reading (%d ms; %d keys) \
from saved cache at %s", + logger.debug(String.format("completed \
reading (%d ms; %d keys) saved cache %s",
System.currentTimeMillis() - start, \
keys.size(), path)); }
- }
- catch (IOException ioe)
- {
- logger.warn(String.format("error reading saved cache at %s", \
path.getAbsolutePath()), ioe); + catch (IOException ioe)
+ {
+ logger.warn(String.format("error reading saved cache %s", \
path.getAbsolutePath()), ioe); + }
}
return keys;
}
@@ -504,18 +502,20 @@ public class ColumnFamilyStore implement
// must be called after all sstables are loaded since row cache merges all row \
versions public void initRowCache()
{
- String msgSuffix = String.format(" row cache for %s of %s", columnFamily, \
table.name);
int rowCacheSavePeriodInSeconds = \
DatabaseDescriptor.getTableMetaData(table.name).get(columnFamily).getRowCacheSavePeriodInSeconds();
int keyCacheSavePeriodInSeconds = \
DatabaseDescriptor.getTableMetaData(table.name).get(columnFamily).getKeyCacheSavePeriodInSeconds();
long start = System.currentTimeMillis();
- logger.info(String.format("loading%s", msgSuffix));
// sort the results on read because there are few reads and many writes and \
reads only happen at startup
Set<DecoratedKey> savedKeys = \
readSavedCache(DatabaseDescriptor.getSerializedRowCachePath(table.name, \
columnFamily)); for (DecoratedKey key : savedKeys)
cacheRow(key);
- logger.info(String.format("completed loading (%d ms; %d keys) %s",
- System.currentTimeMillis()-start, \
ssTables.getRowCache().getSize(), msgSuffix)); + if \
(ssTables.getRowCache().getSize() > 0) + \
logger.info(String.format("completed loading (%d ms; %d keys) row cache for %s.%s", + \
System.currentTimeMillis()-start, + \
ssTables.getRowCache().getSize(), + table.name,
+ columnFamily));
if (rowCacheSavePeriodInSeconds > 0)
{
cacheSavingExecutor.scheduleWithFixedDelay(rowCacheSaverTask,
@@ -594,7 +594,7 @@ public class ColumnFamilyStore implement
*/
public String getFlushPath()
{
- long guessedSize = 2 * memsize.value() * 1024*1024; // 2* adds room for \
keys, column indexes + long guessedSize = 2L * memsize.value() * 1024*1024; // \
2* adds room for keys, column indexes
String location = DatabaseDescriptor.getDataFileLocationForTable(table.name, \
guessedSize); if (location == null)
throw new RuntimeException("Insufficient disk space to flush");
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java Tue Nov 30 \
16:24:24 2010 @@ -296,6 +296,6 @@ public class Memtable implements Compara
public boolean isExpired()
{
- return System.currentTimeMillis() > creationTime + \
cfs.getMemtableFlushAfterMins() * 60 * 1000; + return \
System.currentTimeMillis() > creationTime + cfs.getMemtableFlushAfterMins() * 60 * \
1000L; }
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordWriter.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordWriter.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordWriter.java \
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordWriter.java \
Tue Nov 30 16:24:24 2010 @@ -319,8 +319,14 @@ implements \
org.apache.hadoop.mapred.Reco
Map<ByteBuffer, Map<String, List<Mutation>>> batch = new \
HashMap<ByteBuffer, Map<String, List<Mutation>>>(); while (batch.size() < \
batchThreshold) {
- Map<String, List<Mutation>> subBatch = \
Collections.singletonMap(columnFamily, \
Arrays.asList(mutation.right));
- batch.put(mutation.left, subBatch);
+ Map<String, List<Mutation>> subBatch = batch.get(mutation.left);
+ if (subBatch == null)
+ {
+ subBatch = Collections.singletonMap(columnFamily, \
(List<Mutation>) new ArrayList<Mutation>()); + \
batch.put(mutation.left, subBatch); + }
+
+ subBatch.get(columnFamily).add(mutation.right);
if ((mutation = queue.poll()) == null)
break;
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.java \
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/Descriptor.java Tue Nov \
30 16:24:24 2010 @@ -82,12 +82,8 @@ public class Descriptor
{
return filenameFor(component.name());
}
-
- /**
- * @param suffix A component suffix, such as 'Data.db'/'Index.db'/etc
- * @return A filename for this descriptor with the given suffix.
- */
- public String filenameFor(String suffix)
+
+ private String baseFilename()
{
StringBuilder buff = new StringBuilder();
buff.append(directory).append(File.separatorChar);
@@ -96,12 +92,20 @@ public class Descriptor
buff.append(SSTable.TEMPFILE_MARKER).append("-");
if (!LEGACY_VERSION.equals(version))
buff.append(version).append("-");
- buff.append(generation).append("-");
- buff.append(suffix);
+ buff.append(generation);
return buff.toString();
}
/**
+ * @param suffix A component suffix, such as 'Data.db'/'Index.db'/etc
+ * @return A filename for this descriptor with the given suffix.
+ */
+ public String filenameFor(String suffix)
+ {
+ return baseFilename() + "-" + suffix;
+ }
+
+ /**
* @see #fromFilename(File directory, String name)
*/
public static Descriptor fromFilename(String filename)
@@ -177,7 +181,7 @@ public class Descriptor
@Override
public String toString()
{
- return this.filenameFor("<>");
+ return baseFilename();
}
@Override
Modified: cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java \
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableReader.java Tue \
Nov 30 16:24:24 2010 @@ -167,7 +167,7 @@ public class SSTableReader extends SSTab
assert partitioner != null;
long start = System.currentTimeMillis();
- logger.info("Sampling index for " + descriptor);
+ logger.info("Opening " + descriptor);
EstimatedHistogram rowSizes;
EstimatedHistogram columnCounts;
Modified: cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java \
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableTracker.java Tue \
Nov 30 16:24:24 2010 @@ -71,8 +71,8 @@ public class SSTableTracker implements I
public void saveCache(JMXInstrumentedCache<K, V> cache, File savedCachePath, \
Function<K, ByteBuffer> converter) throws IOException {
long start = System.currentTimeMillis();
- String msgSuffix = " " + savedCachePath.getName() + " for " + cfname + " \
of " + ksname;
- logger.debug("saving" + msgSuffix);
+ String msgSuffix = savedCachePath.getName() + " for " + cfname + " of " \
+ ksname; + logger.info("saving " + msgSuffix);
int count = 0;
File tmpFile = File.createTempFile(savedCachePath.getName(), null, \
savedCachePath.getParentFile()); FileOutputStream fout = new \
FileOutputStream(tmpFile); @@ -91,7 +91,7 @@ public class SSTableTracker implements I
if (!tmpFile.renameTo(savedCachePath))
throw new IOException("Unable to rename cache to " + \
savedCachePath); if (logger.isDebugEnabled())
- logger.debug("saved " + count + " keys in " + \
(System.currentTimeMillis() - start) + " ms from" + msgSuffix); + \
logger.debug("saved " + count + " keys in " + (System.currentTimeMillis() - start) + \
" ms from " + msgSuffix); }
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/net/MessageDeliveryTask.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/net/MessageDeliveryTask.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/net/MessageDeliveryTask.java \
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/net/MessageDeliveryTask.java Tue \
Nov 30 16:24:24 2010 @@ -33,6 +33,7 @@ public class MessageDeliveryTask impleme
public MessageDeliveryTask(Message message)
{
+ assert message != null;
message_ = message;
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java \
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java Tue Nov \
30 16:24:24 2010 @@ -305,7 +305,7 @@ public class MessagingService implements
}
// message sinks are a testing hook
- Message processedMessage = SinkManager.processClientMessageSink(message, \
to); + Message processedMessage = SinkManager.processClientMessage(message, \
to); if (processedMessage == null)
{
return;
@@ -385,11 +385,13 @@ public class MessagingService implements
public static void receive(Message message)
{
- message = SinkManager.processServerMessageSink(message, null);
+ message = SinkManager.processServerMessage(message);
+ if (message == null)
+ return;
Runnable runnable = new MessageDeliveryTask(message);
ExecutorService stage = StageManager.getStage(message.getMessageType());
- assert stage != null;
+ assert stage != null : "No stage for message type " + \
message.getMessageType(); stage.execute(runnable);
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/net/sink/SinkManager.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/net/sink/SinkManager.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/net/sink/SinkManager.java \
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/net/sink/SinkManager.java Tue Nov \
30 16:24:24 2010 @@ -18,56 +18,50 @@
package org.apache.cassandra.net.sink;
-import java.util.*;
-import java.io.IOException;
-
import java.net.InetAddress;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.cassandra.net.Message;
public class SinkManager
{
- private static LinkedList<IMessageSink> messageSinks_ = new \
LinkedList<IMessageSink>(); + private static List<IMessageSink> sinks = new \
ArrayList<IMessageSink>();
- public static boolean isInitialized()
+ public static void add(IMessageSink ms)
{
- return ( messageSinks_.size() > 0 );
+ sinks.add(ms);
}
- public static void addMessageSink(IMessageSink ms)
+ public static void clear()
{
- messageSinks_.addLast(ms);
- }
-
- public static void clearSinks(){
- messageSinks_.clear();
+ sinks.clear();
}
- public static Message processClientMessageSink(Message message, InetAddress to)
+ public static Message processClientMessage(Message message, InetAddress to)
{
- ListIterator<IMessageSink> li = messageSinks_.listIterator();
- while ( li.hasNext() )
+ if (sinks.isEmpty())
+ return message;
+
+ for (IMessageSink ms : sinks)
{
- IMessageSink ms = li.next();
message = ms.handleMessage(message, to);
- if ( message == null )
- {
+ if (message == null)
return null;
- }
}
return message;
}
- public static Message processServerMessageSink(Message message, InetAddress to)
+ public static Message processServerMessage(Message message)
{
- ListIterator<IMessageSink> li = \
messageSinks_.listIterator(messageSinks_.size());
- while ( li.hasPrevious() )
+ if (sinks.isEmpty())
+ return message;
+
+ for (IMessageSink ms : sinks)
{
- IMessageSink ms = li.previous();
- message = ms.handleMessage(message, to);
- if ( message == null )
- {
+ message = ms.handleMessage(message, null);
+ if (message == null)
return null;
- }
}
return message;
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamingService.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamingService.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamingService.java \
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamingService.java Tue \
Nov 30 16:24:24 2010 @@ -56,19 +56,19 @@ public class StreamingService implements
sb.append("Receiving from:\n");
for (InetAddress source : StreamInSession.getSources())
{
- sb.append(String.format(" %s:\n", source.getHostAddress()));
+ sb.append(String.format(" %s:%n", source.getHostAddress()));
for (PendingFile pf : StreamInSession.getIncomingFiles(source))
{
- sb.append(String.format(" %s\n", pf.toString()));
+ sb.append(String.format(" %s%n", pf.toString()));
}
}
- sb.append("Sending to:\n");
+ sb.append("Sending to:%n");
for (InetAddress dest : StreamOutSession.getDestinations())
{
- sb.append(String.format(" %s:\n", dest.getHostAddress()));
+ sb.append(String.format(" %s:%n", dest.getHostAddress()));
for (PendingFile pf : StreamOutSession.getOutgoingFiles(dest))
{
- sb.append(String.format(" %s\n", pf.toString()));
+ sb.append(String.format(" %s%n", pf.toString()));
}
}
return sb.toString();
Modified: cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java \
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java Tue Nov \
30 16:24:24 2010 @@ -704,6 +704,7 @@ public class CassandraServer implements
public String system_add_column_family(CfDef cf_def) throws \
InvalidRequestException, TException {
state().hasColumnFamilyListAccess(Permission.WRITE);
+ ThriftValidation.validateCfDef(cf_def);
try
{
applyMigrationOnStage(new AddColumnFamily(convertToCFMetaData(cf_def)));
Modified: cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java \
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java Tue \
Nov 30 16:24:24 2010 @@ -25,6 +25,7 @@ import java.util.Arrays;
import java.util.Comparator;
import java.util.Set;
+import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.ColumnFamilyType;
@@ -377,4 +378,39 @@ public class ThriftValidation
}
throw new InvalidRequestException("No indexed columns present in index \
clause with operator EQ"); }
+
+ public static void validateCfDef(CfDef cf_def) throws InvalidRequestException
+ {
+ try
+ {
+ DatabaseDescriptor.getComparator(cf_def.comparator_type);
+ DatabaseDescriptor.getComparator(cf_def.subcomparator_type);
+ DatabaseDescriptor.getComparator(cf_def.default_validation_class);
+
+ if (cf_def.column_metadata == null)
+ return;
+
+ AbstractType comparator = cf_def.subcomparator_type == null
+ ? \
DatabaseDescriptor.getComparator(cf_def.comparator_type) + \
: DatabaseDescriptor.getComparator(cf_def.subcomparator_type); + for \
(ColumnDef c : cf_def.column_metadata) + {
+ DatabaseDescriptor.getComparator(c.validation_class);
+
+ try
+ {
+ comparator.validate(c.name);
+ }
+ catch (MarshalException e)
+ {
+ throw new InvalidRequestException(String.format("Column name %s \
is not valid for comparator %s", + \
FBUtilities.bytesToHex(c.name), cf_def.comparator_type)); + }
+ }
+ }
+ catch (ConfigurationException e)
+ {
+ throw new InvalidRequestException(e.getMessage());
+ }
+ }
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java Tue Nov 30 \
16:24:24 2010 @@ -97,11 +97,11 @@ public class NodeCmd {
Collection<String> leavingNodes = probe.getLeavingNodes();
Map<String, String> loadMap = probe.getLoadMap();
- outs.printf("%-16s%-7s%-8s%-16s%-8s%-44s\n", "Address", "Status", "State", \
"Load", "Owns", "Token"); + outs.printf("%-16s%-7s%-8s%-16s%-8s%-44s%n", \
"Address", "Status", "State", "Load", "Owns", "Token");
// show pre-wrap token twice so you can always read a node's range as
// (previous line token, current line token]
if (sortedTokens.size() > 1)
- outs.printf("%-16s%-7s%-8s%-16s%-8s%-44s\n", "", "", "", "", "", \
sortedTokens.get(sortedTokens.size() - 1)); + \
outs.printf("%-16s%-7s%-8s%-16s%-8s%-44s%n", "", "", "", "", "", \
sortedTokens.get(sortedTokens.size() - 1));
// Calculate per-token ownership of the ring
Map<Token, Float> ownerships = probe.getOwnership();
@@ -123,13 +123,13 @@ public class NodeCmd {
? loadMap.get(primaryEndpoint)
: "?";
String owns = new \
DecimalFormat("##0.00%").format(ownerships.get(token));
- outs.printf("%-16s%-7s%-8s%-16s%-8s%-44s\n", primaryEndpoint, status, \
state, load, owns, token); + outs.printf("%-16s%-7s%-8s%-16s%-8s%-44s%n", \
primaryEndpoint, status, state, load, owns, token); }
}
public void printThreadPoolStats(PrintStream outs)
{
- outs.printf("%-25s%10s%10s%15s\n", "Pool Name", "Active", "Pending", \
"Completed"); + outs.printf("%-25s%10s%10s%15s%n", "Pool Name", "Active", \
"Pending", "Completed");
Iterator<Map.Entry<String, IExecutorMBean>> threads = \
probe.getThreadPoolMBeanProxies(); while (threads.hasNext())
@@ -137,7 +137,7 @@ public class NodeCmd {
Entry<String, IExecutorMBean> thread = threads.next();
String poolName = thread.getKey();
IExecutorMBean threadPoolProxy = thread.getValue();
- outs.printf("%-25s%10s%10s%15s\n",
+ outs.printf("%-25s%10s%10s%15s%n",
poolName, threadPoolProxy.getActiveCount(), \
threadPoolProxy.getPendingTasks(), threadPoolProxy.getCompletedTasks()); }
}
@@ -150,18 +150,18 @@ public class NodeCmd {
public void printInfo(PrintStream outs)
{
outs.println(probe.getToken());
- outs.printf("%-17s: %s\n", "Load", probe.getLoadString());
- outs.printf("%-17s: %s\n", "Generation No", \
probe.getCurrentGenerationNumber()); + outs.printf("%-17s: %s%n", "Load", \
probe.getLoadString()); + outs.printf("%-17s: %s%n", "Generation No", \
probe.getCurrentGenerationNumber());
// Uptime
long secondsUp = probe.getUptime() / 1000;
- outs.printf("%-17s: %d\n", "Uptime (seconds)", secondsUp);
+ outs.printf("%-17s: %d%n", "Uptime (seconds)", secondsUp);
// Memory usage
MemoryUsage heapUsage = probe.getHeapMemoryUsage();
double memUsed = (double)heapUsage.getUsed() / (1024 * 1024);
double memMax = (double)heapUsage.getMax() / (1024 * 1024);
- outs.printf("%-17s: %.2f / %.2f\n", "Heap Memory (MB)", memUsed, memMax);
+ outs.printf("%-17s: %.2f / %.2f%n", "Heap Memory (MB)", memUsed, memMax);
}
public void printReleaseVersion(PrintStream outs)
@@ -171,7 +171,7 @@ public class NodeCmd {
public void printNetworkStats(final InetAddress addr, PrintStream outs)
{
- outs.printf("Mode: %s\n", probe.getOperationMode());
+ outs.printf("Mode: %s%n", probe.getOperationMode());
Set<InetAddress> hosts = addr == null ? probe.getStreamDestinations() : new \
HashSet<InetAddress>(){{add(addr);}}; if (hosts.size() == 0)
outs.println("Not sending any streams.");
@@ -182,18 +182,18 @@ public class NodeCmd {
List<String> files = probe.getFilesDestinedFor(host);
if (files.size() > 0)
{
- outs.printf("Streaming to: %s\n", host);
+ outs.printf("Streaming to: %s%n", host);
for (String file : files)
- outs.printf(" %s\n", file);
+ outs.printf(" %s%n", file);
}
else
{
- outs.printf(" Nothing streaming to %s\n", host);
+ outs.printf(" Nothing streaming to %s%n", host);
}
}
catch (IOException ex)
{
- outs.printf(" Error retrieving file data for %s\n", host);
+ outs.printf(" Error retrieving file data for %s%n", host);
}
}
@@ -207,18 +207,18 @@ public class NodeCmd {
List<String> files = probe.getIncomingFiles(host);
if (files.size() > 0)
{
- outs.printf("Streaming from: %s\n", host);
+ outs.printf("Streaming from: %s%n", host);
for (String file : files)
- outs.printf(" %s\n", file);
+ outs.printf(" %s%n", file);
}
else
{
- outs.printf(" Nothing streaming from %s\n", host);
+ outs.printf(" Nothing streaming from %s%n", host);
}
}
catch (IOException ex)
{
- outs.printf(" Error retrieving file data for %s\n", host);
+ outs.printf(" Error retrieving file data for %s%n", host);
}
}
@@ -226,7 +226,7 @@ public class NodeCmd {
outs.printf("%-25s", "Pool Name");
outs.printf("%10s", "Active");
outs.printf("%10s", "Pending");
- outs.printf("%15s\n", "Completed");
+ outs.printf("%15s%n", "Completed");
int pending;
long completed;
@@ -237,7 +237,7 @@ public class NodeCmd {
completed = 0;
for (long n : ms.getCommandCompletedTasks().values())
completed += n;
- outs.printf("%-25s%10s%10s%15s\n", "Commands", "n/a", pending, completed);
+ outs.printf("%-25s%10s%10s%15s%n", "Commands", "n/a", pending, completed);
pending = 0;
for (int n : ms.getResponsePendingTasks().values())
@@ -245,7 +245,7 @@ public class NodeCmd {
completed = 0;
for (long n : ms.getResponseCompletedTasks().values())
completed += n;
- outs.printf("%-25s%10s%10s%15s\n", "Responses", "n/a", pending, completed);
+ outs.printf("%-25s%10s%10s%15s%n", "Responses", "n/a", pending, completed);
}
public void printColumnFamilyStats(PrintStream outs)
Modified: cassandra/trunk/src/java/org/apache/cassandra/tools/SSTableExport.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/tools/SSTableExport.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/tools/SSTableExport.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/tools/SSTableExport.java Tue Nov 30 \
16:24:24 2010 @@ -31,6 +31,7 @@ import org.apache.cassandra.config.Datab
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.DecoratedKey;
import org.apache.cassandra.db.IColumn;
+import org.apache.cassandra.db.ExpiringColumn;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.dht.IPartitioner;
import org.apache.cassandra.io.sstable.*;
@@ -95,6 +96,12 @@ public class SSTableExport
json.append(column.timestamp());
json.append(", ");
json.append(column.isMarkedForDelete());
+ if (column instanceof ExpiringColumn) {
+ json.append(", ");
+ json.append(((ExpiringColumn)column).getTimeToLive());
+ json.append(", ");
+ json.append(((ExpiringColumn)column).getLocalDeletionTime());
+ }
json.append("]");
if (iter.hasNext())
json.append(", ");
Modified: cassandra/trunk/src/java/org/apache/cassandra/tools/SSTableImport.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/tools/SSTableImport.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/tools/SSTableImport.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/tools/SSTableImport.java Tue Nov 30 \
16:24:24 2010 @@ -28,6 +28,7 @@ import org.apache.cassandra.config.Confi
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.DecoratedKey;
import org.apache.cassandra.db.SuperColumn;
+import org.apache.cassandra.db.ExpiringColumn;
import org.apache.cassandra.db.ColumnFamilyType;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.dht.IPartitioner;
@@ -68,15 +69,22 @@ public class SSTableImport
private String value;
private long timestamp;
private boolean isDeleted;
+ private int ttl;
+ private int localExpirationTime;
private JsonColumn(Object obj) throws ClassCastException
{
JSONArray colSpec = (JSONArray)obj;
- assert colSpec.size() == 4;
+ assert colSpec.size() == 4 || colSpec.size() == 6;
name = (String)colSpec.get(0);
value = (String)colSpec.get(1);
timestamp = (Long)colSpec.get(2);
isDeleted = (Boolean)colSpec.get(3);
+ if (colSpec.size() == 6)
+ {
+ ttl = (int)(long)((Long)colSpec.get(4));
+ localExpirationTime = (int)(long)((Long)colSpec.get(5));
+ }
}
}
@@ -94,9 +102,16 @@ public class SSTableImport
{
JsonColumn col = new JsonColumn(c);
QueryPath path = new QueryPath(cfm.cfName, null, \
ByteBuffer.wrap(hexToBytes(col.name)));
- if (col.isDeleted) {
+ if (col.ttl > 0)
+ {
+ cfamily.addColumn(null, new \
ExpiringColumn(ByteBuffer.wrap(hexToBytes(col.name)), \
ByteBuffer.wrap(hexToBytes(col.value)), col.timestamp, col.ttl, \
col.localExpirationTime)); + }
+ else if (col.isDeleted)
+ {
cfamily.addTombstone(path, ByteBuffer.wrap(hexToBytes(col.value)), \
col.timestamp);
- } else {
+ }
+ else
+ {
cfamily.addColumn(path, ByteBuffer.wrap(hexToBytes(col.value)), \
col.timestamp); }
}
@@ -124,9 +139,16 @@ public class SSTableImport
{
JsonColumn col = new JsonColumn(c);
QueryPath path = new QueryPath(cfm.cfName, superName, \
ByteBuffer.wrap(hexToBytes(col.name)));
- if (col.isDeleted) {
+ if (col.ttl > 0)
+ {
+ cfamily.addColumn(superName, new \
ExpiringColumn(ByteBuffer.wrap(hexToBytes(col.name)), \
ByteBuffer.wrap(hexToBytes(col.value)), col.timestamp, col.ttl, \
col.localExpirationTime)); + }
+ else if (col.isDeleted)
+ {
cfamily.addTombstone(path, \
ByteBuffer.wrap(hexToBytes(col.value)), col.timestamp);
- } else {
+ }
+ else
+ {
cfamily.addColumn(path, ByteBuffer.wrap(hexToBytes(col.value)), \
col.timestamp); }
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java Tue Nov 30 \
16:24:24 2010 @@ -517,7 +517,7 @@ public class FBUtilities
{
try
{
- InputStream in = \
ClassLoader.getSystemClassLoader().getResourceAsStream("org/apache/cassandra/config/version.properties");
+ InputStream in = \
FBUtilities.class.getClassLoader().getResourceAsStream("org/apache/cassandra/config/version.properties");
Properties props = new Properties();
props.load(in);
return props.getProperty("CassandraVersion");
@@ -573,13 +573,13 @@ public class FBUtilities
}
catch (NoSuchFieldException e)
{
- ConfigurationException ex = new ConfigurationException("Invalid \
comparator: must define a public static instance field."); + \
ConfigurationException ex = new ConfigurationException("Invalid comparator " + \
compareWith + " : must define a public static instance field."); ex.initCause(e);
throw ex;
}
catch (IllegalAccessException e)
{
- ConfigurationException ex = new ConfigurationException("Invalid \
comparator: must define a public static instance field."); + \
ConfigurationException ex = new ConfigurationException("Invalid comparator " + \
compareWith + " : must define a public static instance field."); ex.initCause(e);
throw ex;
}
@@ -599,7 +599,7 @@ public class FBUtilities
}
catch (ClassNotFoundException e)
{
- throw new ConfigurationException(String.format("Unable to find %s class \
'%s': is the CLASSPATH set correctly?", readable, classname)); + throw new \
ConfigurationException(String.format("Unable to find %s class '%s'", readable, \
classname)); }
}
Modified: cassandra/trunk/test/resources/SimpleCF.json
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/resources/SimpleCF.json?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/test/resources/SimpleCF.json (original)
+++ cassandra/trunk/test/resources/SimpleCF.json Tue Nov 30 16:24:24 2010
@@ -1,4 +1,4 @@
{
- "726f7741": [["636f6c4141", "76616c4141", 1, false], ["636f6c4142", "76616c4142", \
1, false]], + "726f7741": [["636f6c4141", "76616c4141", 1, false], ["636f6c4142", \
"76616c4142", 1, false], ["636f6c4143", "76616c4143", 1, false, 42, 2000000000 ]], \
"726f7742": [["636f6c4241", "76616c4241", 1, false], ["636f6c4242", "76616c4242", 1, \
false]] }
Modified: cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java Tue Nov 30 \
16:24:24 2010 @@ -83,7 +83,7 @@ public class RemoveTest extends CleanupH
@After
public void tearDown()
{
- SinkManager.clearSinks();
+ SinkManager.clear();
MessagingService.shutdown();
ss.setPartitionerUnsafe(oldPartitioner);
}
@@ -111,7 +111,7 @@ public class RemoveTest extends CleanupH
final String token = \
partitioner.getTokenFactory().toString(endpointTokens.get(5)); ReplicationSink rSink \
= new ReplicationSink();
- SinkManager.addMessageSink(rSink);
+ SinkManager.add(rSink);
// start removal in background and send replication confirmations
final AtomicBoolean success = new AtomicBoolean(false);
@@ -159,8 +159,8 @@ public class RemoveTest extends CleanupH
NotificationSink nSink = new NotificationSink();
ReplicationSink rSink = new ReplicationSink();
- SinkManager.addMessageSink(nSink);
- SinkManager.addMessageSink(rSink);
+ SinkManager.add(nSink);
+ SinkManager.add(rSink);
assertEquals(0, tmd.getLeavingEndpoints().size());
Modified: cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java \
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java Tue \
Nov 30 16:24:24 2010 @@ -28,6 +28,7 @@ import java.util.Arrays;
import org.apache.cassandra.SchemaLoader;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.ColumnFamily;
+import org.apache.cassandra.db.ExpiringColumn;
import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
import org.apache.cassandra.dht.IPartitioner;
@@ -90,13 +91,16 @@ public class SSTableExportTest extends S
}
@Test
- public void testExportSimpleCf() throws IOException {
+ public void testExportSimpleCf() throws IOException
+ {
File tempSS = tempSSTableFile("Keyspace1", "Standard1");
ColumnFamily cfamily = ColumnFamily.create("Keyspace1", "Standard1");
SSTableWriter writer = new SSTableWriter(tempSS.getPath(), 2);
+ int nowInSec = (int)(System.currentTimeMillis() / 1000);
// Add rowA
cfamily.addColumn(new QueryPath("Standard1", null, \
ByteBufferUtil.bytes("colA")), ByteBufferUtil.bytes("valA"), 1); + \
cfamily.addColumn(null, new ExpiringColumn(ByteBufferUtil.bytes("colExp"), \
ByteBufferUtil.bytes("valExp"), 1, 42, nowInSec)); writer.append(Util.dk("rowA"), \
cfamily); cfamily.clear();
@@ -121,6 +125,10 @@ public class SSTableExportTest extends S
JSONArray rowA = (JSONArray)json.get(asHex("rowA"));
JSONArray colA = (JSONArray)rowA.get(0);
assert Arrays.equals(hexToBytes((String)colA.get(1)), "valA".getBytes());
+
+ JSONArray colExp = (JSONArray)rowA.get(1);
+ assert ((Long)colExp.get(4)) == 42;
+ assert ((Long)colExp.get(5)) == nowInSec;
JSONArray rowB = (JSONArray)json.get(asHex("rowB"));
JSONArray colB = (JSONArray)rowB.get(0);
Modified: cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java?rev=1040614&r1=1040613&r2=1040614&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java \
(original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableImportTest.java Tue \
Nov 30 16:24:24 2010 @@ -27,9 +27,11 @@ import org.apache.cassandra.SchemaLoader
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.DeletedColumn;
+import org.apache.cassandra.db.ExpiringColumn;
import org.apache.cassandra.db.IColumn;
import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
+import org.apache.cassandra.db.columniterator.IColumnIterator;
import org.apache.cassandra.io.sstable.Descriptor;
import org.apache.cassandra.io.sstable.SSTableReader;
import static org.apache.cassandra.utils.FBUtilities.hexToBytes;
@@ -41,6 +43,9 @@ import org.json.simple.parser.ParseExcep
import org.junit.Test;
import org.apache.cassandra.utils.ByteBufferUtil;
+
+import org.apache.cassandra.utils.FBUtilities;
+
public class SSTableImportTest extends SchemaLoader
{
@Test
@@ -53,10 +58,16 @@ public class SSTableImportTest extends S
// Verify results
SSTableReader reader = \
SSTableReader.open(Descriptor.fromFilename(tempSS.getPath()));
- QueryFilter qf = QueryFilter.getNamesFilter(Util.dk("rowA"), new \
QueryPath("Standard1", null, null), ByteBufferUtil.bytes("colAA"));
- ColumnFamily cf = qf.getSSTableColumnIterator(reader).getColumnFamily();
+ QueryFilter qf = QueryFilter.getIdentityFilter(Util.dk("rowA"), new \
QueryPath("Standard1")); + IColumnIterator iter = \
qf.getSSTableColumnIterator(reader); + ColumnFamily cf = \
iter.getColumnFamily(); + while (iter.hasNext()) cf.addColumn(iter.next());
assert cf.getColumn(ByteBufferUtil.bytes("colAA")).value().equals(ByteBuffer.wrap(hexToBytes("76616c4141")));
assert !(cf.getColumn(ByteBufferUtil.bytes("colAA")) instanceof \
DeletedColumn); + IColumn expCol = \
cf.getColumn(ByteBufferUtil.bytes("colAC")); + assert \
expCol.value().equals(ByteBuffer.wrap(hexToBytes("76616c4143"))); + assert \
expCol instanceof ExpiringColumn; + assert \
((ExpiringColumn)expCol).getTimeToLive() == 42 && \
((ExpiringColumn)expCol).getLocalDeletionTime() == 2000000000; }
@Test
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic