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 {