Hallo 
 
   I'm using OObjectDatabaseTx. I have bunch of simple objects Trade. They 
have only primitive attributes. No links no lazyload.  I can load them 
right with: 
  select from Trade order by @rid desc
Vaadin gui is acessing properties of Trade. It works for first 20 Trades 
sometimes more. Then I start getting 


Caused by: java.lang.NullPointerException
    at 
com.orientechnologies.orient.object.enhancement.OObjectProxyMethodHandler.getDocFieldValue(OObjectProxyMethodHandler.java:362)
    at 
com.orientechnologies.orient.object.enhancement.OObjectProxyMethodHandler.getValue(OObjectProxyMethodHandler.java:300)
    at 
com.orientechnologies.orient.object.enhancement.OObjectProxyMethodHandler.getValue(OObjectProxyMethodHandler.java:288)
    at 
com.orientechnologies.orient.object.enhancement.OObjectProxyMethodHandler.manageGetMethod(OObjectProxyMethodHandler.java:277)
    at 
com.orientechnologies.orient.object.enhancement.OObjectProxyMethodHandler.invoke(OObjectProxyMethodHandler.java:103)
    at 
cz.sc.simplegui.wr.Trade_$$_javassist_1.getDate(Trade_$$_javassist_1.java)
    at cz.sc.simplegui.wr.Trade.getDateDate(Trade.java:131)

which comes from first line of this method:

protected Object getDocFieldValue(final Object self, final String fieldName) {
  if (doc.getSchemaClass().existsProperty(fieldName))
    return doc.field(fieldName);
  else {
    OType expected = OObjectEntitySerializer.getTypeByClass(self.getClass(), 
fieldName);
    if (doc.fieldType(fieldName) != expected)
      doc.field(fieldName, doc.field(fieldName), expected);

    return doc.field(fieldName);
  }
}


where 

doc.getSchemaClass() 

starts giving null sometimes

I tried to debug this, but it never gives null when I step into this 
method. Or I was just unlucky. 

I'm using maven with 

<orientdb.version>2.0-M3</orientdb.version>

I felt like it could be caching problem so I put
OObjectDatabaseTx db = OObjectDatabasePool.global().acquire(url, dbUser, 
passwd);
db.getLocalCache().invalidate();
but it make no difference

the query method is:
public <T extends ObservablePojo> List<T> query(String query, Object... params) 
{
    long start = System.currentTimeMillis();
    query = String.format(query, params);
    OObjectDatabaseTx db = getDb();
    try {
        List<T> ret = getDb().query(new OSQLSynchQuery<T>(query));
        log.debug(((double) (System.currentTimeMillis() - start)) / 1000 + "sec 
-> QueryMany " + query + " returns " + ret.size());
        return ret;
    } finally {
        db.close();
    }
}
so the connection is released after query, iteration of properties happens 
later.

I tried this with sun jdk and open jdk on ubuntu with same result. 
Now I'm out of ideas. Anybody got same problem ?

Thanks for help
Pavel






-- 

--- 
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