Author: toad
Date: 2006-10-06 17:12:27 +0000 (Fri, 06 Oct 2006)
New Revision: 10636

Modified:
   trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
Log:
Close the Environment if we can't open it.

Modified: trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
--- trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2006-10-06 
17:03:18 UTC (rev 10635)
+++ trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2006-10-06 
17:12:27 UTC (rev 10636)
@@ -107,20 +107,28 @@

                this.maxChkBlocks=maxChkBlocks;

-               // Initialize environment
-               EnvironmentConfig envConfig = new EnvironmentConfig();
-               envConfig.setAllowCreate(true);
-               envConfig.setTransactional(true);
-               envConfig.setTxnWriteNoSync(true);
                File dir = new File(storeDir);
                if(!dir.exists())
                        dir.mkdir();
                File dbDir = new File(dir,"database");
                if(!dbDir.exists())
                        dbDir.mkdir();
-
-               environment = new Environment(dbDir, envConfig);

+               Environment env = null;
+               // Initialize environment
+               try {
+                       EnvironmentConfig envConfig = new EnvironmentConfig();
+                       envConfig.setAllowCreate(true);
+                       envConfig.setTransactional(true);
+                       envConfig.setTxnWriteNoSync(true);
+                       env = new Environment(dbDir, envConfig);
+               } catch (DatabaseException e) {
+                       if(env != null)
+                               env.close();
+                       throw e;
+               }
+               environment = env;
+               
                // Initialize CHK database
                DatabaseConfig dbConfig = new DatabaseConfig();
                dbConfig.setAllowCreate(true);


Reply via email to