You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2018/03/13 11:45:34 UTC

empire-db git commit: EMPIREDB-268 Minor bugfix to ensure the same database instance is not registered twice.

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 <do...@apache.org>
Authored: Tue Mar 13 12:45:29 2018 +0100
Committer: Rainer Döbele <do...@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));
     }