On average, it takes 12 seconds to drop then create a database in this 
fashion. This is only dropping and creating via the OServerAdmin instance, 
not including the sqlinit() call. Is this the expected time?

On Wednesday, July 23, 2014 3:05:58 PM UTC-5, Sjohn Chambers wrote:
>
> I am currently working in Scala, and I have some unit tests set up to work 
> on a remote server. Currently the test is set to create the database if it 
> doesn't exist, then if it created to run a series of sql commands on it to 
> initialize the database to have the classes, properties, and such that I 
> need.
>
> Occasionally during the initialization it will fail out with a number of 
> different reasons. So far here's a list of the exceptions that have been 
> caught:
>
> All of these have a "Future timed out" exception during my initdb. I have 
> 60 seconds for the future to complete which should be magnitudes longer 
> than required. 
>
> Before init is called I check if the databases exist, and then drop if so, 
> I also drop at the end of tests to have a known good state. The drop before 
> is in case of failure to complete the test and not get to clean up.
>
> Here is a list of failure reasons returned over a series of about 100 
> iterations. The timing out seems to be the most common one, seeming like 
> some sort of race condition that is happening and deadlocking during 
> creation or initialization of the database.
>
> The test framework always fails during the beforeAll phase where the below 
> code is called. If the initialization goes through without a problem the 
> tests will pass every time.
>
> Failures:
>     1.  This one had no further exceptions just failed all of my tests. 
> This time the database was created successfully.
>     2.  OStorageException: Storage remotedb is not opened 
>     3.  OStorageException: Error executing command: sql.CREATE PROPERTY 
> autoincrement.nextid INTEGER. 
>             Caused by java.net.SocketException: Socket Closed
>     4.  OIndexException: Error on rebuilding the index for clusters: 
> [device]
>             Caused by: 
> com.orientechnologies.orient.core.exception.OStorageException: Storage 
> remotedb is not opened.
>     5.  Another OStorageException: Storage remotedb is not opened 
>     6.  Many more with no further exceptions, just times out at: 
> Await.ready(f, 20 second). Again the database was created successfully 
> according to server logs.
>     
> Code:
>
> def db: ODatabaseDocumentTx = new ODatabaseDocumentTx(connection) //where 
> connection is a string in the form of: remote:<host>:<port>/<dbname>
> val serverAdmin = new OServerAdmin(connection)
>
>
> def sqlinit() = {
>     val init_sql = List(
>         "CREATE CLASS device",
>         "CREATE PROPERTY device.id INTEGER",
>         "CREATE PROPERTY device.serial STRING",
>         "CREATE INDEX idx ON device (id) UNIQUE_HASH_INDEX",
>         "CREATE INDEX device.serial UNIQUE",
>         "CREATE CLASS autoincrement",
>         "CREATE PROPERTY autoincrement.nextid INTEGER",
>         "INSERT INTO autoincrement SET nextid=1" 
>     )
>
>
>     init_sql.foreach( (sql: String) => { 
>         val request : OCommandRequest = db.command( new OCommandSQL(sql) )
>         request.execute()
>         () // Unit returning function need this instead of having 
> request.execute as last function.
>     })
> }
>
>
> def open = {
>     val dbUser = dbConfig.getString("user")
>     val dbPass = dbConfig.getString("pass")
>     db.open(dbUser, dbPass)
> }
>
>
> def close = db.close
>
>
> def initdb = {
>     val f = future {
>         try {
>             serverAdmin.connect(srvUser,srvPass)
>             if(!serverAdmin.existsDatabase) {
>                 serverAdmin.createDatabase("document","plocal").close
>                 open
>                 sqlinit()
>                 close
>             }
>             else {
>                 serverAdmin.close
>             }
>         } catch {
>             case e: Exception => {
>                 e.printStackTrace()
>                 throw e
>             }
>         }
>     }
>     Await.ready(f, 60 second)
> }
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to