Skip to content

Commit 5bf2340

Browse files
authored
improve log output when closing the graph (#165)
example output: ``` 2020-10-05 14:04:17.291 DEBUG uninstalled GC monitors. 2020-10-05 14:04:17.961 INFO progress of clearing references: 18.96% 2020-10-05 14:04:18.591 INFO progress of clearing references: 37.92% 2020-10-05 14:04:19.119 INFO progress of clearing references: 56.88% 2020-10-05 14:04:19.716 INFO progress of clearing references: 75.84% 2020-10-05 14:04:20.255 INFO progress of clearing references: 94.80% 2020-10-05 14:04:20.346 INFO progress of clearing references: 100.00% 2020-10-05 14:04:20.346 INFO cleared all clearable references 2020-10-05 14:04:20.346 DEBUG closing OdbStorage ```
1 parent e8b446e commit 5bf2340

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

core/src/main/java/overflowdb/ReferenceManager.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package overflowdb;
22

3-
import overflowdb.storage.OdbStorage;
4-
import overflowdb.util.NamedThreadFactory;
53
import org.slf4j.Logger;
64
import org.slf4j.LoggerFactory;
5+
import overflowdb.storage.OdbStorage;
6+
import overflowdb.util.NamedThreadFactory;
77

88
import java.util.ArrayList;
99
import java.util.Collections;
@@ -83,8 +83,8 @@ private void syncClearReferences(final int releaseCount) {
8383
if (!refsToClear.isEmpty()) {
8484
safelyClearReferences(refsToClear);
8585
if (logger.isInfoEnabled()) logger.info("completed clearing of " + refsToClear.size() + " references");
86-
if (logger.isDebugEnabled()) logger.debug("current clearable queue size: " + clearableRefs.size());
87-
if (logger.isDebugEnabled()) logger.debug("references cleared in total: " + totalReleaseCount);
86+
if (logger.isDebugEnabled()) logger.debug("remaining clearable references: " + clearableRefs.size());
87+
if (logger.isTraceEnabled()) logger.trace("references cleared in total: " + totalReleaseCount);
8888
}
8989
}
9090

@@ -161,17 +161,26 @@ private static SerializedNode serializeReference(NodeRef ref) {
161161
return null;
162162
}
163163

164-
165164
/**
166165
* writes all references to disk overflow, blocks until complete.
167166
* useful when saving the graph
168167
*/
169168
public void clearAllReferences() {
169+
int initialRefCount = clearableRefs.size();
170+
int clearedCount = 0;
170171
while (!clearableRefs.isEmpty()) {
171-
int clearableRefsSize = clearableRefs.size();
172-
logger.info("clearing all (" + clearableRefsSize + ") references - this may take some time");
173172
try {
174-
syncClearReferences(clearableRefsSize);
173+
final List<NodeRef> refsToClear = collectRefsToClear(releaseCount);
174+
if (!refsToClear.isEmpty()) {
175+
int clearCountCurr = refsToClear.size();
176+
safelyClearReferences(refsToClear);
177+
clearedCount += clearCountCurr;
178+
}
179+
180+
if (logger.isInfoEnabled()) {
181+
float progressPercent = 100f * clearedCount / initialRefCount;
182+
logger.info(String.format("progress of clearing references: %.2f%s", Float.min(100f, progressPercent), "%"));
183+
}
175184
} catch (Exception e) {
176185
throw new RuntimeException("error while clearing references to disk", e);
177186
}

core/src/main/java/overflowdb/storage/OdbStorage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public <A extends Node> A readNode(final long id) throws IOException {
9696
/** flush any remaining changes in underlying storage to disk */
9797
public void flush() {
9898
if (mvstore != null) {
99-
logger.debug("flushing to disk");
99+
logger.trace("flushing to disk");
100100
mvstore.commit();
101101
}
102102
}

0 commit comments

Comments
 (0)