merge from 1.1
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ba6cd11b Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ba6cd11b Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ba6cd11b Branch: refs/heads/trunk Commit: ba6cd11b74c3cebc6491b5a868ac5c26add3872b Parents: 9719b68 9c8d949 Author: Jonathan Ellis <[email protected]> Authored: Thu Jan 24 08:57:47 2013 -0600 Committer: Jonathan Ellis <[email protected]> Committed: Thu Jan 24 08:57:47 2013 -0600 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../db/compaction/LazilyCompactedRow.java | 2 +- .../cassandra/io/sstable/SSTableMetadata.java | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ba6cd11b/CHANGES.txt ---------------------------------------------------------------------- diff --cc CHANGES.txt index 2f054f7,61bcf60..02317b1 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,55 -1,17 +1,56 @@@ -1.1.10 +1.2.1 + * GossipingPropertyFileSnitch loads saved dc/rack info if needed (CASSANDRA-5133) + * drain should flush system CFs too (CASSANDRA-4446) + * add inter_dc_tcp_nodelay setting (CASSANDRA-5148) + * re-allow wrapping ranges for start_token/end_token range pairing (CASSANDRA-5106) + * fix validation compaction of empty rows (CASSADRA-5136) + * nodetool methods to enable/disable hint storage/delivery (CASSANDRA-4750) + * disallow bloom filter false positive chance of 0 (CASSANDRA-5013) + * add threadpool size adjustment methods to JMXEnabledThreadPoolExecutor and + CompactionManagerMBean (CASSANDRA-5044) + * fix hinting for dropped local writes (CASSANDRA-4753) + * off-heap cache doesn't need mutable column container (CASSANDRA-5057) + * apply disk_failure_policy to bad disks on initial directory creation + (CASSANDRA-4847) + * Optimize name-based queries to use ArrayBackedSortedColumns (CASSANDRA-5043) + * Fall back to old manifest if most recent is unparseable (CASSANDRA-5041) + * pool [Compressed]RandomAccessReader objects on the partitioned read path + (CASSANDRA-4942) + * Add debug logging to list filenames processed by Directories.migrateFile + method (CASSANDRA-4939) + * Expose black-listed directories via JMX (CASSANDRA-4848) + * Log compaction merge counts (CASSANDRA-4894) + * Minimize byte array allocation by AbstractData{Input,Output} (CASSANDRA-5090) + * Add SSL support for the binary protocol (CASSANDRA-5031) + * Allow non-schema system ks modification for shuffle to work (CASSANDRA-5097) + * cqlsh: Add default limit to SELECT statements (CASSANDRA-4972) + * cqlsh: fix DESCRIBE for 1.1 cfs in CQL3 (CASSANDRA-5101) + * Correctly gossip with nodes >= 1.1.7 (CASSANDRA-5102) + * Ensure CL guarantees on digest mismatch (CASSANDRA-5113) + * Validate correctly selects on composite partition key (CASSANDRA-5122) + * Fix exception when adding collection (CASSANDRA-5117) + * Handle states for non-vnode clusters correctly (CASSANDRA-5127) + * Refuse unrecognized replication strategy options (CASSANDRA-4795) + * Pick the correct value validator in sstable2json for cql3 tables (CASSANDRA-5134) + * Validate login for describe_keyspace, describe_keyspaces and set_keyspace + (CASSANDRA-5144) + * Fix inserting empty maps (CASSANDRA-5141) + * Don't remove tokens from System table for node we know (CASSANDRA-5121) + * fix streaming progress report for compresed files (CASSANDRA-5130) + * Coverage analysis for low-CL queries (CASSANDRA-4858) + * Stop interpreting dates as valid timeUUID value (CASSANDRA-4936) + * Adds E notation for floating point numbers (CASSANDRA-4927) + * Detect (and warn) unintentional use of the cql2 thrift methods when cql3 was + intended (CASSANDRA-5172) +Merged from 1.1: * fix saved key cache not loading at startup (CASSANDRA-5166) * fix ConcurrentModificationException in getBootstrapSource (CASSANDRA-5170) + * fix sstable maxtimestamp for row deletes and pre-1.1.1 sstables (CASSANDRA-5153) - - -1.1.9 * Simplify CompressedRandomAccessReader to work around JDK FD bug (CASSANDRA-5088) * Improve handling a changing target throttle rate mid-compaction (CASSANDRA-5087) - * fix multithreaded compaction deadlock (CASSANDRA-4492) - * fix specifying and altering crc_check_chance (CASSANDRA-5053) - * Don't expire columns sooner than they should in 2ndary indexes (CASSANDRA-5079) * Pig: correctly decode row keys in widerow mode (CASSANDRA-5098) * nodetool repair command now prints progress (CASSANDRA-4767) + * Ensure Jackson dependency matches lib (CASSANDRA-5126) * fix user defined compaction to run against 1.1 data directory (CASSANDRA-5118) * Fix CQL3 BATCH authorization caching (CASSANDRA-5145) * fix get_count returns incorrect value with TTL (CASSANDRA-5099) http://git-wip-us.apache.org/repos/asf/cassandra/blob/ba6cd11b/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java index 7981d88,37de137..76d5100 --- a/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java +++ b/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java @@@ -84,24 -83,16 +84,24 @@@ public class LazilyCompactedRow extend else emptyColumnFamily.delete(cf); } + this.shouldPurge = controller.shouldPurge(key, maxDelTimestamp); - // initialize row header so isEmpty can be called - headerBuffer = new DataOutputBuffer(); - ColumnIndexer.serialize(this, headerBuffer); + try + { + indexAndWrite(null); + } + catch (IOException e) + { + throw new RuntimeException(e); + } // reach into the reducer used during iteration to get column count, size, max column timestamp // (however, if there are zero columns, iterator() will not be called by ColumnIndexer and reducer will be null) - columnCount = reducer == null ? 0 : reducer.size; + columnStats = new ColumnStats(reducer == null ? 0 : reducer.columns, + reducer == null ? Long.MAX_VALUE : reducer.minTimestampSeen, - reducer == null ? Long.MIN_VALUE : reducer.maxTimestampSeen, ++ reducer == null ? maxDelTimestamp : Math.max(maxDelTimestamp, reducer.maxTimestampSeen), + reducer == null ? new StreamingHistogram(SSTable.TOMBSTONE_HISTOGRAM_BIN_SIZE) : reducer.tombstones + ); columnSerializedSize = reducer == null ? 0 : reducer.serializedSize; - long rowTombstone = emptyColumnFamily.getMarkedForDeleteAt(); - maxTimestamp = reducer == null ? rowTombstone : Math.max(rowTombstone, reducer.maxTimestampSeen); reducer = null; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/ba6cd11b/src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java index 8bd9e35,99ced30..bb4ded4 --- a/src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java +++ b/src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java @@@ -291,17 -223,14 +291,17 @@@ public class SSTableMetadat // make sure we don't omit replaying something that we should. see CASSANDRA-4782 replayPosition = ReplayPosition.NONE; } - long maxTimestamp = desc.containsTimestamp() ? dis.readLong() : Long.MIN_VALUE; - if (!desc.tracksMaxTimestamp) // see javadoc to Descriptor.containsTimestamp + long minTimestamp = desc.version.tracksMinTimestamp ? dis.readLong() : Long.MIN_VALUE; + if (!desc.version.tracksMinTimestamp) + minTimestamp = Long.MAX_VALUE; + long maxTimestamp = desc.version.containsTimestamp() ? dis.readLong() : Long.MIN_VALUE; + if (!desc.version.tracksMaxTimestamp) // see javadoc to Descriptor.containsTimestamp - maxTimestamp = Long.MIN_VALUE; + maxTimestamp = Long.MAX_VALUE; - double compressionRatio = desc.hasCompressionRatio + double compressionRatio = desc.version.hasCompressionRatio ? dis.readDouble() - : Double.MIN_VALUE; - String partitioner = desc.hasPartitioner ? dis.readUTF() : null; - int nbAncestors = desc.hasAncestors ? dis.readInt() : 0; + : NO_COMPRESSION_RATIO; + String partitioner = desc.version.hasPartitioner ? dis.readUTF() : null; + int nbAncestors = desc.version.hasAncestors ? dis.readInt() : 0; Set<Integer> ancestors = new HashSet<Integer>(nbAncestors); for (int i = 0; i < nbAncestors; i++) ancestors.add(dis.readInt());
