From f304c4c1fb9281b0a1143c7c3b4f77805c4a844f Mon Sep 17 00:00:00 2001 From: Sylvain Lebresne Date: Thu, 21 Jul 2011 13:53:13 +0000 Subject: [PATCH 1/4] Updates for 0.7.8 release (changelog, news, version number) git-svn-id: https://svn.apache.org/repos/asf/cassandra/branches/cassandra-0.7@1149176 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 5 +++++ NEWS.txt | 9 +++++++++ build.xml | 2 +- debian/changelog | 6 ++++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 5c0348c300..7eafae0af5 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,6 +5,11 @@ * avoid including inferred types in CF update (CASSANDRA-2809) * fix re-using index CF sstable names after drop/recreate (CASSANDRA-2872) * fix hint replay (CASSANDRA-2928) + * don't accept extra args for 0-arg nodetool commands (CASSANDRA-2740) + * allows using cli functions in cli del statement (CASSANDRA-2821) + * allows quoted classes in CLI (CASSANDRA-2899) + * log unavailableexception details at debug level (CASSANDRA-2856) + * expose data_dir though jmx (CASSANDRA-2770) 0.7.7 diff --git a/NEWS.txt b/NEWS.txt index 9cc10a16a9..430b937884 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -1,3 +1,12 @@ +0.7.8 +===== + +Upgrading +--------- + - Nothing specific to 0.7.8, but see 0.7.3 Upgrading if upgrading + from earlier than 0.7.1. + + 0.7.7 ===== diff --git a/build.xml b/build.xml index 1eddd07fea..f7718cb209 100644 --- a/build.xml +++ b/build.xml @@ -24,7 +24,7 @@ - + diff --git a/debian/changelog b/debian/changelog index e3c9a35608..868d6ea472 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +cassandra (0.7.8) unstable; urgency=low + + * New stable point release + + -- Sylvain Lebresne Thu, 21 Jul 2011 15:51:51 +0200 + cassandra (0.7.7) unstable; urgency=low * New stable point release From 37326e75f1541f6f7b6ab1a60338666df30ab0f5 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 21 Jul 2011 20:10:54 +0000 Subject: [PATCH 2/4] Use a UDF-specific context signature. Patch by Jeremy Hanna, reviewed by brandonwilliams for CASSANDRA-2869 git-svn-id: https://svn.apache.org/repos/asf/cassandra/branches/cassandra-0.7@1149341 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop/pig/CassandraStorage.java | 43 ++++++++----------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/contrib/pig/src/java/org/apache/cassandra/hadoop/pig/CassandraStorage.java b/contrib/pig/src/java/org/apache/cassandra/hadoop/pig/CassandraStorage.java index 0506b6684c..b5eb67ffa0 100644 --- a/contrib/pig/src/java/org/apache/cassandra/hadoop/pig/CassandraStorage.java +++ b/contrib/pig/src/java/org/apache/cassandra/hadoop/pig/CassandraStorage.java @@ -68,8 +68,6 @@ public class CassandraStorage extends LoadFunc implements StoreFuncInterface public final static String PIG_INITIAL_ADDRESS = "PIG_INITIAL_ADDRESS"; public final static String PIG_PARTITIONER = "PIG_PARTITIONER"; - private static String UDFCONTEXT_SCHEMA_KEY_PREFIX = "cassandra.schema"; - private final static ByteBuffer BOUND = ByteBufferUtil.EMPTY_BYTE_BUFFER; private static final Log logger = LogFactory.getLog(CassandraStorage.class); @@ -78,6 +76,8 @@ public class CassandraStorage extends LoadFunc implements StoreFuncInterface private boolean slice_reverse = false; private String keyspace; private String column_family; + private String loadSignature; + private String storeSignature; private Configuration conf; private RecordReader reader; @@ -112,7 +112,7 @@ public class CassandraStorage extends LoadFunc implements StoreFuncInterface if (!reader.nextKeyValue()) return null; - CfDef cfDef = getCfDef(); + CfDef cfDef = getCfDef(loadSignature); ByteBuffer key = (ByteBuffer)reader.getCurrentKey(); SortedMap cf = (SortedMap)reader.getCurrentValue(); assert key != null && cf != null; @@ -165,11 +165,11 @@ public class CassandraStorage extends LoadFunc implements StoreFuncInterface return pair; } - private CfDef getCfDef() + private CfDef getCfDef(String signature) { UDFContext context = UDFContext.getUDFContext(); Properties property = context.getUDFProperties(CassandraStorage.class); - return cfdefFromString(property.getProperty(getSchemaContextKey())); + return cfdefFromString(property.getProperty(signature)); } private List getDefaultMarshallers(CfDef cfDef) throws IOException @@ -289,7 +289,7 @@ public class CassandraStorage extends LoadFunc implements StoreFuncInterface } ConfigHelper.setInputColumnFamily(conf, keyspace, column_family); setConnectionInformation(); - initSchema(); + initSchema(loadSignature); } @Override @@ -298,9 +298,16 @@ public class CassandraStorage extends LoadFunc implements StoreFuncInterface return location; } + @Override + public void setUDFContextSignature(String signature) + { + this.loadSignature = signature; + } + /* StoreFunc methods */ public void setStoreFuncUDFContextSignature(String signature) { + this.storeSignature = signature; } public String relToAbsPathForStoreLocation(String location, Path curDir) throws IOException @@ -314,7 +321,7 @@ public class CassandraStorage extends LoadFunc implements StoreFuncInterface setLocationFromUri(location); ConfigHelper.setOutputColumnFamily(conf, keyspace, column_family); setConnectionInformation(); - initSchema(); + initSchema(storeSignature); } public OutputFormat getOutputFormat() @@ -346,7 +353,7 @@ public class CassandraStorage extends LoadFunc implements StoreFuncInterface ByteBuffer key = objToBB(t.get(0)); DefaultDataBag pairs = (DefaultDataBag) t.get(1); ArrayList mutationList = new ArrayList(); - CfDef cfDef = getCfDef(); + CfDef cfDef = getCfDef(storeSignature); List marshallers = getDefaultMarshallers(cfDef); Map validators = getValidatorMap(cfDef); try @@ -404,7 +411,6 @@ public class CassandraStorage extends LoadFunc implements StoreFuncInterface column.timestamp = System.currentTimeMillis() * 1000; mutation.column_or_supercolumn = new ColumnOrSuperColumn(); mutation.column_or_supercolumn.column = column; - mutationList.add(mutation); } } mutationList.add(mutation); @@ -412,7 +418,7 @@ public class CassandraStorage extends LoadFunc implements StoreFuncInterface } catch (ClassCastException e) { - throw new IOException(e + " Output must be (key, {(column,value)...}) for ColumnFamily or (key, {supercolumn:{(column,value)...}...}) for SuperColumnFamily"); + throw new IOException(e + " Output must be (key, {(column,value)...}) for ColumnFamily or (key, {supercolumn:{(column,value)...}...}) for SuperColumnFamily", e); } try { @@ -430,14 +436,13 @@ public class CassandraStorage extends LoadFunc implements StoreFuncInterface /* Methods to get the column family schema from Cassandra */ - private void initSchema() + private void initSchema(String signature) { UDFContext context = UDFContext.getUDFContext(); Properties property = context.getUDFProperties(CassandraStorage.class); - String schemaContextKey = getSchemaContextKey(); // Only get the schema if we haven't already gotten it - if (!property.containsKey(schemaContextKey)) + if (!property.containsKey(signature)) { Cassandra.Client client = null; try @@ -455,7 +460,7 @@ public class CassandraStorage extends LoadFunc implements StoreFuncInterface break; } } - property.setProperty(schemaContextKey, cfdefToString(cfDef)); + property.setProperty(signature, cfdefToString(cfDef)); } catch (TException e) { @@ -521,14 +526,4 @@ public class CassandraStorage extends LoadFunc implements StoreFuncInterface } return cfDef; } - - private String getSchemaContextKey() - { - StringBuilder sb = new StringBuilder(UDFCONTEXT_SCHEMA_KEY_PREFIX); - sb.append('.'); - sb.append(keyspace); - sb.append('.'); - sb.append(column_family); - return sb.toString(); - } } From 14f82e900d43f54ff8a1a0a74d5c8c0375f244f1 Mon Sep 17 00:00:00 2001 From: Sylvain Lebresne Date: Fri, 22 Jul 2011 20:10:50 +0000 Subject: [PATCH 3/4] Don't include tmp file as sstable when creating cfs patch by slebresne; reviewed by jbellis for CASSANDRA-2929 git-svn-id: https://svn.apache.org/repos/asf/cassandra/branches/cassandra-0.7@1149716 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 4 ++++ src/java/org/apache/cassandra/db/ColumnFamilyStore.java | 9 +++++---- src/java/org/apache/cassandra/io/sstable/SSTable.java | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 7eafae0af5..90fc2ef77b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,7 @@ +0.7.9 + * don't include tmp files as sstable when create cfs (CASSANDRA-2929) + + 0.7.8 * fix possibility of spurious UnavailableException for LOCAL_QUORUM reads with dynamic snitch + read repair disabled (CASSANDRA-2870) diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index f84632df94..ba38dc8a96 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -225,7 +225,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean ssTables = new SSTableTracker(table.name, columnFamilyName); Set savedKeys = readSavedCache(DatabaseDescriptor.getSerializedKeyCachePath(table.name, columnFamilyName)); List sstables = new ArrayList(); - for (Map.Entry> sstableFiles : files(table.name, columnFamilyName, false).entrySet()) + for (Map.Entry> sstableFiles : files(table.name, columnFamilyName, false, false).entrySet()) { SSTableReader sstable; try @@ -499,7 +499,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean */ public static void scrubDataDirectories(String table, String columnFamily) { - for (Map.Entry> sstableFiles : files(table, columnFamily, true).entrySet()) + for (Map.Entry> sstableFiles : files(table, columnFamily, true, true).entrySet()) { Descriptor desc = sstableFiles.getKey(); Set components = sstableFiles.getValue(); @@ -628,7 +628,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean /** * Collects a map of sstable components. */ - private static Map> files(String keyspace, final String columnFamily, final boolean includeCompacted) + private static Map> files(String keyspace, final String columnFamily, final boolean includeCompacted, final boolean includeTemporary) { final Map> sstables = new HashMap>(); for (String directory : DatabaseDescriptor.getAllDataFileLocationsForTable(keyspace)) @@ -637,7 +637,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { if (component != null && component.left.cfname.equals(columnFamily)) { - if (includeCompacted || !new File(component.left.filenameFor(Component.COMPACTED_MARKER)).exists()) + if ((includeCompacted || !new File(component.left.filenameFor(Component.COMPACTED_MARKER)).exists()) + && (includeTemporary || !component.left.temporary)) { Set components = sstables.get(component.left); if (components == null) diff --git a/src/java/org/apache/cassandra/io/sstable/SSTable.java b/src/java/org/apache/cassandra/io/sstable/SSTable.java index 911ea64ccd..e1bafc184b 100644 --- a/src/java/org/apache/cassandra/io/sstable/SSTable.java +++ b/src/java/org/apache/cassandra/io/sstable/SSTable.java @@ -230,7 +230,7 @@ public abstract class SSTable FileUtils.skipBytesFully(ifile, 8); keys++; } - assert keys > 0 && ifile.getFilePointer() > 0 && ifile.length() > 0; + assert keys > 0 && ifile.getFilePointer() > 0 && ifile.length() > 0 : "Unexpected empty index file: " + ifile; long estimatedRows = ifile.length() / (ifile.getFilePointer() / keys); ifile.seek(0); return estimatedRows; From 8efd3688645abcc24422713350022f32a0c664f4 Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Tue, 26 Jul 2011 18:46:03 +0000 Subject: [PATCH 4/4] log Java classpath on startup patch by Jackson Chung; reviewed by jbellis for CASSANDRA-2895 git-svn-id: https://svn.apache.org/repos/asf/cassandra/branches/cassandra-0.7@1151209 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 3 ++- .../org/apache/cassandra/service/AbstractCassandraDaemon.java | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 90fc2ef77b..417cbebe80 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,5 +1,6 @@ 0.7.9 - * don't include tmp files as sstable when create cfs (CASSANDRA-2929) + * don't include tmp files as sstable when create cfs (CASSANDRA-2929) + * log Java classpath on startup (CASSANDRA-2895) 0.7.8 diff --git a/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java b/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java index 24b21e7786..de42239f92 100644 --- a/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java +++ b/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java @@ -113,6 +113,7 @@ public abstract class AbstractCassandraDaemon implements CassandraDaemon protected void setup() throws IOException { logger.info("Heap size: {}/{}", Runtime.getRuntime().totalMemory(), Runtime.getRuntime().maxMemory()); + logger.info("Classpath: {}", System.getProperty("java.class.path")); CLibrary.tryMlockall(); listenPort = DatabaseDescriptor.getRpcPort();