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