From c5717f80d4a469633c494b8ad0c19d84b2d74af3 Mon Sep 17 00:00:00 2001 From: gojomo Date: Fri, 14 Jan 2011 22:09:21 +0000 Subject: [PATCH] * DisposableStoredSortedMap better class comment, error handling --- .../bdb/DisposableStoredSortedMap.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/commons/src/main/java/org/archive/bdb/DisposableStoredSortedMap.java b/commons/src/main/java/org/archive/bdb/DisposableStoredSortedMap.java index 5614335e..efae297c 100644 --- a/commons/src/main/java/org/archive/bdb/DisposableStoredSortedMap.java +++ b/commons/src/main/java/org/archive/bdb/DisposableStoredSortedMap.java @@ -19,6 +19,9 @@ package org.archive.bdb; +import java.util.logging.Level; +import java.util.logging.Logger; + import com.sleepycat.bind.EntityBinding; import com.sleepycat.bind.EntryBinding; import com.sleepycat.collections.PrimaryKeyAssigner; @@ -28,15 +31,19 @@ import com.sleepycat.je.DatabaseException; /** * TempStoredSortedMap remembers its backing Database, and offers - * a destroy() method for closing/discarding the underlying Database. + * a dispose() method for closing/discarding the underlying Database. + * + * You *must* call dispose() when done with the map; otherwise temporary data + * will remain in a temporary Database in the BDB environment indefinitely. * * @contributor gojomo * @param * @param */ public class DisposableStoredSortedMap extends StoredSortedMap { + final private static Logger LOGGER = + Logger.getLogger(DisposableStoredSortedMap.class.getName()); Database db; - String dbName; public DisposableStoredSortedMap(Database db, EntryBinding arg1, EntityBinding arg2, boolean arg3) { super(db, arg1, arg2, arg3); @@ -56,21 +63,16 @@ public class DisposableStoredSortedMap extends StoredSortedMap { } public void dispose() { + String name = null; try { if(this.db!=null) { - String name = this.db.getDatabaseName(); + name = this.db.getDatabaseName(); this.db.close(); this.db.getEnvironment().removeDatabase(null, name); this.db = null; } } catch (DatabaseException e) { - throw new RuntimeException(e); + LOGGER.log(Level.WARNING, "Error closing db " + name, e); } } - @Override - protected void finalize() throws Throwable { - super.finalize(); - dispose(); - } - }