orientdb 2.0.1
java 7
window & linux
sql and the java api

I have a multi-thread environment with multiple threads updating and 
reading. date from my graph database.


I run this query several times a minutes form different threads

QueryA - runs several times a minute
update (select expand(in('Manages')) from asset where guid = '%s') set 
lastCommunicationTime=date()

QueryB - runs on demand - This is the query that quits working
select @rid as id, $computer.@rid as computerId, $computer.hostname as 
hostname, $computer.addresses as addresses, $computer.tags as computerTags, 
$computer.version as computerVersion, 
    version as agentVersion, lastCommunicationTime, registrationTime from 
(select expand(in("MemberOf")) from #%s)  where  $computer.size() > 0 and 
lastCommunicationTime > %s Let $computer = out("Manages")

 I eventually I get this error

com.orientechnologies.common.concur.OTimeoutException: Can not lock record 
for 2000 ms. seems record is deadlocked by other record 

The stack trace looks like it some facility in orientdb and does not 
reference any of my code in the stack trace.


1 How do i avoid this exception?
2 How do i recover from this exception, once it happens QueryB won't work 
until i restart the orient db server

Also i tried this
OGlobalConfiguration.STORAGE_RECORD_LOCK_TIMEOUT.setValue(1000*30);
and it didn't help any

Im basically making my calls like this

OrientGraphFactory factory = new OrientGraphFactory(url, username, 
password);

factory.setupPool(10, 100);
OrientGraph conn = factory.getTx();
try {

// update
String sql =......

conn.command(new OCommandSQL(sql)).execute();
} catch (Exception e) {
e.printStackTrace();
} finally {
conn.shutdown();
}


// 

-- 

--- 
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 orient-database+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to