Author: gnodet
Date: Fri Apr 30 08:31:53 2010
New Revision: 939585

URL: http://svn.apache.org/viewvc?rev=939585&view=rev
Log:
FELIX-2130: Karaf] Failover Clustering Mechanism - Database shutdown / loss 
results in all Karaf instances becoming Active on restart of that DB

Modified:
    felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java
    
felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/OracleJDBCLock.java

Modified: 
felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java?rev=939585&r1=939584&r2=939585&view=diff
==============================================================================
--- felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java 
(original)
+++ felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/Main.java 
Fri Apr 30 08:31:53 2010
@@ -1084,7 +1084,6 @@ public class Main {
                             LOG.info("Lost the lock, stopping this instance 
...");
                             setStartLevel(lockStartLevel);
                         }
-                        break;
                     } else if (!lockLogged) {
                         LOG.info("Waiting for the lock ...");
                         lockLogged = true;

Modified: 
felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/OracleJDBCLock.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/OracleJDBCLock.java?rev=939585&r1=939584&r2=939585&view=diff
==============================================================================
--- 
felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/OracleJDBCLock.java
 (original)
+++ 
felix/trunk/karaf/main/src/main/java/org/apache/felix/karaf/main/OracleJDBCLock.java
 Fri Apr 30 08:31:53 2010
@@ -196,7 +196,23 @@ public class OracleJDBCLock implements L
             LOG.severe("Lost lock!");
             return false; 
         }
-        return true;
+        PreparedStatement statement = null;
+        try {
+            String up = "SELECT * FROM " + table;
+            statement = lockConnection.prepareStatement(up);
+            return statement.execute();
+        } catch (Exception e) {
+            LOG.warning("Failed to access database. " + e.getMessage());
+        } finally {
+            if (statement != null) {
+                try {
+                    statement.close();
+                } catch (SQLException e) {
+                    LOG.severe("Failed to close statement" + e);
+                }
+            }
+        }
+        return false;
     }
 
     /**


Reply via email to