Merge branch 'cassandra-3.0' into cassandra-3.11
authorMarcus Eriksson <marcuse@apache.org>
Mon, 19 Feb 2018 15:53:43 +0000 (07:53 -0800)
committerMarcus Eriksson <marcuse@apache.org>
Mon, 19 Feb 2018 15:53:43 +0000 (07:53 -0800)
1  2 
CHANGES.txt
src/java/org/apache/cassandra/db/lifecycle/LogFile.java
src/java/org/apache/cassandra/db/lifecycle/LogRecord.java
src/java/org/apache/cassandra/db/lifecycle/LogTransaction.java
src/java/org/apache/cassandra/db/lifecycle/Tracker.java
test/unit/org/apache/cassandra/db/lifecycle/HelpersTest.java

diff --cc CHANGES.txt
@@@ -1,40 -1,17 +1,43 @@@
 -3.0.17
 +3.11.3
 + * RateBasedBackPressure unnecessarily invokes a lock on the Guava RateLimiter (CASSANDRA-14163)
 + * Fix wildcard GROUP BY queries (CASSANDRA-14209)
- Merged from 2.2
++Merged from 3.0:
+  * Pre-create deletion log records to finish compactions quicker (CASSANDRA-12763)
 -Merged from 2.1:
 - * CVE-2017-5929 Security vulnerability in Logback warning in NEWS.txt (CASSANDRA-14183)
+ Merged from 2.2:
   * Backport circleci yaml (CASSANDRA-14240)
- Merged from 2.1
++Merged from 2.1:
 + * CVE-2017-5929 Security vulnerability in Logback warning in NEWS.txt (CASSANDRA-14183)
  
 -3.0.16
 - * Fix unit test failures in ViewComplexTest (CASSANDRA-14219)
 - * Add MinGW uname check to start scripts (CASSANDRA-12940)
 - * Protect against overflow of local expiration time (CASSANDRA-14092)
++
 +3.11.2
 + * Fix ReadCommandTest (CASSANDRA-14234)
 + * Remove trailing period from latency reports at keyspace level (CASSANDRA-14233)
 + * Backport CASSANDRA-13080: Use new token allocation for non bootstrap case as well (CASSANDRA-14212)
 + * Remove dependencies on JVM internal classes from JMXServerUtils (CASSANDRA-14173) 
 + * Add DEFAULT, UNSET, MBEAN and MBEANS to `ReservedKeywords` (CASSANDRA-14205)
 + * Add Unittest for schema migration fix (CASSANDRA-14140)
 + * Print correct snitch info from nodetool describecluster (CASSANDRA-13528)
 + * Close socket on error during connect on OutboundTcpConnection (CASSANDRA-9630)
 + * Enable CDC unittest (CASSANDRA-14141)
 + * Acquire read lock before accessing CompactionStrategyManager fields (CASSANDRA-14139)
 + * Split CommitLogStressTest to avoid timeout (CASSANDRA-14143)
 + * Avoid invalidating disk boundaries unnecessarily (CASSANDRA-14083)
 + * Avoid exposing compaction strategy index externally (CASSANDRA-14082)
 + * Prevent continuous schema exchange between 3.0 and 3.11 nodes (CASSANDRA-14109)
 + * Fix imbalanced disks when replacing node with same address with JBOD (CASSANDRA-14084)
 + * Reload compaction strategies when disk boundaries are invalidated (CASSANDRA-13948)
 + * Remove OpenJDK log warning (CASSANDRA-13916)
 + * Prevent compaction strategies from looping indefinitely (CASSANDRA-14079)
 + * Cache disk boundaries (CASSANDRA-13215)
 + * Add asm jar to build.xml for maven builds (CASSANDRA-11193)
 + * Round buffer size to powers of 2 for the chunk cache (CASSANDRA-13897)
 + * Update jackson JSON jars (CASSANDRA-13949)
 + * Avoid locks when checking LCS fanout and if we should defrag (CASSANDRA-13930)
 + * Correctly count range tombstones in traces and tombstone thresholds (CASSANDRA-8527)
 +Merged from 3.0:
 + * Add MinGW uname check to start scripts (CASSANDRA-12840)
   * Use the correct digest file and reload sstable metadata in nodetool verify (CASSANDRA-14217)
   * Handle failure when mutating repaired status in Verifier (CASSANDRA-13933)
 - * Close socket on error during connect on OutboundTcpConnection (CASSANDRA-9630)
   * Set encoding for javadoc generation (CASSANDRA-14154)
   * Fix index target computation for dense composite tables with dropped compact storage (CASSANDRA-14104)
   * Improve commit log chain marker updating (CASSANDRA-14108)
@@@ -316,6 -318,20 +321,21 @@@ final class LogFile implements AutoClos
          return LogRecord.make(type, table);
      }
  
 -        File folder = table.descriptor.directory;
 -        replicas.maybeCreateReplica(folder, getFileName(folder), records);
+     /**
+      * this version of makeRecord takes an existing LogRecord and converts it to a
+      * record with the given type. This avoids listing the directory and if the
+      * LogRecord already exists, we have all components for the sstable
+      */
+     private LogRecord makeRecord(Type type, SSTable table, LogRecord record)
+     {
+         assert type == Type.ADD || type == Type.REMOVE;
++        File directory = table.descriptor.directory;
++        String fileName = StringUtils.join(directory, File.separator, getFileName());
++        replicas.maybeCreateReplica(directory, fileName, records);
+         return record.asType(type);
+     }
      private boolean addRecord(LogRecord record)
      {
          if (records.contains(record))