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));
}