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/01 22:44:50 UTC

svn commit: r1717540 - in /uima/sandbox/uima-ducc/trunk: src/main/resources/ uima-ducc-database/src/main/java/org/apache/uima/ducc/database/ uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/history/

Author: challngr
Date: Tue Dec  1 21:44:49 2015
New Revision: 1717540

URL: http://svn.apache.org/viewvc?rev=1717540&view=rev
Log:
UIMA-4577 Retry DbCreate with supplied id/pw if default fail, to allow rerun of DbCreate.

Modified:
    uima/sandbox/uima-ducc/trunk/src/main/resources/cassandra.yaml
    uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbCreate.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbUtil.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/HistoryManagerDb.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/RmStatePersistence.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/history/IHistoryPersistenceManager.java

Modified: uima/sandbox/uima-ducc/trunk/src/main/resources/cassandra.yaml
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/src/main/resources/cassandra.yaml?rev=1717540&r1=1717539&r2=1717540&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/src/main/resources/cassandra.yaml (original)
+++ uima/sandbox/uima-ducc/trunk/src/main/resources/cassandra.yaml Tue Dec  1 21:44:49 2015
@@ -75,7 +75,7 @@ authenticator: PasswordAuthenticator
 # - AllowAllAuthorizer allows any action to any user - set it to disable authorization.
 # - CassandraAuthorizer stores permissions in system_auth.permissions table. Please
 #   increase system_auth keyspace replication factor if you use this authorizer.
-authorizer: AllowAllAuthorizer
+authorizer: CassandraAuthorizer
 
 # Validity period for permissions cache (fetching permissions can be an
 # expensive operation depending on the authorizer, CassandraAuthorizer is

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbCreate.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbCreate.java?rev=1717540&r1=1717539&r2=1717540&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbCreate.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbCreate.java Tue Dec  1 21:44:49 2015
@@ -39,12 +39,13 @@ public class DbCreate
     static final String DUCC_KEYSPACE = "ducc";
     static final String PASSWORD_KEY  = "db_password";
     static final String PASSWORD_FILE = "ducc.private.properties";
-    static final int RETRY = 10;
+    int RETRY = 10;
 
     DuccLogger logger = null;
     String dburl;
     String adminid = null;
     String adminpw = null;
+    boolean useNewPw = false;
 
     private Cluster cluster;
     private Session session = null;
@@ -84,14 +85,16 @@ public class DbCreate
 
         // If we're here, we must first of all get rid of the cassandra su and set up our own
 
-        AuthProvider auth = new PlainTextAuthProvider("cassandra", "cassandra");
+
         for ( int i = 0; i < RETRY; i++ ) {
             try {
+                // First time, we nuke the default id / pw and install our own.
+                AuthProvider auth = new PlainTextAuthProvider("cassandra", "cassandra");
                 cluster = Cluster.builder()
                     .withAuthProvider(auth)
                     .addContactPoint(dburl)
                     .build();
-
+                    
                 session = cluster.connect();
                 session.execute("CREATE USER IF NOT EXISTS " + adminid + " with password '" + adminpw + "' SUPERUSER");
                 cluster.close();
@@ -108,14 +111,28 @@ public class DbCreate
                 session.execute("ALTER USER cassandra  with password '" + uglypw + "' NOSUPERUSER");
                 doLog(methodName, "Changed default super user's password and revoked its superuser authority.");
                 doLog(methodName, "From this point, this DB can only be accessed in super user mode by user 'ducc'");
-                    
                 break;
             } catch ( NoHostAvailableException e ) {
                 doLog("Waiting for database to boot ...");
                 session = null;
                 cluster = null;
             } catch ( AuthenticationException e ) {
-                doLog("Waiting for default authentication ...");
+                // The default userid/pw failed, so we try again with the user-supplied one
+                RETRY += i;         // we'll extend the retry for a bit in case db took a while to start
+                doLog(methodName, "Initial DB connection failed with AuthorizationException. Retrying database connection with your supplied userid and password.");
+                try {
+                    AuthProvider auth = new PlainTextAuthProvider(adminid, adminpw);
+                    cluster = Cluster.builder()
+                        .withAuthProvider(auth)
+                        .addContactPoint(dburl)
+                        .build();
+                    session = cluster.connect();                    
+                    // if this works we assume the DB user base is ok and continue
+                    break;         // no crash, we're outta here
+                } catch ( Exception ee ) {
+                    doLog(methodName, "Authorization fails with both the default userid/password and the new userid/password.");
+                    doLog(methodName, "Retrhying, as first-time database may take a few moments to initialize.");
+                }
                 session = null;
                 cluster = null;
             } catch ( Exception e ) {
@@ -138,7 +155,6 @@ public class DbCreate
         for ( Host host : metadata.getAllHosts() ) {
             doLog(methodName, "Datatacenter:", host.getDatacenter(), "Host:", host.getAddress(), "Rack:", host.getRack());
         } 
-        session = cluster.connect();
         return true;
     }
 
@@ -184,6 +200,13 @@ public class DbCreate
 
         // A 'keyspace' is what we usually think of as a database.
         session.execute("CREATE KEYSPACE IF NOT EXISTS ducc WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};");
+        session.execute("CREATE USER IF NOT EXISTS guest  WITH PASSWORD 'guest' NOSUPERUSER");
+        session.execute("GRANT SELECT ON KEYSPACE ducc TO guest");
+        session.execute("REVOKE SELECT ON KEYSPACE system FROM guest");
+        session.execute("REVOKE SELECT ON KEYSPACE system_auth FROM guest");
+        session.execute("REVOKE SELECT ON KEYSPACE system_traces FROM guest");
+        doLog(methodName, "Created user 'guest' with SELECT priveleges on DUCC tables.");
+                    
         session.execute("USE " + DUCC_KEYSPACE);
 
         try {

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbUtil.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbUtil.java?rev=1717540&r1=1717539&r2=1717540&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbUtil.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbUtil.java Tue Dec  1 21:44:49 2015
@@ -76,7 +76,7 @@ class DbUtil
         List<String> ret = new ArrayList<String>();
         for ( IDbProperty p : props ) {
             if ( p.isIndex() ) {
-                StringBuffer buf = new StringBuffer("CREATE INDEX ");
+                StringBuffer buf = new StringBuffer("CREATE INDEX IF NOT EXISTS ");
                 buf.append(tablename);
                 buf.append("_");
                 buf.append(p.pname());

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/HistoryManagerDb.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/HistoryManagerDb.java?rev=1717540&r1=1717539&r2=1717540&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/HistoryManagerDb.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/HistoryManagerDb.java Tue Dec  1 21:44:49 2015
@@ -24,6 +24,7 @@ import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -61,10 +62,10 @@ public class HistoryManagerDb
     PreparedStatement reservationPrepare = null;
     PreparedStatement servicePrepare = null;
     PreparedStatement ckptPrepare = null;
-    static final String JOB_TABLE = "ducc." + OrWorkProps.JOB_TABLE.pname();
-    static final String RES_TABLE = "ducc." + OrWorkProps.RESERVATION_TABLE.pname();
-    static final String SVC_TABLE = "ducc." + OrWorkProps.SERVICE_TABLE.pname();
-    static final String CKPT_TABLE = "ducc." + OrCkptProps.CKPT_TABLE.pname();
+    static final String JOB_TABLE  = OrWorkProps.JOB_TABLE.pname();
+    static final String RES_TABLE  = OrWorkProps.RESERVATION_TABLE.pname();
+    static final String SVC_TABLE  = OrWorkProps.SERVICE_TABLE.pname();
+    static final String CKPT_TABLE = OrCkptProps.CKPT_TABLE.pname();
 		
     public HistoryManagerDb()
     {
@@ -138,8 +139,13 @@ public class HistoryManagerDb
         buf.append("WITH CLUSTERING ORDER BY (ducc_dbid desc)");
 
         ret.add(new SimpleStatement(buf.toString()));
-        ret.add(new SimpleStatement("CREATE INDEX IF NOT EXISTS ON " +  tablename + "(ducc_dbid)"));
-        ret.add(new SimpleStatement("CREATE INDEX IF NOT EXISTS ON " +  tablename + "(history)"));
+        List<String> indexes = DbUtil.mkIndices(OrWorkProps.values(), tablename);
+        for ( String s : indexes ) {
+            ret.add(new SimpleStatement(s));
+        }
+
+        // ret.add(new SimpleStatement("CREATE INDEX IF NOT EXISTS ON " +  tablename + "(ducc_dbid)"));
+        // ret.add(new SimpleStatement("CREATE INDEX IF NOT EXISTS ON " +  tablename + "(history)"));
 
         return ret;
     }

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=1717540&r1=1717539&r2=1717540&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 Tue Dec  1 21:44:49 2015
@@ -164,7 +164,7 @@ public class RmStatePersistence
         buf.append(DbUtil.mkSchema(RmLoad.values()));
         buf.append(")");
         ret.add(new SimpleStatement(buf.toString()));
-        indexes = DbUtil.mkIndices(RmShares.values(), RM_SHARE_TABLE);
+        indexes = DbUtil.mkIndices(RmShares.values(), RM_LOAD_TABLE);
         for ( String s : indexes ) {
             ret.add(new SimpleStatement(s));
         }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/history/IHistoryPersistenceManager.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/history/IHistoryPersistenceManager.java?rev=1717540&r1=1717539&r2=1717540&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/history/IHistoryPersistenceManager.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/common/history/IHistoryPersistenceManager.java Tue Dec  1 21:44:49 2015
@@ -91,11 +91,13 @@ public interface IHistoryPersistenceMana
             public String pname()         { return "ducc_dbid"; }
             public Type type()            { return Type.Long; }
             public boolean isPrimaryKey() { return true; }
+            public boolean isIndex()      { return true; }
         },
 
         history {
-            public String pname()  { return "history"; }        // to the future, is this a history or ckpt item?
-            public Type type()     { return Type.Boolean; }
+            public String pname()         { return "history"; }        // to the future, is this a history or ckpt item?
+            public Type type()            { return Type.Boolean; }
+            public boolean isIndex()      { return true; }
         },
 
         work {