From 3bdc6988b3a36e1bbace057f8dc1d8b726d39a8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0est=C3=A1k=20V=C3=ADt?= Date: Wed, 24 May 2017 16:00:37 +0200 Subject: [PATCH] Minor adjustments of caching for CveDB, based on code review --- .../java/org/owasp/dependencycheck/data/nvdcve/CveDB.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dependency-check-core/src/main/java/org/owasp/dependencycheck/data/nvdcve/CveDB.java b/dependency-check-core/src/main/java/org/owasp/dependencycheck/data/nvdcve/CveDB.java index a1430d28d..4fe5ad951 100644 --- a/dependency-check-core/src/main/java/org/owasp/dependencycheck/data/nvdcve/CveDB.java +++ b/dependency-check-core/src/main/java/org/owasp/dependencycheck/data/nvdcve/CveDB.java @@ -24,6 +24,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Collections; import java.util.EnumMap; import java.util.HashMap; import java.util.HashSet; @@ -95,7 +96,7 @@ public final class CveDB implements AutoCloseable { private final EnumMap preparedStatements = new EnumMap<>(PreparedStatementCveDb.class); @SuppressWarnings("unchecked") - private final Map> vulnerabilitiesForCpeCache = new ReferenceMap(HARD, SOFT); + private final Map> vulnerabilitiesForCpeCache = Collections.synchronizedMap(new ReferenceMap(HARD, SOFT)); /** * The enum value names must match the keys of the statements in the @@ -271,11 +272,11 @@ public final class CveDB implements AutoCloseable { */ @Override public synchronized void close() { - clearCache(); if (instance != null) { instance.usageCount -= 1; if (instance.usageCount <= 0 && instance.isOpen()) { instance.usageCount = 0; + clearCache(); instance.closeStatements(); try { instance.connection.close();