Selaa lähdekoodia

ZOOKEEPER-1770. NullPointerException in SnapshotFormatter (Germán Blanco via phunt)

git-svn-id: https://svn.apache.org/repos/asf/zookeeper/trunk@1528271 13f79535-47bb-0310-9956-ffa450edef68
Patrick D. Hunt 11 vuotta sitten
vanhempi
commit
7033e577a5

+ 3 - 0
CHANGES.txt

@@ -400,6 +400,9 @@ BUGFIXES:
   ZOOKEEPER-1655. Make jline dependency optional in maven pom
   (Thomas Weise via phunt)
 
+  ZOOKEEPER-1770. NullPointerException in SnapshotFormatter
+  (Germán Blanco via phunt)
+
 IMPROVEMENTS:
 
   ZOOKEEPER-1170. Fix compiler (eclipse) warnings: unused imports,

+ 5 - 1
src/java/main/org/apache/zookeeper/server/SnapshotFormatter.java

@@ -87,7 +87,11 @@ public class SnapshotFormatter {
         synchronized(n) { // keep findbugs happy
             System.out.println(name);
             printStat(n.stat);
-            System.out.println("  dataLength = " + n.data.length);
+            if (n.data != null) {
+                System.out.println("  dataLength = " + n.data.length);
+            } else {
+                System.out.println("  no data");
+            }
             children = n.getChildren();
         }
         if (children != null) {

BIN
src/java/test/data/invalidsnap/version-2/snapshot.273


+ 11 - 0
src/java/test/org/apache/zookeeper/test/InvalidSnapshotTest.java

@@ -70,6 +70,17 @@ public class InvalidSnapshotTest extends ZKTestCase implements Watcher {
         SnapshotFormatter.main(args);
     }
     
+    /**
+     * Verify the SnapshotFormatter by running it on a known file with one null data.
+     */
+    @Test
+    public void testSnapshotFormatterWithNull() throws Exception {
+        File snapDir = new File(testData, "invalidsnap");
+        File snapfile = new File(new File(snapDir, "version-2"), "snapshot.273");
+        String[] args = {snapfile.getCanonicalFile().toString()};
+        SnapshotFormatter.main(args);
+    }
+    
     /**
      * test the snapshot
      * @throws Exception an exception could be expected