I'm having a strange issue with orientdb getting disconnected: after a longer period of inactivity ( ~3hours ? ), when we try to insert/register a new user, the attempt hangs on commit.
There is no error, but a warnings in the server log:
WARNING [com.orientechnologies.orient.client.remote.OStorageRemote] (default task-4) Caught I/O errors from Not connected (local socket=?), trying to reconnect (error: java.io.IOException: Stream closed)
WARNING [com.orientechnologies.orient.client.remote.OStorageRemote] (default task-4) Connection re-acquired transparently after 156ms and 1 retries to server '127.0.0.1:2424/ImpYMaster2': no errors will be thrown at application level
The code is nothing out of the ordinary:
newUser = txGraph.addVertex("class:V_User");
//set some properties
userConfToken = txGraph.addVertex("class:V_UConfirmationToken");
//set some other properties
txGraph.addEdge("class:E_UserConfirmationToken", newUser, userConfToken, "E_UserConfirmationToken");
//just created an edge
//and just commit the whole thing
//where OrientGraph txGraph = graphFactory.getTx() ...
By 'hangs', I mean, on commit, there are no errors thrown, the data gets persisted, but any lines of code after the commit never get executed. All our code is executed as the result of a POST call, so the end result is that the call never completes.
The client/ JAVA API version is 2.1.6, and the DB version is the same.
The transaction is not
The app is packaged as a war and deployed with Wildfly.
If the application is redeployed / Wildfly is restarted, it will work OK until it will time-out/disconnect again.
It's difficult track down/debug as it seems to happen after a long period of inactivity.
Q: Is is something related to the odb version? Should we try mis-matched client/db versions?
Q: How/when does the timeout/disconnect occur? Why does it occur?
Q: Can we change the timeout interval?
Q: Is there a way to manually check within the Java API that we're disconnected and then manually reconnect?