diff --git a/src/java/com/facebook/LinkBench/LinkBenchRequest.java b/src/java/com/facebook/LinkBench/LinkBenchRequest.java index f77389c0..0536875c 100644 --- a/src/java/com/facebook/LinkBench/LinkBenchRequest.java +++ b/src/java/com/facebook/LinkBench/LinkBenchRequest.java @@ -760,6 +760,7 @@ public void run() { e.getMessage(), e); aborted = true; } + closeStores(); return; } @@ -779,7 +780,7 @@ public void run() { logger.error(String.format("Requester #%d aborting: %d failed requests" + " (out of %d total) ", requesterID, errors, requestsDone)); aborted = true; - return; + break; } } @@ -852,7 +853,17 @@ public void run() { " not found = " + numnotfound + " history queries = " + numHistoryQueries + "/" + stats.getCount(LinkBenchOp.GET_LINKS_LIST)); + closeStores(); + } + /** + * Close datastores before finishing + */ + private void closeStores() { + linkStore.close(); + if (nodeStore != null && nodeStore != linkStore) { + nodeStore.close(); + } } private void displayStats(long lastStatDisplay_ms, long now_ms) { diff --git a/src/java/com/facebook/LinkBench/NodeLoader.java b/src/java/com/facebook/LinkBench/NodeLoader.java index c74afdd5..2fc743f4 100644 --- a/src/java/com/facebook/LinkBench/NodeLoader.java +++ b/src/java/com/facebook/LinkBench/NodeLoader.java @@ -148,6 +148,7 @@ public void run() { logger.info("Loading of nodes [" + startId + "," + maxId + ") done"); displayAndResetStats(); + nodeStore.close(); } private void displayAndResetStats() { diff --git a/src/java/com/facebook/LinkBench/NodeStore.java b/src/java/com/facebook/LinkBench/NodeStore.java index 81982467..c8d6fde9 100644 --- a/src/java/com/facebook/LinkBench/NodeStore.java +++ b/src/java/com/facebook/LinkBench/NodeStore.java @@ -92,4 +92,9 @@ public void initialize(Properties p, public boolean deleteNode(String dbid, int type, long id) throws Exception; public void clearErrors(int loaderId); + + /** + * Close the node store and clean up any resources + */ + public void close(); }