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=1711768&r1=1711767&r2=1711768&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 Sun Nov 1 14:09:47 2015 @@ -19,36 +19,43 @@ package org.apache.uima.ducc.database; +import java.io.FileOutputStream; import java.util.List; +import java.util.Properties; +import java.util.UUID; import org.apache.uima.ducc.common.utils.DuccLogger; +import com.datastax.driver.core.AuthProvider; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.Host; import com.datastax.driver.core.Metadata; +import com.datastax.driver.core.PlainTextAuthProvider; import com.datastax.driver.core.Session; import com.datastax.driver.core.SimpleStatement; +import com.datastax.driver.core.exceptions.AuthenticationException; public class DbCreate { + static final String DUCC_KEYSPACE = "ducc"; + static final String PASSWORD_KEY = "db_password"; + static final String PASSWORD_FILE = "database.password"; + DuccLogger logger = null; String dburl; - String adminid = "root"; + String adminid = null; String adminpw = null; private Cluster cluster; private Session session; - public DbCreate(String dburl) - { - this.dburl = dburl; - } - - public DbCreate(String dburl, DuccLogger logger) + public DbCreate(String dburl, DuccLogger logger, String adminid, String adminpw) { this.dburl = dburl; this.logger = logger; + this.adminid = adminid; + this.adminpw = adminpw; } public DbCreate(String dburl, String adminid, String adminpw) @@ -59,11 +66,55 @@ public class DbCreate } public void connect() + throws Exception { String methodName = "connect"; - cluster = Cluster.builder() - .addContactPoint(dburl) - .build(); + + String dh = System.getProperty("DUCC_HOME"); + if ( dh == null ) { + throw new IllegalArgumentException("DUCC_HOME must be set as a system property: -DDUCC_HOME=whatever"); + } + + try { + // 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"); + 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(); + doLog(methodName, "Created user " + adminid); + + Properties props = new Properties(); + props.setProperty(PASSWORD_KEY, adminpw); + FileOutputStream fos = new FileOutputStream(dh + "/resources.private/" + PASSWORD_FILE); + props.store(fos, "Db private configuration"); + fos.close(); + + auth = new PlainTextAuthProvider(adminid, adminpw); + cluster = Cluster.builder() + .withAuthProvider(auth) + .addContactPoint(dburl) + .build(); + session = cluster.connect(); + + String uglypw = UUID.randomUUID().toString(); + 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'"); + + } catch (AuthenticationException e ) { + // if we get here the default super user isn't working and we expect a valid id and password + AuthProvider auth = new PlainTextAuthProvider(adminid, adminpw); + cluster = Cluster.builder() + .withAuthProvider(auth) + .addContactPoint(dburl) + .build(); + } Metadata metadata = cluster.getMetadata(); doLog(methodName, "Connected to cluster: %s\n", metadata.getClusterName()); @@ -186,14 +237,14 @@ public class DbCreate public static void main(String[] args) { - if ( args.length != 1 ) { - System.out.println("Usage: DbCreate <database url>"); + if ( args.length != 3 ) { + System.out.println("Usage: DbCreate database_url db_id db_pw"); System.exit(1); } DbCreate client = null; try { - client = new DbCreate(args[0]); + client = new DbCreate(args[0], args[1], args[2]); client.connect(); client.createSchema(); } catch ( Throwable e ) {
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=1711768&r1=1711767&r2=1711768&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 Sun Nov 1 14:09:47 2015 @@ -28,6 +28,7 @@ import com.datastax.driver.core.BoundSta import com.datastax.driver.core.Cluster; import com.datastax.driver.core.Host; import com.datastax.driver.core.Metadata; +import com.datastax.driver.core.PlainTextAuthProvider; import com.datastax.driver.core.PreparedStatement; import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Session; @@ -85,7 +86,11 @@ public class DbManager if ( cluster != null ) return; // already initialized + String pw = dbPassword(); + PlainTextAuthProvider auth = new PlainTextAuthProvider("ducc", pw); + cluster = Cluster.builder() + .withAuthProvider(auth) .addContactPoint(dburl) .build(); @@ -154,11 +159,11 @@ public class DbManager { // logger.info(methodName, null, "Opening service database at: " + dburl); Properties props = new Properties(); - FileInputStream fis = new FileInputStream(System.getProperty("DUCC_HOME") + "/resources.private/db_password"); + FileInputStream fis = new FileInputStream(System.getProperty("DUCC_HOME") + "/resources.private/" + DbCreate.PASSWORD_FILE); props.load(fis); fis.close(); - String pw = props.getProperty("db_password"); + String pw = props.getProperty(DbCreate.PASSWORD_KEY); if ( pw == null ) { throw new IllegalStateException("Cannot acquire the database password."); } 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=1711768&r1=1711767&r2=1711768&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 Sun Nov 1 14:09:47 2015 @@ -427,7 +427,6 @@ public class HistoryManagerDb ByteArrayInputStream bais = new ByteArrayInputStream(workbytes); ObjectInputStream ois = new ObjectInputStream(bais); DuccWorkMap work = (DuccWorkMap) ois.readObject(); - Map<DuccId, IDuccWork> map = work.getMap(); ois.close(); workbytes = bbmap.array(); Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/start_sim URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/start_sim?rev=1711768&r1=1711767&r2=1711768&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/start_sim (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/start_sim Sun Nov 1 14:09:47 2015 @@ -388,10 +388,15 @@ class StartSim(DuccUtil): self.start_broker() print '-------- start database' - if ( components.get('db') != None ): - if ( self.db_start() ): - self.db_init() + if ( components.get('db') != None ): + try: + self.db_start() + except Exception (e): + # print e + print sys.exc_info()[0], "Can't start the database." + sys.exit(1) + print '-------- specials_only', specials_only if ( specials_only ): return Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/stop_sim URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/stop_sim?rev=1711768&r1=1711767&r2=1711768&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/stop_sim (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/stop_sim Sun Nov 1 14:09:47 2015 @@ -37,36 +37,6 @@ from ducc_util import ThreadPool class StopSim(DuccUtil): - def stop_db(self): - - # disable until we're ready to turn this on - if ( self.db_parms == self.db_disabled ): - return True - - (jvm_parms, classpath, db_rt, dburl, dbroot) = self.db_parms() - - print 'Stopping database' - - main = 'com.orientechnologies.orient.server.OServerShutdownMain' - - jp = '' - for k in jvm_parms.keys(): - v = jvm_parms[k] - if ( v == None ): - jp = jp + k + ' ' - else: - jp = jp + k + '=' + v + ' ' - - - cmd = ' '.join([self.java(), jp, '-cp', classpath, main]) - print cmd - - here = os.getcwd() - os.chdir(db_rt) - self.spawn(cmd) - os.chdir(here) - - def signal_process(self, args): inst, data_prop, signal = args data = data_prop @@ -206,6 +176,7 @@ class StopSim(DuccUtil): time.sleep(sleeptime) if ( stopdatabase ) : + print 'Stopping database' self.db_stop() if ( stopbroker and self.automanage ): Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-parent/pom.xml URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-parent/pom.xml?rev=1711768&r1=1711767&r2=1711768&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-parent/pom.xml (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-parent/pom.xml Sun Nov 1 14:09:47 2015 @@ -175,6 +175,7 @@ <lz4.version>1.2.0</lz4.version> <hdr.version>2.1.4</hdr.version> <!-- end of cassandra client --> + <cassandra.server.version>2.1.11</cassandra.server.version> <http.commons.client.version>4.3.5</http.commons.client.version> <http.commons.client-cache.version>4.3.5</http.commons.client-cache.version>