You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ch...@apache.org on 2015/12/09 21:54:15 UTC

svn commit: r1718965 - in /uima/sandbox/uima-ducc/trunk: src/main/admin/ uima-ducc-database/src/main/java/org/apache/uima/ducc/database/

Author: challngr
Date: Wed Dec  9 20:54:15 2015
New Revision: 1718965

URL: http://svn.apache.org/viewvc?rev=1718965&view=rev
Log:
UIMA-4577 Set DUCC_HOME for ducc_post_install so DB starts if no java in path.  Use guest.guest 
          as id/pw if client has no access to DB superuser.

Modified:
    uima/sandbox/uima-ducc/trunk/src/main/admin/ducc_post_install
    uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbManager.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/RmNodeState.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/RmStatePersistence.java

Modified: uima/sandbox/uima-ducc/trunk/src/main/admin/ducc_post_install
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/admin/ducc_post_install?rev=1718965&r1=1718964&r2=1718965&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/admin/ducc_post_install (original)
+++ uima/sandbox/uima-ducc/trunk/src/main/admin/ducc_post_install Wed Dec  9 20:54:15 2015
@@ -22,6 +22,7 @@
 import os
 import sys
 import getopt
+import platform
 
 import shutil
 import subprocess
@@ -242,6 +243,17 @@ class PostInstall():
 
         return os.path.dirname(self.path_to_java)
 
+    def set_java_home(self):
+        jvm = self.path_to_java
+        if ( platform.system() == 'Darwin' ):
+            self.jvm_home = "/Library/Java/Home"
+        else:
+            ndx = jvm.rindex('/')
+            ndx = jvm.rindex('/', 0, ndx)
+            self.jvm_home = jvm[:ndx]
+
+        os.environ['JAVA_HOME'] = self.jvm_home
+
     def get_java_version(self):
         return self.java_version
 
@@ -413,6 +425,8 @@ class PostInstall():
 
         # insure java is configured and installed
         self.java_bindir = self.get_java_bindir()
+        self.set_java_home()
+        print "java_home", os.environ['JAVA_HOME']
 
         # As of DUCC 2.0, always set here on installation
         print 'ActiveMQ is automanaged on node ', self.localhost

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbManager.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbManager.java?rev=1718965&r1=1718964&r2=1718965&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbManager.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbManager.java Wed Dec  9 20:54:15 2015
@@ -19,6 +19,7 @@
 
 package org.apache.uima.ducc.database;
 
+import java.io.File;
 import java.io.FileInputStream;
 import java.util.Properties;
 
@@ -43,12 +44,16 @@ import com.datastax.driver.core.policies
 public class DbManager
 {
     static final String URL_PROPERTY = "ducc.database.url";
+    private static String db_id = null;
+    private static String db_pw = null;
+
     String dburl;
     DuccLogger logger;
 
     private Cluster cluster;            // only one
     private Session session;            // only one - it's thread safe and manages a connection pool
 
+    
     public DbManager(String dburl, DuccLogger logger)
         throws Exception
     {
@@ -88,9 +93,12 @@ public class DbManager
         String methodName = "init";
 
         if ( cluster != null ) return;        // already initialized
+        dbPassword();                         // sets some private static login stuff.
+                                              // will throw sometims, so we can assume
+                                              // we're allowed to continue if control passes down.
 
-        String pw = dbPassword();
-        PlainTextAuthProvider auth = new PlainTextAuthProvider("ducc", pw);
+        logger.info(methodName, null, "Attach to", dburl, "as", db_id, db_pw);
+        PlainTextAuthProvider auth = new PlainTextAuthProvider(db_id, db_pw); // throws if no good
 
         ReconnectionPolicy rp = new ConstantReconnectionPolicy(10000);  // if we lose connection, keep trying every 10 seconds
         cluster = Cluster.builder()
@@ -159,20 +167,30 @@ public class DbManager
         return session.execute(s);
     }
 
-    static String dbPassword()
+    static void dbPassword()
     	throws Exception
     {
-        // logger.info(methodName, null, "Opening service database at: "  + dburl);
+        // If I can not read the superuser password I'll allow login as guest.  If guest has been revokded
+        // that will be discovered later when I actually sign in.
+        File f = new File(System.getProperty("DUCC_HOME") + "/resources.private/" + DbCreate.PASSWORD_FILE);
+        if ( ! f.canRead() ) {
+            db_id = "guest";
+            db_pw = "guest";
+            return;
+        }
+            
+        // If i can read the file that's supposed to have the super user password I'll do so.  If not, or
+        // if there's no password there, tough luck Charlie.
+        db_id = "ducc";
         Properties props = new Properties();
-        FileInputStream fis = new FileInputStream(System.getProperty("DUCC_HOME") + "/resources.private/" + DbCreate.PASSWORD_FILE);
+        FileInputStream fis = new FileInputStream(f);
         props.load(fis);
         fis.close();
 
-        String pw = props.getProperty(DbCreate.PASSWORD_KEY);
-        if ( pw == null ) {
+        db_pw = props.getProperty(DbCreate.PASSWORD_KEY);
+        if ( db_pw == null ) {
             throw new IllegalStateException("Cannot acquire the database password.");
         }
-        return pw;
     }
 
 

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/RmNodeState.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/RmNodeState.java?rev=1718965&r1=1718964&r2=1718965&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/RmNodeState.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/RmNodeState.java Wed Dec  9 20:54:15 2015
@@ -22,6 +22,7 @@ package org.apache.uima.ducc.database;
 import java.util.Map;
 
 import org.apache.uima.ducc.common.persistence.rm.IRmPersistence;
+import org.apache.uima.ducc.common.persistence.rm.NullRmStatePersistence;
 import org.apache.uima.ducc.common.persistence.rm.RmPersistenceFactory;
 import org.apache.uima.ducc.common.utils.DuccLogger;
 
@@ -39,22 +40,32 @@ public class RmNodeState
         throws Exception
     {
         IRmPersistence persistence = RmPersistenceFactory.getInstance(this.getClass().getName(), "RM");
-        
+        if ( persistence instanceof NullRmStatePersistence ) {
+            System.out.println("Cannot get viable RM Persistance isntance.");
+            return;
+        }
+
         try {
-			Map<String, Map<String, Object>> state = persistence.getAllMachines();
-			for ( String node : state.keySet() ) {
-			    StringBuffer buf = new StringBuffer(node);
-			    buf.append(": ");
-			    Map<String, Object> st = state.get(node);
-			    for ( String k : st.keySet() ) {
-			        buf.append(k);
-			        buf.append("[");
-			        buf.append(st.get(k).toString());
-			        buf.append("] ");
-			    }
-			    System.out.println(buf.toString());
-			}
+            for ( int i = 0; i < 10; i++ ) {
+                Map<String, Map<String, Object>> state = persistence.getAllMachines();
+                for ( String node : state.keySet() ) {
+                    StringBuffer buf = new StringBuffer(node);
+                    buf.append(": ");
+                    Map<String, Object> st = state.get(node);
+                    for ( String k : st.keySet() ) {
+                        buf.append(k);
+                        buf.append("[");
+                        buf.append(st.get(k).toString());
+                        buf.append("] ");
+                    }
+                    System.out.println(buf.toString());
+                }
+                Thread.sleep(2000);
+            }
+        } catch ( Exception e ) {
+            e.printStackTrace();
 		} finally {
+            // In "real life" you don't need to, and shouldn't, close the persistence until the process is ready to exit.
             persistence.close();
         }
     }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/RmStatePersistence.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/RmStatePersistence.java?rev=1718965&r1=1718964&r2=1718965&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/RmStatePersistence.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/RmStatePersistence.java Wed Dec  9 20:54:15 2015
@@ -85,7 +85,8 @@ public class RmStatePersistence
                 logger.error(methodName, null, "Cannot contact database.  Retrying in 5 seconds.");
                 Thread.sleep(5000);
             } catch ( Exception e ) {
-                logger.error(methodName, null, "Errors contacting database.  No connetion made.", e);
+                logger.error(methodName, null, "Errors contacting database.  No connetion made.");
+                logger.error(methodName, null, e);
                 ret = false;
                 break;
             }