You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/06/20 22:54:26 UTC
svn commit: r1137777 - in /cassandra/trunk: ./ bin/ contrib/ debian/
examples/hadoop_word_count/src/
interface/thrift/gen-java/org/apache/cassandra/thrift/
src/java/org/apache/cassandra/cache/ src/java/org/apache/cassandra/cli/
src/java/org/apache/cass...
Author: jbellis
Date: Mon Jun 20 20:54:24 2011
New Revision: 1137777
URL: http://svn.apache.org/viewvc?rev=1137777&view=rev
Log:
merge from 0.8
Added:
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/BooleanType.java
- copied unchanged from r1137774, cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/BooleanType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/DateType.java
- copied unchanged from r1137774, cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/DateType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/DoubleType.java
- copied unchanged from r1137774, cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/DoubleType.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/FloatType.java
- copied unchanged from r1137774, cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/FloatType.java
Removed:
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogHeader.java
Modified:
cassandra/trunk/ (props changed)
cassandra/trunk/CHANGES.txt
cassandra/trunk/NEWS.txt
cassandra/trunk/bin/cassandra.bat
cassandra/trunk/build.xml
cassandra/trunk/contrib/ (props changed)
cassandra/trunk/debian/changelog
cassandra/trunk/debian/rules
cassandra/trunk/examples/hadoop_word_count/src/WordCount.java
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/cache/InstrumentingCache.java
cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentingCacheMBean.java
cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g
cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java
cassandra/trunk/src/java/org/apache/cassandra/cql/Term.java
cassandra/trunk/src/java/org/apache/cassandra/db/EchoedRow.java
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/ReplayPosition.java
cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java
cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java
cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java
cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamInSession.java
cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java
cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java
cassandra/trunk/src/java/org/apache/cassandra/tools/SSTableExport.java
cassandra/trunk/test/system/test_cql.py
cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java
cassandra/trunk/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java
cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java
Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jun 20 20:54:24 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1131291
-/cassandra/branches/cassandra-0.7:1026516-1133874
+/cassandra/branches/cassandra-0.7:1026516-1133874,1135638
/cassandra/branches/cassandra-0.7.0:1053690-1055654
-/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441,1136006,1137550
+/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1137774
/cassandra/branches/cassandra-0.8.0:1125021-1130369
/cassandra/branches/cassandra-0.8.1:1101014-1125018
/cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
Modified: cassandra/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Mon Jun 20 20:54:24 2011
@@ -8,6 +8,14 @@
* Fixed the ability to set compaction strategy in cli using create column family command (CASSANDRA-2778)
* Add startup flag to renew counter node id (CASSANDRA-2788)
+
+0.8.2
+ * fix cache mbean getSize (CASSANDRA-2781)
+ * Add Date, Float, Double, and Boolean types (CASSANDRA-2530)
+ * fix repair hanging if a neighbor has nothing to send (CASSANDRA-2797)
+ * add jamm agent to cassandra.bat (CASSANDRA-2787)
+
+
0.8.1
* CQL:
- support for insert, delete in BATCH (CASSANDRA-2537)
@@ -15,7 +23,6 @@
- timestamp support for INSERT, UPDATE, and BATCH (CASSANDRA-2555)
- TTL support (CASSANDRA-2476)
- counter support (CASSANDRA-2473)
- - improve JDBC spec compliance (CASSANDRA-2720)
- ALTER COLUMNFAMILY (CASSANDRA-1709)
- DROP INDEX (CASSANDRA-2617)
- add SCHEMA/TABLE as aliases for KS/CF (CASSANDRA-2743)
@@ -58,6 +65,7 @@
by nio sockets (CASSANDRA-2654)
* restrict repair streaming to specific columnfamilies (CASSANDRA-2280)
* fix nodetool ring use with Ec2Snitch (CASSANDRA-2733)
+ * fix inconsistency window during bootstrap (CASSANDRA-833)
* fix removing columns and subcolumns that are supressed by a row or
supercolumn tombstone during replica resolution (CASSANDRA-2590)
* support sstable2json against snapshot sstables (CASSANDRA-2386)
@@ -68,7 +76,14 @@
* avoid skipping rows in scrub for counter column family (CASSANDRA-2759)
* fix ConcurrentModificationException in repair when dealing with 0.7 node
(CASSANDRA-2767)
+ * use threadsafe collections for StreamInSession (CASSANDRA-2766)
* avoid infinite loop when creating merkle tree (CASSANDRA-2758)
+ * avoids unmarking compacting sstable prematurely in cleanup (CASSANDRA-2769)
+ * fix NPE when the commit log is bypassed (CASSANDRA-2718)
+ * don't throw an exception in SS.isRPCServerRunning (CASSANDRA-2721)
+ * make stress.jar executable (CASSANDRA-2744)
+ * add daemon mode to java stress (CASSANDRA-2267)
+ * expose the DC and rack of a node through JMX and nodetool ring (CASSANDRA-2531)
0.8.0-final
@@ -175,7 +190,8 @@
* add key type information and alias (CASSANDRA-2311, 2396)
* cli no longer divides read_repair_chance by 100 (CASSANDRA-2458)
* made CompactionInfo.getTaskType return an enum (CASSANDRA-2482)
- * add a server-wide cap on measured memtable memory usage (CASSANDRA-2006)
+ * add a server-wide cap on measured memtable memory usage and aggressively
+ flush to keep under that threshold (CASSANDRA-2006)
* add unified UUIDType (CASSANDRA-2233)
Modified: cassandra/trunk/NEWS.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/NEWS.txt?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/NEWS.txt (original)
+++ cassandra/trunk/NEWS.txt Mon Jun 20 20:54:24 2011
@@ -7,6 +7,31 @@ Upgrading
sstableloader tool instead.
+0.8.1
+=====
+
+Upgrading
+---------
+ - 0.8.1 is backwards compatible with 0.8, upgrade can be achieved by a
+ simple rolling restart.
+ - If upgrading for earlier version (0.7), please refer to the 0.8 section
+ for instructions.
+
+Features
+--------
+ - Numerous additions/improvements to CQL (support for counters, TTL, batch
+ inserts/deletes, index dropping, ...).
+ - Add two new AbstractTypes (comparator) to support compound keys
+ (CompositeType and DynamicCompositeType), as well as a ReverseType to
+ reverse the order of any existing comparator.
+ - New option to bypass the commit log on some keyspaces (for advanced
+ users).
+
+Tools
+-----
+ - Add new data bulk loading utility (sstableloader).
+
+
0.8
===
Modified: cassandra/trunk/bin/cassandra.bat
URL: http://svn.apache.org/viewvc/cassandra/trunk/bin/cassandra.bat?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/bin/cassandra.bat (original)
+++ cassandra/trunk/bin/cassandra.bat Mon Jun 20 20:54:24 2011
@@ -24,6 +24,7 @@ if NOT DEFINED JAVA_HOME goto err
REM ***** JAVA options *****
set JAVA_OPTS=^
-ea^
+ -javaagent:%CASSANDRA_HOME%\lib\jamm-0.2.2.jar^
-Xms1G^
-Xmx1G^
-XX:+HeapDumpOnOutOfMemoryError^
Modified: cassandra/trunk/build.xml
URL: http://svn.apache.org/viewvc/cassandra/trunk/build.xml?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/build.xml (original)
+++ cassandra/trunk/build.xml Mon Jun 20 20:54:24 2011
@@ -25,8 +25,8 @@
<property name="debuglevel" value="source,lines,vars"/>
<!-- default version and SCM information (we need the default SCM info as people may checkout with git-svn) -->
- <property name="base.version" value="0.8.0"/>
- <property name="scm.default.path" value="cassandra/branches/cassandra-0.7"/>
+ <property name="base.version" value="0.8.1"/>
+ <property name="scm.default.path" value="cassandra/branches/cassandra-0.8"/>
<property name="scm.default.connection" value="scm:svn:http://svn.apache.org/repos/asf/${scm.default.path}"/>
<property name="scm.default.developerConnection" value="scm:svn:https://svn.apache.org/repos/asf/${scm.default.path}"/>
<property name="scm.default.url" value="http://svn.apache.org/viewvc/${scm.default.path}"/>
Propchange: cassandra/trunk/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jun 20 20:54:24 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009
-/cassandra/branches/cassandra-0.7/contrib:1026516-1133874
+/cassandra/branches/cassandra-0.7/contrib:1026516-1133874,1135638
/cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
-/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441,1136006,1137550
+/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1137774
/cassandra/branches/cassandra-0.8.0/contrib:1125021-1130369
/cassandra/branches/cassandra-0.8.1/contrib:1101014-1125018
/cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689
Modified: cassandra/trunk/debian/changelog
URL: http://svn.apache.org/viewvc/cassandra/trunk/debian/changelog?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/debian/changelog (original)
+++ cassandra/trunk/debian/changelog Mon Jun 20 20:54:24 2011
@@ -1,3 +1,9 @@
+cassandra (0.8.1) unstable; urgency=low
+
+ * New release
+
+ -- Sylvain Lebresne <sl...@apache.org> Thu, 16 Jun 2011 09:37:27 +0200
+
cassandra (0.8.0) unstable; urgency=low
* New release
Modified: cassandra/trunk/debian/rules
URL: http://svn.apache.org/viewvc/cassandra/trunk/debian/rules?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/debian/rules (original)
+++ cassandra/trunk/debian/rules Mon Jun 20 20:54:24 2011
@@ -40,8 +40,6 @@ install: build
usr/share/cassandra
dh_install build/apache-cassandra-thrift-$(VERSION).jar \
usr/share/cassandra
- dh_install build/apache-cassandra-cql-*.jar \
- usr/share/cassandra
dh_link usr/share/cassandra/apache-cassandra-$(VERSION).jar \
usr/share/cassandra/apache-cassandra.jar
Modified: cassandra/trunk/examples/hadoop_word_count/src/WordCount.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/examples/hadoop_word_count/src/WordCount.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/examples/hadoop_word_count/src/WordCount.java (original)
+++ cassandra/trunk/examples/hadoop_word_count/src/WordCount.java Mon Jun 20 20:54:24 2011
@@ -136,13 +136,13 @@ public class WordCount extends Configure
private static Mutation getMutation(Text word, int sum)
{
Column c = new Column();
- c.name = ByteBuffer.wrap(Arrays.copyOf(word.getBytes(), word.getLength()));
- c.value = ByteBufferUtil.bytes(String.valueOf(sum));
- c.timestamp = System.currentTimeMillis() * 1000;
+ c.setName(Arrays.copyOf(word.getBytes(), word.getLength()));
+ c.setValue(ByteBufferUtil.bytes(String.valueOf(sum)));
+ c.setTimestamp(System.currentTimeMillis());
Mutation m = new Mutation();
- m.column_or_supercolumn = new ColumnOrSuperColumn();
- m.column_or_supercolumn.column = c;
+ m.setColumn_or_supercolumn(new ColumnOrSuperColumn());
+ m.column_or_supercolumn.setColumn(c);
return m;
}
}
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jun 20 20:54:24 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1133874
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1133874,1135638
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441,1136006,1137550
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1137774
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1125021-1130369
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1101014-1125018
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jun 20 20:54:24 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1133874
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1133874,1135638
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441,1136006,1137550
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125019-1137774
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1125021-1130369
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1101014-1125018
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jun 20 20:54:24 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1133874
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1133874,1135638
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441,1136006,1137550
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125019-1137774
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1125021-1130369
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1101014-1125018
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jun 20 20:54:24 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1133874
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1133874,1135638
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441,1136006,1137550
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125019-1137774
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1125021-1130369
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1101014-1125018
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jun 20 20:54:24 2011
@@ -1,7 +1,7 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1133874
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1133874,1135638
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441,1136006,1137550
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125019-1137774
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1125021-1130369
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1101014-1125018
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
Modified: cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentingCache.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentingCache.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentingCache.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentingCache.java Mon Jun 20 20:54:24 2011
@@ -108,6 +108,11 @@ public class InstrumentingCache<K, V> im
return map.size();
}
+ public int getSize()
+ {
+ return size();
+ }
+
public long getHits()
{
return hits.get();
Modified: cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentingCacheMBean.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentingCacheMBean.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentingCacheMBean.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cache/InstrumentingCacheMBean.java Mon Jun 20 20:54:24 2011
@@ -25,7 +25,7 @@ public interface InstrumentingCacheMBean
{
public int getCapacity();
public void setCapacity(int capacity);
- public int size();
+ public int getSize();
/** total request count since cache creation */
public long getRequests();
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=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java Mon Jun 20 20:54:24 2011
@@ -265,6 +265,7 @@ public class CliClient
break;
case CliParser.NODE_CONSISTENCY_LEVEL:
executeConsistencyLevelStatement(tree);
+ break;
case CliParser.NODE_THRIFT_INCR:
executeIncr(tree, 1L);
break;
@@ -2088,17 +2089,6 @@ public class CliClient
}
/**
- * Converts column name into byte[] according to comparator type
- * @param superColumn - sub-column name from parser
- * @param columnFamily - column family name from parser
- * @return bytes[] - into which column name was converted according to comparator type
- */
- private byte[] subColumnNameAsByteArray(String superColumn, String columnFamily)
- {
- return TBaseHelper.byteBufferToByteArray(subColumnNameAsBytes(superColumn, columnFamily));
- }
-
- /**
* Converts sub-column name into byte[] according to comparator type
* @param superColumn - sub-column name from parser
* @param cfDef - column family from parser
Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/Cql.g Mon Jun 20 20:54:24 2011
@@ -427,11 +427,11 @@ dropColumnFamilyStatement returns [Strin
;
comparatorType
- : 'bytea' | 'ascii' | 'text' | 'varchar' | 'int' | 'varint' | 'bigint' | 'uuid' | 'counter'
+ : 'bytea' | 'ascii' | 'text' | 'varchar' | 'int' | 'varint' | 'bigint' | 'uuid' | 'counter' | 'boolean' | 'date' | 'float' | 'double'
;
term returns [Term item]
- : ( t=K_KEY | t=STRING_LITERAL | t=INTEGER | t=UUID | t=IDENT ) { $item = new Term($t.text, $t.type); }
+ : ( t=K_KEY | t=STRING_LITERAL | t=INTEGER | t=UUID | t=IDENT | t=FLOAT) { $item = new Term($t.text, $t.type); }
;
termList returns [List<Term> items]
Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/CreateColumnFamilyStatement.java Mon Jun 20 20:54:24 2011
@@ -72,6 +72,10 @@ public class CreateColumnFamilyStatement
comparators.put("bigint", "LongType");
comparators.put("uuid", "UUIDType");
comparators.put("counter", "CounterColumnType");
+ comparators.put("boolean", "BooleanType");
+ comparators.put("date", "DateType");
+ comparators.put("float", "FloatType");
+ comparators.put("double", "DoubleType");
keywords.add(KW_COMPARATOR);
keywords.add(KW_COMMENT);
Modified: cassandra/trunk/src/java/org/apache/cassandra/cql/Term.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cql/Term.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cql/Term.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cql/Term.java Mon Jun 20 20:54:24 2011
@@ -24,6 +24,7 @@ import java.nio.ByteBuffer;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.db.marshal.AsciiType;
+import org.apache.cassandra.db.marshal.FloatType;
import org.apache.cassandra.db.marshal.IntegerType;
import org.apache.cassandra.db.marshal.LexicalUUIDType;
import org.apache.cassandra.db.marshal.MarshalException;
@@ -107,6 +108,8 @@ public class Term
// we specifically want the Lexical class here, not "UUIDType," because we're supposed to have
// a uuid-shaped string here, and UUIDType also accepts integer or date strings (and turns them into version 1 uuids).
return LexicalUUIDType.instance.fromString(text);
+ case FLOAT:
+ return FloatType.instance.fromString(text);
}
// FIXME: handle scenario that should never happen
@@ -132,7 +135,7 @@ public class Term
enum TermType
{
- STRING, INTEGER, UUID;
+ STRING, INTEGER, UUID, FLOAT;
static TermType forInt(int type)
{
@@ -141,7 +144,9 @@ enum TermType
else if (type == CqlParser.INTEGER)
return INTEGER;
else if (type == CqlParser.UUID)
- return UUID;
+ return UUID;
+ else if (type == CqlParser.FLOAT)
+ return FLOAT;
// FIXME: handled scenario that should never occur.
return null;
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/EchoedRow.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/EchoedRow.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/EchoedRow.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/EchoedRow.java Mon Jun 20 20:54:24 2011
@@ -1,4 +1,25 @@
package org.apache.cassandra.db;
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
import java.io.DataOutput;
import java.io.IOException;
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/ReplayPosition.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/ReplayPosition.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/ReplayPosition.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/ReplayPosition.java Mon Jun 20 20:54:24 2011
@@ -73,9 +73,9 @@ public class ReplayPosition implements C
public int compare(ReplayPosition o1, ReplayPosition o2)
{
if (o1.segment != o2.segment)
- return new Long(o1.segment).compareTo(o2.segment);
+ return Long.valueOf(o1.segment).compareTo(o2.segment);
- return new Integer(o1.position).compareTo(o2.position);
+ return Integer.valueOf(o1.position).compareTo(o2.position);
}
};
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionManager.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionManager.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionManager.java Mon Jun 20 20:54:24 2011
@@ -652,56 +652,50 @@ public class CompactionManager implement
logger.debug("Expected bloom filter size : " + expectedBloomFilterSize);
SSTableWriter writer = null;
+
+ logger.info("Cleaning up " + sstable);
+ // Calculate the expected compacted filesize
+ long expectedRangeFileSize = cfs.getExpectedCompactedFileSize(Arrays.asList(sstable)) / 2;
+ String compactionFileLocation = table.getDataFileLocation(expectedRangeFileSize);
+ if (compactionFileLocation == null)
+ throw new IOException("disk full");
+
+ SSTableScanner scanner = sstable.getDirectScanner(CompactionIterator.FILE_BUFFER_SIZE);
+ SortedSet<ByteBuffer> indexedColumns = cfs.getIndexedColumns();
+ CleanupInfo ci = new CleanupInfo(sstable, scanner);
+ executor.beginCompaction(ci);
try
{
- logger.info("Cleaning up " + sstable);
- // Calculate the expected compacted filesize
- long expectedRangeFileSize = cfs.getExpectedCompactedFileSize(Arrays.asList(sstable)) / 2;
- String compactionFileLocation = table.getDataFileLocation(expectedRangeFileSize);
- if (compactionFileLocation == null)
- throw new IOException("disk full");
-
- SSTableScanner scanner = sstable.getDirectScanner(CompactionIterator.FILE_BUFFER_SIZE);
- SortedSet<ByteBuffer> indexedColumns = cfs.getIndexedColumns();
- CleanupInfo ci = new CleanupInfo(sstable, scanner);
- executor.beginCompaction(ci);
- try
+ while (scanner.hasNext())
{
- while (scanner.hasNext())
+ SSTableIdentityIterator row = (SSTableIdentityIterator) scanner.next();
+ if (Range.isTokenInRanges(row.getKey().token, ranges))
{
- SSTableIdentityIterator row = (SSTableIdentityIterator) scanner.next();
- if (Range.isTokenInRanges(row.getKey().token, ranges))
- {
- writer = maybeCreateWriter(cfs, compactionFileLocation, expectedBloomFilterSize, writer, Collections.singletonList(sstable));
- writer.append(controller.getCompactedRow(row));
- totalkeysWritten++;
- }
- else
+ writer = maybeCreateWriter(cfs, compactionFileLocation, expectedBloomFilterSize, writer, Collections.singletonList(sstable));
+ writer.append(controller.getCompactedRow(row));
+ totalkeysWritten++;
+ }
+ else
+ {
+ cfs.invalidateCachedRow(row.getKey());
+ if (!indexedColumns.isEmpty() || isCommutative)
{
- cfs.invalidateCachedRow(row.getKey());
- if (!indexedColumns.isEmpty() || isCommutative)
+ while (row.hasNext())
{
- while (row.hasNext())
- {
- IColumn column = row.next();
- if (column instanceof CounterColumn)
- renewer.maybeRenew((CounterColumn) column);
- if (indexedColumns.contains(column.name()))
- Table.cleanupIndexEntry(cfs, row.getKey().key, column);
- }
+ IColumn column = row.next();
+ if (column instanceof CounterColumn)
+ renewer.maybeRenew((CounterColumn) column);
+ if (indexedColumns.contains(column.name()))
+ Table.cleanupIndexEntry(cfs, row.getKey().key, column);
}
}
}
}
- finally
- {
- scanner.close();
- executor.finishCompaction(ci);
- }
}
finally
{
- cfs.getDataTracker().unmarkCompacting(Arrays.asList(sstable));
+ scanner.close();
+ executor.finishCompaction(ci);
}
List<SSTableReader> results = new ArrayList<SSTableReader>();
Modified: cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/gms/FailureDetector.java Mon Jun 20 20:54:24 2011
@@ -257,7 +257,7 @@ class ArrivalWindow
}
// see CASSANDRA-2597 for an explanation of the math at work here.
- double phi(long tnow)
+ synchronized double phi(long tnow)
{
int size = arrivalIntervals_.size();
double t = tnow - tLast_;
Modified: cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java Mon Jun 20 20:54:24 2011
@@ -190,7 +190,7 @@ public class Gossiper implements IFailur
public void setVersion(InetAddress address, int version)
{
- Integer old = versions.put(address, version);
+ versions.put(address, version);
}
public Integer getVersion(InetAddress address)
@@ -717,7 +717,6 @@ public class Gossiper implements IFailur
{
// don't assert here, since if the node restarts the version will go back to zero
int oldVersion = localState.getHeartBeatState().getHeartBeatVersion();
- Map<ApplicationState, VersionedValue> localAppStateMap = localState.getApplicationStateMap();
localState.setHeartBeatState(remoteState.getHeartBeatState());
if (logger.isTraceEnabled())
Modified: cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java Mon Jun 20 20:54:24 2011
@@ -136,26 +136,13 @@ public class FileUtils
}
}
- public static void createFile(String directory) throws IOException
- {
- File file = new File(directory);
- if ( !file.exists() )
- file.createNewFile();
- }
-
- public static boolean isExists(String filename) throws IOException
- {
- File file = new File(filename);
- return file.exists();
- }
-
public static boolean delete(String file)
{
File f = new File(file);
return f.delete();
}
- public static boolean delete(List<String> files) throws IOException
+ public static boolean delete(List<String> files)
{
boolean bVal = true;
for ( int i = 0; i < files.size(); ++i )
@@ -172,7 +159,7 @@ public class FileUtils
return bVal;
}
- public static void delete(File[] files) throws IOException
+ public static void delete(File[] files)
{
for ( File file : files )
{
Modified: cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamInSession.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamInSession.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamInSession.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamInSession.java Mon Jun 20 20:54:24 2011
@@ -24,18 +24,20 @@ import java.util.*;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
+import java.util.concurrent.LinkedBlockingQueue;
-import org.apache.cassandra.gms.Gossiper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.db.ColumnFamilyStore;
-import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.Table;
+import org.apache.cassandra.db.compaction.CompactionManager;
+import org.apache.cassandra.gms.Gossiper;
import org.apache.cassandra.io.sstable.SSTableReader;
import org.apache.cassandra.net.MessagingService;
import org.apache.cassandra.utils.Pair;
import org.cliffc.high_scale_lib.NonBlockingHashMap;
+import org.cliffc.high_scale_lib.NonBlockingHashSet;
/** each context gets its own StreamInSession. So there may be >1 Session per host */
public class StreamInSession
@@ -44,11 +46,11 @@ public class StreamInSession
private static ConcurrentMap<Pair<InetAddress, Long>, StreamInSession> sessions = new NonBlockingHashMap<Pair<InetAddress, Long>, StreamInSession>();
- private final List<PendingFile> files = new ArrayList<PendingFile>();
+ private final Set<PendingFile> files = new NonBlockingHashSet<PendingFile>();
private final Pair<InetAddress, Long> context;
private final Runnable callback;
private String table;
- private final List<Future<SSTableReader>> buildFutures = new ArrayList<Future<SSTableReader>>();
+ private final Collection<Future<SSTableReader>> buildFutures = new LinkedBlockingQueue<Future<SSTableReader>>();
private PendingFile current;
private StreamInSession(Pair<InetAddress, Long> context, Runnable callback)
Modified: cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/streaming/StreamOut.java Mon Jun 20 20:54:24 2011
@@ -122,15 +122,10 @@ public class StreamOut
{
List<PendingFile> pending = createPendingFiles(sstables, ranges, type);
- if (pending.size() > 0)
- {
- session.addFilesToStream(pending);
- session.begin();
- }
- else
- {
- session.close();
- }
+ // Even if the list of pending files is empty, we need to initiate the transfer otherwise
+ // the remote end will hang in cases where this was a requested transfer.
+ session.addFilesToStream(pending);
+ session.begin();
}
// called prior to sending anything.
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=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java Mon Jun 20 20:54:24 2011
@@ -450,7 +450,7 @@ public class NodeCmd
if (keyCacheMBean.getCapacity() > 0)
{
outs.println("\t\tKey cache capacity: " + keyCacheMBean.getCapacity());
- outs.println("\t\tKey cache size: " + keyCacheMBean.size());
+ outs.println("\t\tKey cache size: " + keyCacheMBean.getSize());
outs.println("\t\tKey cache hit rate: " + keyCacheMBean.getRecentHitRate());
}
else
@@ -462,7 +462,7 @@ public class NodeCmd
if (rowCacheMBean.getCapacity() > 0)
{
outs.println("\t\tRow cache capacity: " + rowCacheMBean.getCapacity());
- outs.println("\t\tRow cache size: " + rowCacheMBean.size());
+ outs.println("\t\tRow cache size: " + rowCacheMBean.getSize());
outs.println("\t\tRow cache hit rate: " + rowCacheMBean.getRecentHitRate());
}
else
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=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/tools/SSTableExport.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/tools/SSTableExport.java Mon Jun 20 20:54:24 2011
@@ -25,6 +25,7 @@ import java.nio.ByteBuffer;
import java.util.*;
import org.apache.cassandra.config.CFMetaData;
+import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.io.util.BufferedRandomAccessFile;
@@ -33,11 +34,11 @@ import org.apache.cassandra.service.Stor
import org.apache.commons.cli.*;
import org.apache.cassandra.config.ConfigurationException;
-import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.dht.IPartitioner;
import org.apache.cassandra.io.sstable.*;
import org.apache.cassandra.utils.ByteBufferUtil;
-import org.apache.cassandra.utils.Pair;
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.map.ObjectMapper;
import static org.apache.cassandra.utils.ByteBufferUtil.bytesToHex;
import static org.apache.cassandra.utils.ByteBufferUtil.hexToBytes;
@@ -47,12 +48,12 @@ import static org.apache.cassandra.utils
*/
public class SSTableExport
{
- // size of the columns page
- private static final int PAGE_SIZE = 1000;
+ private static ObjectMapper jsonMapper = new ObjectMapper();
private static final String KEY_OPTION = "k";
private static final String EXCLUDEKEY_OPTION = "x";
private static final String ENUMERATEKEYS_OPTION = "e";
+
private static Options options;
private static CommandLine cmd;
@@ -72,42 +73,36 @@ public class SSTableExport
Option optEnumerate = new Option(ENUMERATEKEYS_OPTION, false, "enumerate keys only");
options.addOption(optEnumerate);
- }
- /**
- * Wraps given string into quotes
- * @param val string to quote
- * @return quoted string
- */
- private static String quote(String val)
- {
- return String.format("\"%s\"", val);
+ // disabling auto close of the stream
+ jsonMapper.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);
}
/**
* JSON Hash Key serializer
- * @param val value to set as a key
- * @return JSON Hash key
+ *
+ * @param out The output steam to write data
+ * @param value value to set as a key
*/
- private static String asKey(String val)
+ private static void writeKey(PrintStream out, String value)
{
- return String.format("%s: ", quote(val));
+ writeJSON(out, value);
+ out.print(": ");
}
/**
* Serialize columns using given column iterator
+ *
* @param columns column iterator
* @param out output stream
* @param comparator columns comparator
* @param cfMetaData Column Family metadata (to get validator)
- * @return pair of (number of columns serialized, last column serialized)
*/
private static void serializeColumns(Iterator<IColumn> columns, PrintStream out, AbstractType comparator, CFMetaData cfMetaData)
{
while (columns.hasNext())
{
- IColumn column = columns.next();
- serializeColumn(column, out, comparator, cfMetaData);
+ writeJSON(out, serializeColumn(columns.next(), comparator, cfMetaData));
if (columns.hasNext())
out.print(", ");
@@ -116,47 +111,42 @@ public class SSTableExport
/**
* Serialize a given column to the JSON format
+ *
* @param column column presentation
- * @param out output stream
* @param comparator columns comparator
* @param cfMetaData Column Family metadata (to get validator)
+ *
+ * @return column as serialized list
*/
- private static void serializeColumn(IColumn column, PrintStream out, AbstractType comparator, CFMetaData cfMetaData)
+ private static List<Object> serializeColumn(IColumn column, AbstractType comparator, CFMetaData cfMetaData)
{
+ ArrayList<Object> serializedColumn = new ArrayList<Object>();
+
ByteBuffer name = ByteBufferUtil.clone(column.name());
ByteBuffer value = ByteBufferUtil.clone(column.value());
AbstractType validator = cfMetaData.getValueValidator(name);
- out.print("[");
- out.print(quote(comparator.getString(name)));
- out.print(", ");
- out.print(quote(validator.getString(value)));
- out.print(", ");
- out.print(column.timestamp());
+ serializedColumn.add(comparator.getString(name));
+ serializedColumn.add(validator.getString(value));
+ serializedColumn.add(column.timestamp());
if (column instanceof DeletedColumn)
{
- out.print(", ");
- out.print("\"d\"");
+ serializedColumn.add("d");
}
else if (column instanceof ExpiringColumn)
{
- out.print(", ");
- out.print("\"e\"");
- out.print(", ");
- out.print(((ExpiringColumn) column).getTimeToLive());
- out.print(", ");
- out.print(column.getLocalDeletionTime());
+ serializedColumn.add("e");
+ serializedColumn.add(((ExpiringColumn) column).getTimeToLive());
+ serializedColumn.add(column.getLocalDeletionTime());
}
else if (column instanceof CounterColumn)
{
- out.print(", ");
- out.print("\"c\"");
- out.print(", ");
- out.print(((CounterColumn) column).timestampOfLastDelete());
+ serializedColumn.add("c");
+ serializedColumn.add(((CounterColumn) column).timestampOfLastDelete());
}
- out.print("]");
+ return serializedColumn;
}
/**
@@ -172,7 +162,7 @@ public class SSTableExport
CFMetaData cfMetaData = columnFamily.metadata();
AbstractType comparator = columnFamily.getComparator();
- out.print(asKey(bytesToHex(key.key)));
+ writeKey(out, bytesToHex(key.key));
out.print(isSuperCF ? "{" : "[");
if (isSuperCF)
@@ -181,12 +171,12 @@ public class SSTableExport
{
IColumn column = row.next();
- out.print(asKey(comparator.getString(column.name())));
+ writeKey(out, comparator.getString(column.name()));
out.print("{");
- out.print(asKey("deletedAt"));
+ writeKey(out, "deletedAt");
out.print(column.getMarkedForDeleteAt());
out.print(", ");
- out.print(asKey("subColumns"));
+ writeKey(out, "subColumns");
out.print("[");
serializeColumns(column.getSubColumns().iterator(), out, columnFamily.getSubComparator(), cfMetaData);
out.print("]");
@@ -202,6 +192,7 @@ public class SSTableExport
}
out.print(isSuperCF ? "}" : "]");
+
}
/**
@@ -417,4 +408,16 @@ public class SSTableExport
System.exit(0);
}
+
+ private static void writeJSON(PrintStream out, Object value)
+ {
+ try
+ {
+ jsonMapper.writeValue(out, value);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ }
}
Modified: cassandra/trunk/test/system/test_cql.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/system/test_cql.py?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/test/system/test_cql.py (original)
+++ cassandra/trunk/test/system/test_cql.py Mon Jun 20 20:54:24 2011
@@ -24,7 +24,6 @@ import sys, uuid, time
sys.path.append(join(abspath(dirname(__file__)), '../../drivers/py'))
import cql
-from cql.connection import Connection
from __init__ import ThriftTester
from __init__ import thrift_client # TODO: temporary
Modified: cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/SchemaLoader.java Mon Jun 20 20:54:24 2011
@@ -113,6 +113,12 @@ public class SchemaLoader
standardCFMD(ks1, "Standard4"),
standardCFMD(ks1, "StandardLong1"),
standardCFMD(ks1, "StandardLong2"),
+ new CFMetaData(ks1,
+ "ValuesWithQuotes",
+ st,
+ BytesType.instance,
+ null)
+ .defaultValidator(UTF8Type.instance),
superCFMD(ks1, "Super1", LongType.instance),
superCFMD(ks1, "Super2", LongType.instance),
superCFMD(ks1, "Super3", LongType.instance),
Modified: cassandra/trunk/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java?rev=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java Mon Jun 20 20:54:24 2011
@@ -1,4 +1,25 @@
package org.apache.cassandra.locator;
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
import static org.junit.Assert.assertEquals;
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=1137777&r1=1137776&r2=1137777&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/tools/SSTableExportTest.java Mon Jun 20 20:54:24 2011
@@ -22,17 +22,15 @@ import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
-import java.nio.ByteBuffer;
-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.CounterColumn;
import org.apache.cassandra.db.ExpiringColumn;
+import org.apache.cassandra.db.Column;
import org.apache.cassandra.db.filter.QueryFilter;
import org.apache.cassandra.db.filter.QueryPath;
-import org.apache.cassandra.dht.IPartitioner;
+import org.apache.cassandra.db.marshal.UTF8Type;
import org.apache.cassandra.io.sstable.Descriptor;
import org.apache.cassandra.io.sstable.SSTableReader;
import org.apache.cassandra.io.sstable.SSTableWriter;
@@ -243,4 +241,30 @@ public class SSTableExportTest extends S
assert ((String) colA.get(3)).equals("c");
assert (Long) colA.get(4) == Long.MIN_VALUE;
}
+
+ @Test
+ public void testEscapingDoubleQuotes() throws IOException
+ {
+ File tempSS = tempSSTableFile("Keyspace1", "ValuesWithQuotes");
+ ColumnFamily cfamily = ColumnFamily.create("Keyspace1", "ValuesWithQuotes");
+ SSTableWriter writer = new SSTableWriter(tempSS.getPath(), 2);
+
+ // Add rowA
+ cfamily.addColumn(null, new Column(ByteBufferUtil.bytes("data"), UTF8Type.instance.fromString("{\"foo\":\"bar\"}")));
+ writer.append(Util.dk("rowA"), cfamily);
+ cfamily.clear();
+
+ SSTableReader reader = writer.closeAndOpenReader();
+
+ // Export to JSON and verify
+ File tempJson = File.createTempFile("ValuesWithQuotes", ".json");
+ SSTableExport.export(reader, new PrintStream(tempJson.getPath()), new String[0]);
+
+ JSONObject json = (JSONObject) JSONValue.parse(new FileReader(tempJson));
+
+ JSONArray rowA = (JSONArray)json.get(asHex("rowA"));
+ JSONArray data = (JSONArray)rowA.get(0);
+ assert hexToBytes((String)data.get(0)).equals(ByteBufferUtil.bytes("data"));
+ assert data.get(1).equals("{\"foo\":\"bar\"}");
+ }
}