You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by yu...@apache.org on 2015/09/16 15:47:42 UTC

[01/10] cassandra git commit: Fix NPE in nodetool compactionhistory

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 4b1d59e13 -> 588dc06eb
  refs/heads/cassandra-2.2 5b05b6826 -> 426109c50
  refs/heads/cassandra-3.0 a22d16b7a -> f542a20ea
  refs/heads/trunk e2eb867bd -> 2f82a69ea


Fix NPE in nodetool compactionhistory

patch by Pierre N. and yukim; reviewed by yukim for CASSANDRA-9758


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/588dc06e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/588dc06e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/588dc06e

Branch: refs/heads/cassandra-2.1
Commit: 588dc06eb8b5a7678128e9f0c0421fc391b14bce
Parents: 4b1d59e
Author: Yuki Morishita <yu...@apache.org>
Authored: Wed Sep 16 08:36:50 2015 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Wed Sep 16 08:36:50 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../org/apache/cassandra/utils/FBUtilities.java  | 16 ++++++++++++++--
 .../apache/cassandra/utils/FBUtilitiesTest.java  | 19 +++++++++++++++++++
 3 files changed, 34 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/588dc06e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 12523be..2787739 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.10
+ * Fix NPE in nodetool compactionhistory (CASSANDRA-9758)
  * (Pig) support BulkOutputFormat as a URL parameter (CASSANDRA-7410)
  * BATCH statement is broken in cqlsh (CASSANDRA-10272)
  * Added configurable warning threshold for GC duration (CASSANDRA-8907)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/588dc06e/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java
index 214f2f5..f866610 100644
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@ -28,7 +28,6 @@ import java.net.UnknownHostException;
 import java.nio.ByteBuffer;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
-import java.text.NumberFormat;
 import java.util.*;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
@@ -36,6 +35,9 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.zip.Checksum;
 
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
 import com.google.common.base.Joiner;
 import com.google.common.collect.AbstractIterator;
 import org.apache.cassandra.io.util.FileUtils;
@@ -472,8 +474,18 @@ public class FBUtilities
         return s;
     }
 
-    public static String toString(Map<?,?> map)
+    /**
+     * Make straing out of the given {@code Map}.
+     *
+     * @param map Map to make string.
+     * @return String representation of all entries in the map,
+     *         where key and value pair is concatenated with ':'.
+     */
+    @Nonnull
+    public static String toString(@Nullable Map<?, ?> map)
     {
+        if (map == null)
+            return "";
         Joiner.MapJoiner joiner = Joiner.on(", ").withKeyValueSeparator(":");
         return joiner.join(map);
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/588dc06e/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java b/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
index adf3763..c82bcc9 100644
--- a/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
+++ b/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
@@ -27,6 +27,11 @@ import java.nio.charset.StandardCharsets;
 import com.google.common.primitives.Ints;
 import org.junit.Test;
 
+import java.util.Map;
+import java.util.TreeMap;
+
+import static org.junit.Assert.assertEquals;
+
 public class FBUtilitiesTest
 {
     @Test
@@ -70,6 +75,20 @@ public class FBUtilitiesTest
         }
     }
 
+    @Test
+    public void testToString()
+    {
+        // null turns to empty string
+        assertEquals("", FBUtilities.toString(null));
+        Map<String, String> map = new TreeMap<>();
+        // empty map turns to empty string
+        assertEquals("", FBUtilities.toString(map));
+        map.put("aaa", "bbb");
+        assertEquals("aaa:bbb", FBUtilities.toString(map));
+        map.put("ccc", "ddd");
+        assertEquals("aaa:bbb, ccc:ddd", FBUtilities.toString(map));
+    }
+
     @Test(expected=CharacterCodingException.class)
     public void testDecode() throws IOException
     {


[10/10] cassandra git commit: Merge branch 'cassandra-3.0' into trunk

Posted by yu...@apache.org.
Merge branch 'cassandra-3.0' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2f82a69e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2f82a69e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2f82a69e

Branch: refs/heads/trunk
Commit: 2f82a69ea270aa1afa886af795e69c006ac6daec
Parents: e2eb867 f542a20
Author: Yuki Morishita <yu...@apache.org>
Authored: Wed Sep 16 08:47:19 2015 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Wed Sep 16 08:47:19 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                       |  1 +
 .../org/apache/cassandra/utils/FBUtilities.java   | 15 ++++++++++++++-
 .../apache/cassandra/utils/FBUtilitiesTest.java   | 18 ++++++++++++++++++
 3 files changed, 33 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/2f82a69e/CHANGES.txt
----------------------------------------------------------------------


[04/10] cassandra git commit: Fix NPE in nodetool compactionhistory

Posted by yu...@apache.org.
Fix NPE in nodetool compactionhistory

patch by Pierre N. and yukim; reviewed by yukim for CASSANDRA-9758


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/588dc06e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/588dc06e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/588dc06e

Branch: refs/heads/trunk
Commit: 588dc06eb8b5a7678128e9f0c0421fc391b14bce
Parents: 4b1d59e
Author: Yuki Morishita <yu...@apache.org>
Authored: Wed Sep 16 08:36:50 2015 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Wed Sep 16 08:36:50 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../org/apache/cassandra/utils/FBUtilities.java  | 16 ++++++++++++++--
 .../apache/cassandra/utils/FBUtilitiesTest.java  | 19 +++++++++++++++++++
 3 files changed, 34 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/588dc06e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 12523be..2787739 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.10
+ * Fix NPE in nodetool compactionhistory (CASSANDRA-9758)
  * (Pig) support BulkOutputFormat as a URL parameter (CASSANDRA-7410)
  * BATCH statement is broken in cqlsh (CASSANDRA-10272)
  * Added configurable warning threshold for GC duration (CASSANDRA-8907)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/588dc06e/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java
index 214f2f5..f866610 100644
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@ -28,7 +28,6 @@ import java.net.UnknownHostException;
 import java.nio.ByteBuffer;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
-import java.text.NumberFormat;
 import java.util.*;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
@@ -36,6 +35,9 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.zip.Checksum;
 
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
 import com.google.common.base.Joiner;
 import com.google.common.collect.AbstractIterator;
 import org.apache.cassandra.io.util.FileUtils;
@@ -472,8 +474,18 @@ public class FBUtilities
         return s;
     }
 
-    public static String toString(Map<?,?> map)
+    /**
+     * Make straing out of the given {@code Map}.
+     *
+     * @param map Map to make string.
+     * @return String representation of all entries in the map,
+     *         where key and value pair is concatenated with ':'.
+     */
+    @Nonnull
+    public static String toString(@Nullable Map<?, ?> map)
     {
+        if (map == null)
+            return "";
         Joiner.MapJoiner joiner = Joiner.on(", ").withKeyValueSeparator(":");
         return joiner.join(map);
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/588dc06e/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java b/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
index adf3763..c82bcc9 100644
--- a/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
+++ b/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
@@ -27,6 +27,11 @@ import java.nio.charset.StandardCharsets;
 import com.google.common.primitives.Ints;
 import org.junit.Test;
 
+import java.util.Map;
+import java.util.TreeMap;
+
+import static org.junit.Assert.assertEquals;
+
 public class FBUtilitiesTest
 {
     @Test
@@ -70,6 +75,20 @@ public class FBUtilitiesTest
         }
     }
 
+    @Test
+    public void testToString()
+    {
+        // null turns to empty string
+        assertEquals("", FBUtilities.toString(null));
+        Map<String, String> map = new TreeMap<>();
+        // empty map turns to empty string
+        assertEquals("", FBUtilities.toString(map));
+        map.put("aaa", "bbb");
+        assertEquals("aaa:bbb", FBUtilities.toString(map));
+        map.put("ccc", "ddd");
+        assertEquals("aaa:bbb, ccc:ddd", FBUtilities.toString(map));
+    }
+
     @Test(expected=CharacterCodingException.class)
     public void testDecode() throws IOException
     {


[07/10] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

Posted by yu...@apache.org.
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/426109c5
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/426109c5
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/426109c5

Branch: refs/heads/trunk
Commit: 426109c50bf7f264c1965dd77482c161cbec0242
Parents: 5b05b68 588dc06
Author: Yuki Morishita <yu...@apache.org>
Authored: Wed Sep 16 08:39:29 2015 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Wed Sep 16 08:39:29 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../org/apache/cassandra/utils/FBUtilities.java  | 16 ++++++++++++++--
 .../apache/cassandra/utils/FBUtilitiesTest.java  | 19 +++++++++++++++++++
 3 files changed, 34 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/426109c5/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 7b5fa78,2787739..7deebcf
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,14 -1,5 +1,15 @@@
 -2.1.10
 +2.2.2
 + * Defer default role manager setup until all nodes are on 2.2+ (CASSANDRA-9761)
 + * Cancel transaction for sstables we wont redistribute index summary
 +   for (CASSANDRA-10270)
 + * Handle missing RoleManager in config after upgrade to 2.2 (CASSANDRA-10209) 
 + * Retry snapshot deletion after compaction and gc on Windows (CASSANDRA-10222)
 + * Fix failure to start with space in directory path on Windows (CASSANDRA-10239)
 + * Fix repair hang when snapshot failed (CASSANDRA-10057)
 + * Fall back to 1/4 commitlog volume for commitlog_total_space on small disks
 +   (CASSANDRA-10199)
 +Merged from 2.1:
+  * Fix NPE in nodetool compactionhistory (CASSANDRA-9758)
   * (Pig) support BulkOutputFormat as a URL parameter (CASSANDRA-7410)
   * BATCH statement is broken in cqlsh (CASSANDRA-10272)
   * Added configurable warning threshold for GC duration (CASSANDRA-8907)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/426109c5/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/utils/FBUtilities.java
index b41bdab,f866610..6ef64ef
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@@ -26,14 -28,19 +26,16 @@@ import java.net.*
  import java.nio.ByteBuffer;
  import java.security.MessageDigest;
  import java.security.NoSuchAlgorithmException;
- import java.text.NumberFormat;
  import java.util.*;
 -import java.util.concurrent.ExecutionException;
 -import java.util.concurrent.Future;
 -import java.util.concurrent.TimeUnit;
 -import java.util.concurrent.TimeoutException;
 +import java.util.concurrent.*;
 +import java.util.zip.Adler32;
  import java.util.zip.Checksum;
  
+ import javax.annotation.Nonnull;
+ import javax.annotation.Nullable;
+ 
  import com.google.common.base.Joiner;
  import com.google.common.collect.AbstractIterator;
 -import org.apache.cassandra.io.util.FileUtils;
  import org.apache.commons.lang3.StringUtils;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;


[09/10] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

Posted by yu...@apache.org.
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f542a20e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f542a20e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f542a20e

Branch: refs/heads/trunk
Commit: f542a20eaa54db21123001c85f211999180bae14
Parents: a22d16b 426109c
Author: Yuki Morishita <yu...@apache.org>
Authored: Wed Sep 16 08:47:14 2015 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Wed Sep 16 08:47:14 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                       |  1 +
 .../org/apache/cassandra/utils/FBUtilities.java   | 15 ++++++++++++++-
 .../apache/cassandra/utils/FBUtilitiesTest.java   | 18 ++++++++++++++++++
 3 files changed, 33 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f542a20e/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 7bb5b71,7deebcf..c688615
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,48 -1,8 +1,49 @@@
 -2.2.2
 +3.0.0-rc1
 + * Add flag to enable/disable coordinator batchlog for MV writes (CASSANDRA-10230)
 + * Update cqlsh COPY for new internal driver serialization interface (CASSANDRA-10318)
 + * Give index implementations more control over rebuild operations (CASSANDRA-10312)
 + * Update index file format (CASSANDRA-10314)
 + * Add "shadowable" row tombstones to deal with mv timestamp issues (CASSANDRA-10261)
 + * CFS.loadNewSSTables() broken for pre-3.0 sstables
 + * Cache selected index in read command to reduce lookups (CASSANDRA-10215)
 + * Small optimizations of sstable index serialization (CASSANDRA-10232)
 + * Support for both encrypted and unencrypted native transport connections (CASSANDRA-9590)
 +Merged from 2.2:
   * Defer default role manager setup until all nodes are on 2.2+ (CASSANDRA-9761)
 + * Handle missing RoleManager in config after upgrade to 2.2 (CASSANDRA-10209)
 +Merged from 2.1:
++ * Fix NPE in nodetool compactionhistory (CASSANDRA-9758)
 + * (Pig) support BulkOutputFormat as a URL parameter (CASSANDRA-7410)
 + * BATCH statement is broken in cqlsh (CASSANDRA-10272)
 + * (cqlsh) Make cqlsh PEP8 Compliant (CASSANDRA-10066)
 + * (cqlsh) Fix error when starting cqlsh with --debug (CASSANDRA-10282)
 + * Scrub, Cleanup and Upgrade do not unmark compacting until all operations
 +   have completed, regardless of the occurence of exceptions (CASSANDRA-10274)
 +
 +
 +3.0.0-beta2
 + * Fix columns returned by AbstractBtreePartitions (CASSANDRA-10220)
 + * Fix backward compatibility issue due to AbstractBounds serialization bug (CASSANDRA-9857)
 + * Fix startup error when upgrading nodes (CASSANDRA-10136)
 + * Base table PRIMARY KEY can be assumed to be NOT NULL in MV creation (CASSANDRA-10147)
 + * Improve batchlog write patch (CASSANDRA-9673)
 + * Re-apply MaterializedView updates on commitlog replay (CASSANDRA-10164)
 + * Require AbstractType.isByteOrderComparable declaration in constructor (CASSANDRA-9901)
 + * Avoid digest mismatch on upgrade to 3.0 (CASSANDRA-9554)
 + * Fix Materialized View builder when adding multiple MVs (CASSANDRA-10156)
 + * Choose better poolingOptions for protocol v4 in cassandra-stress (CASSANDRA-10182)
 + * Fix LWW bug affecting Materialized Views (CASSANDRA-10197)
 + * Ensures frozen sets and maps are always sorted (CASSANDRA-10162)
 + * Don't deadlock when flushing CFS backed custom indexes (CASSANDRA-10181)
 + * Fix double flushing of secondary index tables (CASSANDRA-10180)
 + * Fix incorrect handling of range tombstones in thrift (CASSANDRA-10046)
 + * Only use batchlog when paired materialized view replica is remote (CASSANDRA-10061)
 + * Reuse TemporalRow when updating multiple MaterializedViews (CASSANDRA-10060)
 + * Validate gc_grace_seconds for batchlog writes and MVs (CASSANDRA-9917)
 + * Fix sstablerepairedset (CASSANDRA-10132)
 +Merged from 2.2:
   * Cancel transaction for sstables we wont redistribute index summary
     for (CASSANDRA-10270)
 - * Handle missing RoleManager in config after upgrade to 2.2 (CASSANDRA-10209) 
   * Retry snapshot deletion after compaction and gc on Windows (CASSANDRA-10222)
   * Fix failure to start with space in directory path on Windows (CASSANDRA-10239)
   * Fix repair hang when snapshot failed (CASSANDRA-10057)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f542a20e/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/utils/FBUtilities.java
index 6d31d8c,6ef64ef..c4b4193
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@@ -26,10 -28,14 +26,13 @@@ import java.security.MessageDigest
  import java.security.NoSuchAlgorithmException;
  import java.util.*;
  import java.util.concurrent.*;
 -import java.util.zip.Adler32;
 +import java.util.zip.CRC32;
  import java.util.zip.Checksum;
  
+ import javax.annotation.Nonnull;
+ import javax.annotation.Nullable;
+ 
  import com.google.common.base.Joiner;
 -import com.google.common.collect.AbstractIterator;
  import org.apache.commons.lang3.StringUtils;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
@@@ -485,13 -486,18 +488,23 @@@ public class FBUtilitie
          return s;
      }
  
 +    public static <T> NavigableSet<T> emptySortedSet(Comparator<? super T> comparator)
 +    {
 +        return new TreeSet<T>(comparator);
 +    }
 +
-     public static String toString(Map<?,?> map)
+     /**
+      * Make straing out of the given {@code Map}.
+      *
+      * @param map Map to make string.
+      * @return String representation of all entries in the map,
+      *         where key and value pair is concatenated with ':'.
+      */
+     @Nonnull
+     public static String toString(@Nullable Map<?, ?> map)
      {
+         if (map == null)
+             return "";
          Joiner.MapJoiner joiner = Joiner.on(", ").withKeyValueSeparator(":");
          return joiner.join(map);
      }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f542a20e/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
index 062387f,c82bcc9..90c5f05
--- a/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
+++ b/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
@@@ -26,7 -27,10 +26,11 @@@ import java.nio.charset.StandardCharset
  import com.google.common.primitives.Ints;
  import org.junit.Test;
  
+ import java.util.Map;
+ import java.util.TreeMap;
+ 
+ import static org.junit.Assert.assertEquals;
 +import static org.junit.Assert.fail;
  
  public class FBUtilitiesTest
  {


[03/10] cassandra git commit: Fix NPE in nodetool compactionhistory

Posted by yu...@apache.org.
Fix NPE in nodetool compactionhistory

patch by Pierre N. and yukim; reviewed by yukim for CASSANDRA-9758


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/588dc06e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/588dc06e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/588dc06e

Branch: refs/heads/cassandra-3.0
Commit: 588dc06eb8b5a7678128e9f0c0421fc391b14bce
Parents: 4b1d59e
Author: Yuki Morishita <yu...@apache.org>
Authored: Wed Sep 16 08:36:50 2015 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Wed Sep 16 08:36:50 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../org/apache/cassandra/utils/FBUtilities.java  | 16 ++++++++++++++--
 .../apache/cassandra/utils/FBUtilitiesTest.java  | 19 +++++++++++++++++++
 3 files changed, 34 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/588dc06e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 12523be..2787739 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.10
+ * Fix NPE in nodetool compactionhistory (CASSANDRA-9758)
  * (Pig) support BulkOutputFormat as a URL parameter (CASSANDRA-7410)
  * BATCH statement is broken in cqlsh (CASSANDRA-10272)
  * Added configurable warning threshold for GC duration (CASSANDRA-8907)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/588dc06e/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java
index 214f2f5..f866610 100644
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@ -28,7 +28,6 @@ import java.net.UnknownHostException;
 import java.nio.ByteBuffer;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
-import java.text.NumberFormat;
 import java.util.*;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
@@ -36,6 +35,9 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.zip.Checksum;
 
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
 import com.google.common.base.Joiner;
 import com.google.common.collect.AbstractIterator;
 import org.apache.cassandra.io.util.FileUtils;
@@ -472,8 +474,18 @@ public class FBUtilities
         return s;
     }
 
-    public static String toString(Map<?,?> map)
+    /**
+     * Make straing out of the given {@code Map}.
+     *
+     * @param map Map to make string.
+     * @return String representation of all entries in the map,
+     *         where key and value pair is concatenated with ':'.
+     */
+    @Nonnull
+    public static String toString(@Nullable Map<?, ?> map)
     {
+        if (map == null)
+            return "";
         Joiner.MapJoiner joiner = Joiner.on(", ").withKeyValueSeparator(":");
         return joiner.join(map);
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/588dc06e/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java b/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
index adf3763..c82bcc9 100644
--- a/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
+++ b/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
@@ -27,6 +27,11 @@ import java.nio.charset.StandardCharsets;
 import com.google.common.primitives.Ints;
 import org.junit.Test;
 
+import java.util.Map;
+import java.util.TreeMap;
+
+import static org.junit.Assert.assertEquals;
+
 public class FBUtilitiesTest
 {
     @Test
@@ -70,6 +75,20 @@ public class FBUtilitiesTest
         }
     }
 
+    @Test
+    public void testToString()
+    {
+        // null turns to empty string
+        assertEquals("", FBUtilities.toString(null));
+        Map<String, String> map = new TreeMap<>();
+        // empty map turns to empty string
+        assertEquals("", FBUtilities.toString(map));
+        map.put("aaa", "bbb");
+        assertEquals("aaa:bbb", FBUtilities.toString(map));
+        map.put("ccc", "ddd");
+        assertEquals("aaa:bbb, ccc:ddd", FBUtilities.toString(map));
+    }
+
     @Test(expected=CharacterCodingException.class)
     public void testDecode() throws IOException
     {


[05/10] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

Posted by yu...@apache.org.
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/426109c5
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/426109c5
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/426109c5

Branch: refs/heads/cassandra-3.0
Commit: 426109c50bf7f264c1965dd77482c161cbec0242
Parents: 5b05b68 588dc06
Author: Yuki Morishita <yu...@apache.org>
Authored: Wed Sep 16 08:39:29 2015 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Wed Sep 16 08:39:29 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../org/apache/cassandra/utils/FBUtilities.java  | 16 ++++++++++++++--
 .../apache/cassandra/utils/FBUtilitiesTest.java  | 19 +++++++++++++++++++
 3 files changed, 34 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/426109c5/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 7b5fa78,2787739..7deebcf
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,14 -1,5 +1,15 @@@
 -2.1.10
 +2.2.2
 + * Defer default role manager setup until all nodes are on 2.2+ (CASSANDRA-9761)
 + * Cancel transaction for sstables we wont redistribute index summary
 +   for (CASSANDRA-10270)
 + * Handle missing RoleManager in config after upgrade to 2.2 (CASSANDRA-10209) 
 + * Retry snapshot deletion after compaction and gc on Windows (CASSANDRA-10222)
 + * Fix failure to start with space in directory path on Windows (CASSANDRA-10239)
 + * Fix repair hang when snapshot failed (CASSANDRA-10057)
 + * Fall back to 1/4 commitlog volume for commitlog_total_space on small disks
 +   (CASSANDRA-10199)
 +Merged from 2.1:
+  * Fix NPE in nodetool compactionhistory (CASSANDRA-9758)
   * (Pig) support BulkOutputFormat as a URL parameter (CASSANDRA-7410)
   * BATCH statement is broken in cqlsh (CASSANDRA-10272)
   * Added configurable warning threshold for GC duration (CASSANDRA-8907)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/426109c5/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/utils/FBUtilities.java
index b41bdab,f866610..6ef64ef
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@@ -26,14 -28,19 +26,16 @@@ import java.net.*
  import java.nio.ByteBuffer;
  import java.security.MessageDigest;
  import java.security.NoSuchAlgorithmException;
- import java.text.NumberFormat;
  import java.util.*;
 -import java.util.concurrent.ExecutionException;
 -import java.util.concurrent.Future;
 -import java.util.concurrent.TimeUnit;
 -import java.util.concurrent.TimeoutException;
 +import java.util.concurrent.*;
 +import java.util.zip.Adler32;
  import java.util.zip.Checksum;
  
+ import javax.annotation.Nonnull;
+ import javax.annotation.Nullable;
+ 
  import com.google.common.base.Joiner;
  import com.google.common.collect.AbstractIterator;
 -import org.apache.cassandra.io.util.FileUtils;
  import org.apache.commons.lang3.StringUtils;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;


[02/10] cassandra git commit: Fix NPE in nodetool compactionhistory

Posted by yu...@apache.org.
Fix NPE in nodetool compactionhistory

patch by Pierre N. and yukim; reviewed by yukim for CASSANDRA-9758


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/588dc06e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/588dc06e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/588dc06e

Branch: refs/heads/cassandra-2.2
Commit: 588dc06eb8b5a7678128e9f0c0421fc391b14bce
Parents: 4b1d59e
Author: Yuki Morishita <yu...@apache.org>
Authored: Wed Sep 16 08:36:50 2015 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Wed Sep 16 08:36:50 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../org/apache/cassandra/utils/FBUtilities.java  | 16 ++++++++++++++--
 .../apache/cassandra/utils/FBUtilitiesTest.java  | 19 +++++++++++++++++++
 3 files changed, 34 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/588dc06e/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 12523be..2787739 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.10
+ * Fix NPE in nodetool compactionhistory (CASSANDRA-9758)
  * (Pig) support BulkOutputFormat as a URL parameter (CASSANDRA-7410)
  * BATCH statement is broken in cqlsh (CASSANDRA-10272)
  * Added configurable warning threshold for GC duration (CASSANDRA-8907)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/588dc06e/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java
index 214f2f5..f866610 100644
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@ -28,7 +28,6 @@ import java.net.UnknownHostException;
 import java.nio.ByteBuffer;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
-import java.text.NumberFormat;
 import java.util.*;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
@@ -36,6 +35,9 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.zip.Checksum;
 
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
 import com.google.common.base.Joiner;
 import com.google.common.collect.AbstractIterator;
 import org.apache.cassandra.io.util.FileUtils;
@@ -472,8 +474,18 @@ public class FBUtilities
         return s;
     }
 
-    public static String toString(Map<?,?> map)
+    /**
+     * Make straing out of the given {@code Map}.
+     *
+     * @param map Map to make string.
+     * @return String representation of all entries in the map,
+     *         where key and value pair is concatenated with ':'.
+     */
+    @Nonnull
+    public static String toString(@Nullable Map<?, ?> map)
     {
+        if (map == null)
+            return "";
         Joiner.MapJoiner joiner = Joiner.on(", ").withKeyValueSeparator(":");
         return joiner.join(map);
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/588dc06e/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java b/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
index adf3763..c82bcc9 100644
--- a/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
+++ b/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
@@ -27,6 +27,11 @@ import java.nio.charset.StandardCharsets;
 import com.google.common.primitives.Ints;
 import org.junit.Test;
 
+import java.util.Map;
+import java.util.TreeMap;
+
+import static org.junit.Assert.assertEquals;
+
 public class FBUtilitiesTest
 {
     @Test
@@ -70,6 +75,20 @@ public class FBUtilitiesTest
         }
     }
 
+    @Test
+    public void testToString()
+    {
+        // null turns to empty string
+        assertEquals("", FBUtilities.toString(null));
+        Map<String, String> map = new TreeMap<>();
+        // empty map turns to empty string
+        assertEquals("", FBUtilities.toString(map));
+        map.put("aaa", "bbb");
+        assertEquals("aaa:bbb", FBUtilities.toString(map));
+        map.put("ccc", "ddd");
+        assertEquals("aaa:bbb, ccc:ddd", FBUtilities.toString(map));
+    }
+
     @Test(expected=CharacterCodingException.class)
     public void testDecode() throws IOException
     {


[08/10] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

Posted by yu...@apache.org.
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f542a20e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f542a20e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f542a20e

Branch: refs/heads/cassandra-3.0
Commit: f542a20eaa54db21123001c85f211999180bae14
Parents: a22d16b 426109c
Author: Yuki Morishita <yu...@apache.org>
Authored: Wed Sep 16 08:47:14 2015 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Wed Sep 16 08:47:14 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                       |  1 +
 .../org/apache/cassandra/utils/FBUtilities.java   | 15 ++++++++++++++-
 .../apache/cassandra/utils/FBUtilitiesTest.java   | 18 ++++++++++++++++++
 3 files changed, 33 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f542a20e/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 7bb5b71,7deebcf..c688615
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,48 -1,8 +1,49 @@@
 -2.2.2
 +3.0.0-rc1
 + * Add flag to enable/disable coordinator batchlog for MV writes (CASSANDRA-10230)
 + * Update cqlsh COPY for new internal driver serialization interface (CASSANDRA-10318)
 + * Give index implementations more control over rebuild operations (CASSANDRA-10312)
 + * Update index file format (CASSANDRA-10314)
 + * Add "shadowable" row tombstones to deal with mv timestamp issues (CASSANDRA-10261)
 + * CFS.loadNewSSTables() broken for pre-3.0 sstables
 + * Cache selected index in read command to reduce lookups (CASSANDRA-10215)
 + * Small optimizations of sstable index serialization (CASSANDRA-10232)
 + * Support for both encrypted and unencrypted native transport connections (CASSANDRA-9590)
 +Merged from 2.2:
   * Defer default role manager setup until all nodes are on 2.2+ (CASSANDRA-9761)
 + * Handle missing RoleManager in config after upgrade to 2.2 (CASSANDRA-10209)
 +Merged from 2.1:
++ * Fix NPE in nodetool compactionhistory (CASSANDRA-9758)
 + * (Pig) support BulkOutputFormat as a URL parameter (CASSANDRA-7410)
 + * BATCH statement is broken in cqlsh (CASSANDRA-10272)
 + * (cqlsh) Make cqlsh PEP8 Compliant (CASSANDRA-10066)
 + * (cqlsh) Fix error when starting cqlsh with --debug (CASSANDRA-10282)
 + * Scrub, Cleanup and Upgrade do not unmark compacting until all operations
 +   have completed, regardless of the occurence of exceptions (CASSANDRA-10274)
 +
 +
 +3.0.0-beta2
 + * Fix columns returned by AbstractBtreePartitions (CASSANDRA-10220)
 + * Fix backward compatibility issue due to AbstractBounds serialization bug (CASSANDRA-9857)
 + * Fix startup error when upgrading nodes (CASSANDRA-10136)
 + * Base table PRIMARY KEY can be assumed to be NOT NULL in MV creation (CASSANDRA-10147)
 + * Improve batchlog write patch (CASSANDRA-9673)
 + * Re-apply MaterializedView updates on commitlog replay (CASSANDRA-10164)
 + * Require AbstractType.isByteOrderComparable declaration in constructor (CASSANDRA-9901)
 + * Avoid digest mismatch on upgrade to 3.0 (CASSANDRA-9554)
 + * Fix Materialized View builder when adding multiple MVs (CASSANDRA-10156)
 + * Choose better poolingOptions for protocol v4 in cassandra-stress (CASSANDRA-10182)
 + * Fix LWW bug affecting Materialized Views (CASSANDRA-10197)
 + * Ensures frozen sets and maps are always sorted (CASSANDRA-10162)
 + * Don't deadlock when flushing CFS backed custom indexes (CASSANDRA-10181)
 + * Fix double flushing of secondary index tables (CASSANDRA-10180)
 + * Fix incorrect handling of range tombstones in thrift (CASSANDRA-10046)
 + * Only use batchlog when paired materialized view replica is remote (CASSANDRA-10061)
 + * Reuse TemporalRow when updating multiple MaterializedViews (CASSANDRA-10060)
 + * Validate gc_grace_seconds for batchlog writes and MVs (CASSANDRA-9917)
 + * Fix sstablerepairedset (CASSANDRA-10132)
 +Merged from 2.2:
   * Cancel transaction for sstables we wont redistribute index summary
     for (CASSANDRA-10270)
 - * Handle missing RoleManager in config after upgrade to 2.2 (CASSANDRA-10209) 
   * Retry snapshot deletion after compaction and gc on Windows (CASSANDRA-10222)
   * Fix failure to start with space in directory path on Windows (CASSANDRA-10239)
   * Fix repair hang when snapshot failed (CASSANDRA-10057)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f542a20e/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/utils/FBUtilities.java
index 6d31d8c,6ef64ef..c4b4193
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@@ -26,10 -28,14 +26,13 @@@ import java.security.MessageDigest
  import java.security.NoSuchAlgorithmException;
  import java.util.*;
  import java.util.concurrent.*;
 -import java.util.zip.Adler32;
 +import java.util.zip.CRC32;
  import java.util.zip.Checksum;
  
+ import javax.annotation.Nonnull;
+ import javax.annotation.Nullable;
+ 
  import com.google.common.base.Joiner;
 -import com.google.common.collect.AbstractIterator;
  import org.apache.commons.lang3.StringUtils;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
@@@ -485,13 -486,18 +488,23 @@@ public class FBUtilitie
          return s;
      }
  
 +    public static <T> NavigableSet<T> emptySortedSet(Comparator<? super T> comparator)
 +    {
 +        return new TreeSet<T>(comparator);
 +    }
 +
-     public static String toString(Map<?,?> map)
+     /**
+      * Make straing out of the given {@code Map}.
+      *
+      * @param map Map to make string.
+      * @return String representation of all entries in the map,
+      *         where key and value pair is concatenated with ':'.
+      */
+     @Nonnull
+     public static String toString(@Nullable Map<?, ?> map)
      {
+         if (map == null)
+             return "";
          Joiner.MapJoiner joiner = Joiner.on(", ").withKeyValueSeparator(":");
          return joiner.join(map);
      }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f542a20e/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
index 062387f,c82bcc9..90c5f05
--- a/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
+++ b/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
@@@ -26,7 -27,10 +26,11 @@@ import java.nio.charset.StandardCharset
  import com.google.common.primitives.Ints;
  import org.junit.Test;
  
+ import java.util.Map;
+ import java.util.TreeMap;
+ 
+ import static org.junit.Assert.assertEquals;
 +import static org.junit.Assert.fail;
  
  public class FBUtilitiesTest
  {


[06/10] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

Posted by yu...@apache.org.
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/426109c5
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/426109c5
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/426109c5

Branch: refs/heads/cassandra-2.2
Commit: 426109c50bf7f264c1965dd77482c161cbec0242
Parents: 5b05b68 588dc06
Author: Yuki Morishita <yu...@apache.org>
Authored: Wed Sep 16 08:39:29 2015 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Wed Sep 16 08:39:29 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../org/apache/cassandra/utils/FBUtilities.java  | 16 ++++++++++++++--
 .../apache/cassandra/utils/FBUtilitiesTest.java  | 19 +++++++++++++++++++
 3 files changed, 34 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/426109c5/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 7b5fa78,2787739..7deebcf
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,14 -1,5 +1,15 @@@
 -2.1.10
 +2.2.2
 + * Defer default role manager setup until all nodes are on 2.2+ (CASSANDRA-9761)
 + * Cancel transaction for sstables we wont redistribute index summary
 +   for (CASSANDRA-10270)
 + * Handle missing RoleManager in config after upgrade to 2.2 (CASSANDRA-10209) 
 + * Retry snapshot deletion after compaction and gc on Windows (CASSANDRA-10222)
 + * Fix failure to start with space in directory path on Windows (CASSANDRA-10239)
 + * Fix repair hang when snapshot failed (CASSANDRA-10057)
 + * Fall back to 1/4 commitlog volume for commitlog_total_space on small disks
 +   (CASSANDRA-10199)
 +Merged from 2.1:
+  * Fix NPE in nodetool compactionhistory (CASSANDRA-9758)
   * (Pig) support BulkOutputFormat as a URL parameter (CASSANDRA-7410)
   * BATCH statement is broken in cqlsh (CASSANDRA-10272)
   * Added configurable warning threshold for GC duration (CASSANDRA-8907)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/426109c5/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/utils/FBUtilities.java
index b41bdab,f866610..6ef64ef
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@@ -26,14 -28,19 +26,16 @@@ import java.net.*
  import java.nio.ByteBuffer;
  import java.security.MessageDigest;
  import java.security.NoSuchAlgorithmException;
- import java.text.NumberFormat;
  import java.util.*;
 -import java.util.concurrent.ExecutionException;
 -import java.util.concurrent.Future;
 -import java.util.concurrent.TimeUnit;
 -import java.util.concurrent.TimeoutException;
 +import java.util.concurrent.*;
 +import java.util.zip.Adler32;
  import java.util.zip.Checksum;
  
+ import javax.annotation.Nonnull;
+ import javax.annotation.Nullable;
+ 
  import com.google.common.base.Joiner;
  import com.google.common.collect.AbstractIterator;
 -import org.apache.cassandra.io.util.FileUtils;
  import org.apache.commons.lang3.StringUtils;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;