Sorry Andrey, no maven project, just playing with Orientdb.
But I am attaching the 4 java files that I used to get that bug, hope that
helps.
On Friday, September 26, 2014 7:43:20 AM UTC-4, Andrey Lomakin wrote:
>
> Hi,
> Could you provide test which I can run, in form of may be maven project ?
>
> On Thu, Sep 25, 2014 at 7:41 AM, Andrey Lomakin <[email protected]
> <javascript:>> wrote:
>
>> Hi,
>> You should follow
>> https://github.com/orientechnologies/orientdb/issues/2840
>>
>> On Wed, Sep 24, 2014 at 10:57 PM, <[email protected] <javascript:>>
>> 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] <javascript:>.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> --
>> Best regards,
>> Andrey Lomakin.
>>
>> Orient Technologies
>> the Company behind OrientDB
>>
>>
>
>
> --
> 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.
package test;
public class Address {
private String street;
private String city;
private int zip;
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public int getZip() {
return zip;
}
public void setZip(int zip) {
this.zip = zip;
}
}
package test;
import java.util.ArrayList;
import java.util.List;
public class Customer extends Person {
List<Address> relativesAddresses = new ArrayList<Address>();
public List<Address> getRelativesAddresses() {
return relativesAddresses;
}
public void setRelativesAddresses(List<Address> relativesAddresses) {
this.relativesAddresses = relativesAddresses;
}
}
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 ExecutorService threadPoolExecutor = new ThreadPoolExecutor(
corePoolSize,
maxPoolSize,
keepAliveTime,
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>()
);
public CustomerTest3() {
}
public static void main(String[] args) {
CustomerTest3 ct3 = new CustomerTest3();
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() {
final OObjectDatabaseTx db = new OObjectDatabaseTx(
"plocal:c:/java/dbs/person").open("admin", "admin");
System.out.println("updateCust3");
List<Customer> result = db.query(new OSQLSynchQuery<Customer>(
"select * from Customer where address.city like '%8%'"));
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())));
db.save(p);
System.out.println(p.getAddress().getCity());
System.out.println(p.getName());
// try {
// Thread.sleep(5000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
db.commit();
}
}
private void updateCust4() {
final OObjectDatabaseTx db = new OObjectDatabaseTx(
"plocal:c:/java/dbs/person").open("admin", "admin");
List<Customer> result = db.query(new OSQLSynchQuery<Customer>(
"select * from Customer where address.city like '%9%'"));
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");
System.out.println("updateCust4");
for (Customer p : result) {
db.begin();
//System.out.println("updateCust4");
p.setName("updated name " + sdf.format(new Date(System.currentTimeMillis())));
db.save(p);
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.commit();
}
}
}package test;
public class Person {
private int age;
private String name;
private Address address;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}