Repository: empire-db Updated Branches: refs/heads/master 39eee27f8 -> 98ee92047
EMPIREDB-268 Minor bugfix to ensure the same database instance is not registered twice. Project: http://git-wip-us.apache.org/repos/asf/empire-db/repo Commit: http://git-wip-us.apache.org/repos/asf/empire-db/commit/98ee9204 Tree: http://git-wip-us.apache.org/repos/asf/empire-db/tree/98ee9204 Diff: http://git-wip-us.apache.org/repos/asf/empire-db/diff/98ee9204 Branch: refs/heads/master Commit: 98ee92047d762071c469b3dce26d87139b9b763b Parents: 39eee27 Author: Rainer Döbele <doeb...@apache.org> Authored: Tue Mar 13 12:45:29 2018 +0100 Committer: Rainer Döbele <doeb...@apache.org> Committed: Tue Mar 13 12:45:29 2018 +0100 ---------------------------------------------------------------------- .../src/main/java/org/apache/empire/db/DBDatabase.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/empire-db/blob/98ee9204/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java ---------------------------------------------------------------------- diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java index 7351531..6b050bc 100644 --- a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java +++ b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java @@ -31,6 +31,7 @@ import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.empire.commons.ObjectUtils; import org.apache.empire.commons.Options; @@ -186,8 +187,14 @@ public abstract class DBDatabase extends DBObject protected void register(String dbid) { // Check if it exists - if (databaseMap.containsValue(this)) - databaseMap.remove(instanceId); + for (Map.Entry<String, WeakReference<DBDatabase>> e : databaseMap.entrySet()) + { + if (e.getValue().get()==this) + { // Remove from set + log.error("Instance of database "+getClass().getName()+" already registered. Not registering same instance twice!"); + throw new ItemExistsException(e.getKey()); + } + } // find a unique key int inst=0; for (String key : databaseMap.keySet()) @@ -200,6 +207,7 @@ public abstract class DBDatabase extends DBObject else this.instanceId = dbid; // register database in global map + log.info("Instance of database {} registered with instanceid={}", getClass().getName(), this.instanceId); databaseMap.put(this.instanceId, new WeakReference<DBDatabase>(this)); }