Hi, You should follow https://github.com/orientechnologies/orientdb/issues/2840
On Wed, Sep 24, 2014 at 10:57 PM, <[email protected]> wrote: > Hi, > I get this error - any help on this? > This is the code that is causing the exception: > > package test; > import java.text.SimpleDateFormat; > import java.util.Date; > import java.util.List; > import java.util.concurrent.*; > import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery; > import com.orientechnologies.orient.object.db.OObjectDatabaseTx; > public class CustomerTest3 { > > int corePoolSize = 2; > int maxPoolSize = 3; > long keepAliveTime = 500; > public OObjectDatabaseTx db = new OObjectDatabaseTx( > "plocal:c:/java/dbs/person").open("admin", "admin"); > public ExecutorService threadPoolExecutor = new ThreadPoolExecutor( > corePoolSize, > maxPoolSize, > keepAliveTime, > TimeUnit.MILLISECONDS, > new LinkedBlockingQueue<Runnable>() > ); > > > > public CustomerTest3() { > > > } > public static void main(String[] args) { > > > CustomerTest3 ct3 = new CustomerTest3(); > > ct3.db.getEntityManager().registerEntityClasses("test"); > Future f1 = ct3.threadPoolExecutor.submit(new FutureTask<String>( > new Callable<String>() > { > public String call() { > ct3.updateCust3(); > return "done"; > } > })); > > Future f2 = ct3.threadPoolExecutor.submit(new FutureTask<String>( > new Callable<String>() > { > public String call() { > ct3.updateCust4(); > return "done"; > } > })); > > > // try { > // if (f1.get().equals("done") && f1.get().equals("done")) > // ct3.db.close(); > // } catch (InterruptedException e) { > // // TODO Auto-generated catch block > // e.printStackTrace(); > // } catch (ExecutionException e) { > // // TODO Auto-generated catch block > // e.printStackTrace(); > // } > > > } > > private void updateCust3() { > List<Customer> result = db.query(new OSQLSynchQuery<Customer>( > "select * from Customer where address.city like '%98%'")); > > SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm"); > > > > for (Customer p : result) { > //db.begin(); > > p.setName("updated name " + sdf.format(new > Date(System.currentTimeMillis()))); > > System.out.println(sdf.format(new > Date(System.currentTimeMillis()))); > > System.out.println(p.getAddress().getCity()); > System.out.println(p.getName()); > db.save(p); > try { > Thread.sleep(5000); > } catch (InterruptedException e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } > > //db.commit(); > } > } > > private void updateCust4() { > List<Customer> result = db.query(new OSQLSynchQuery<Customer>( > "select * from Customer where address.city like '%99%'")); > > SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm"); > > > > for (Customer p : result) { > > > p.setName("updated name " + sdf.format(new > Date(System.currentTimeMillis()))); > > System.out.println(sdf.format(new > Date(System.currentTimeMillis()))); > > System.out.println(p.getAddress().getCity()); > System.out.println(p.getName()); > > try { > Thread.sleep(1000); > } catch (InterruptedException e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } > //db.begin(); > db.save(p); > //db.commit(); > } > > } > > } > > > ///////////////////////////////////////////////////////////////// > > Sep 24, 2014 3:48:31 PM com.orientechnologies.common.log.OLogManager log > SEVERE: Error on fetching record during browsing. The record has been > skipped > com.orientechnologies.orient.core.exception.ODatabaseException: Error on > retrieving record #10:0 (cluster: customer) > at > com.orientechnologies.orient.core.db.raw.ODatabaseRaw.read(ODatabaseRaw.java:288) > at > com.orientechnologies.orient.core.db.record.ODatabaseRecordAbstract.executeReadRecord(ODatabaseRecordAbstract.java:905) > at > com.orientechnologies.orient.core.tx.OTransactionNoTx.loadRecord(OTransactionNoTx.java:70) > at > com.orientechnologies.orient.core.db.record.ODatabaseRecordTx.load(ODatabaseRecordTx.java:274) > at > com.orientechnologies.orient.core.db.record.ODatabaseRecordTx.load(ODatabaseRecordTx.java:40) > at > com.orientechnologies.orient.core.iterator.OIdentifiableIterator.readCurrentRecord(OIdentifiableIterator.java:285) > at > com.orientechnologies.orient.core.iterator.ORecordIteratorClusters.begin(ORecordIteratorClusters.java:287) > at > com.orientechnologies.orient.core.iterator.ORecordIteratorClusters.config(ORecordIteratorClusters.java:376) > at > com.orientechnologies.orient.core.iterator.ORecordIteratorClass.<init>(ORecordIteratorClass.java:72) > at > com.orientechnologies.orient.core.sql.OCommandExecutorSQLResultsetAbstract.searchInClasses(OCommandExecutorSQLResultsetAbstract.java:368) > at > com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.searchInClasses(OCommandExecutorSQLSelect.java:657) > at > com.orientechnologies.orient.core.sql.OCommandExecutorSQLResultsetAbstract.assignTarget(OCommandExecutorSQLResultsetAbstract.java:128) > at > com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.assignTarget(OCommandExecutorSQLSelect.java:398) > at > com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.executeSearch(OCommandExecutorSQLSelect.java:382) > at > com.orientechnologies.orient.core.sql.OCommandExecutorSQLSelect.execute(OCommandExecutorSQLSelect.java:349) > at > com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.execute(OCommandExecutorSQLDelegate.java:60) > at > com.orientechnologies.orient.core.storage.OStorageEmbedded.executeCommand(OStorageEmbedded.java:82) > at > com.orientechnologies.orient.core.storage.OStorageEmbedded.command(OStorageEmbedded.java:71) > at > com.orientechnologies.orient.core.sql.query.OSQLQuery.run(OSQLQuery.java:69) > at > com.orientechnologies.orient.core.sql.query.OSQLSynchQuery.run(OSQLSynchQuery.java:80) > at > com.orientechnologies.orient.core.query.OQueryAbstract.execute(OQueryAbstract.java:29) > at > com.orientechnologies.orient.core.db.record.ODatabaseRecordAbstract.query(ODatabaseRecordAbstract.java:664) > at > com.orientechnologies.orient.core.db.ODatabaseRecordWrapperAbstract.query(ODatabaseRecordWrapperAbstract.java:192) > at > com.orientechnologies.orient.object.db.ODatabasePojoAbstract.query(ODatabasePojoAbstract.java:238) > at test.CustomerTest3.updateCust3(CustomerTest3.java:75) > at test.CustomerTest3.access$0(CustomerTest3.java:73) > at test.CustomerTest3$1.call(CustomerTest3.java:43) > at test.CustomerTest3$1.call(CustomerTest3.java:1) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:744) > Caused by: com.orientechnologies.common.concur.lock.OLockException: Cannot > unlock a never acquired lock > at > com.orientechnologies.orient.core.tx.OTransactionAbstract.unlockRecord(OTransactionAbstract.java:119) > at > com.orientechnologies.orient.core.id.ORecordId.unlock(ORecordId.java:272) > at > com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.readRecord(OAbstractPaginatedStorage.java:1304) > at > com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.readRecord(OAbstractPaginatedStorage.java:661) > at > com.orientechnologies.orient.core.db.raw.ODatabaseRaw.read(ODatabaseRaw.java:282) > ... 33 more > > > > > > > > > > > -- > > --- > 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. > -- Best regards, Andrey Lomakin. Orient Technologies the Company behind OrientDB -- --- 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.
