You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ma...@apache.org on 2011/09/27 03:11:05 UTC

svn commit: r1176154 - in /zookeeper/branches/branch-3.3: CHANGES.txt src/java/main/org/apache/zookeeper/server/persistence/Util.java src/java/test/org/apache/zookeeper/server/ZooKeeperServerTest.java

Author: mahadev
Date: Tue Sep 27 01:11:05 2011
New Revision: 1176154

URL: http://svn.apache.org/viewvc?rev=1176154&view=rev
Log:
ZOOKEEPER-1189. For an invalid snapshot file(less than 10bytes size) RandomAccessFile stream is leaking. (Rakesh R via mahadev)

Modified:
    zookeeper/branches/branch-3.3/CHANGES.txt
    zookeeper/branches/branch-3.3/src/java/main/org/apache/zookeeper/server/persistence/Util.java
    zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/server/ZooKeeperServerTest.java

Modified: zookeeper/branches/branch-3.3/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/CHANGES.txt?rev=1176154&r1=1176153&r2=1176154&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/CHANGES.txt (original)
+++ zookeeper/branches/branch-3.3/CHANGES.txt Tue Sep 27 01:11:05 2011
@@ -22,6 +22,9 @@ BUGFIXES:
   
   ZOOKEEPER-1160. test timeouts are too small (breed via camille)
  
+  ZOOKEEPER-1189. For an invalid snapshot file(less than 10bytes size)
+  RandomAccessFile stream is leaking. (Rakesh R via mahadev)
+ 
 Release 3.3.3 - 2011-02-23
 Backward compatible changes:
 

Modified: zookeeper/branches/branch-3.3/src/java/main/org/apache/zookeeper/server/persistence/Util.java
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/src/java/main/org/apache/zookeeper/server/persistence/Util.java?rev=1176154&r1=1176153&r2=1176154&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/src/java/main/org/apache/zookeeper/server/persistence/Util.java (original)
+++ zookeeper/branches/branch-3.3/src/java/main/org/apache/zookeeper/server/persistence/Util.java Tue Sep 27 01:11:05 2011
@@ -163,12 +163,12 @@ public class Util {
 
         // Check for a valid snapshot
         RandomAccessFile raf = new RandomAccessFile(f, "r");
-        // including the header and the last / bytes
-        // the snapshot should be atleast 10 bytes
-        if (raf.length() < 10) {
-            return false;
-        }
         try {
+            // including the header and the last / bytes
+            // the snapshot should be atleast 10 bytes
+            if (raf.length() < 10) {
+                return false;
+            }
             raf.seek(raf.length() - 5);
             byte bytes[] = new byte[5];
             int readlen = 0;

Modified: zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/server/ZooKeeperServerTest.java
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/server/ZooKeeperServerTest.java?rev=1176154&r1=1176153&r2=1176154&view=diff
==============================================================================
--- zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/server/ZooKeeperServerTest.java (original)
+++ zookeeper/branches/branch-3.3/src/java/test/org/apache/zookeeper/server/ZooKeeperServerTest.java Tue Sep 27 01:11:05 2011
@@ -19,12 +19,14 @@
 package org.apache.zookeeper.server;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.List;
 
 import junit.framework.TestCase;
 
 import org.apache.zookeeper.server.persistence.FileTxnLog;
 import org.apache.zookeeper.server.persistence.Util;
+import org.apache.zookeeper.test.ClientBase;
 import org.junit.Test;
 import org.junit.Assert;
 
@@ -114,4 +116,25 @@ public class ZooKeeperServerTest extends
         }
     }
 
+    @Test
+    public void testInvalidSnapshot() {
+        File f = null;
+        File tmpFileDir = null;
+        try {
+            tmpFileDir = ClientBase.createTmpDir();
+            f = new File(tmpFileDir, "snapshot.0");
+            if (!f.exists()) {
+                f.createNewFile();
+            }
+            Assert.assertFalse("Snapshot file size is greater than 9 bytes",
+                    Util.isValidSnapshot(f));
+            Assert.assertTrue("Can't delete file", f.delete());
+        } catch (IOException e) {
+        } finally {
+            if (null != tmpFileDir) {
+                ClientBase.recursiveDelete(tmpFileDir);
+            }
+        }
+    }
+
 }