Hi Noorul, it seems that "db" is closed but never set to null (first method), and then not initialized again before data manipulation. Is it possible that some other threads are setting/closing it in a race condition?
Luigi 2015-03-10 9:53 GMT+01:00 Noorul Farhan Ahmed <[email protected]>: > Anyone please. > > Thanks, > Noorul > > > On Monday, March 9, 2015 at 7:09:44 AM UTC+3, Noorul Farhan Ahmed wrote: >> >> Hi, >> I am getting the exception >> (com.orientechnologies.orient.core.exception.ODatabaseException) com. >> orientechnologies.orient.core.exception.ODatabaseException: Database >> instance is not set in current thread. Assure to set it with: >> ODatabaseRecordThreadLocal.INSTANCE.set(db); >> >> when I am trying to query using Java Document API. Here is how I am >> querying the DB. >> >> public List<ODocument> executeQuery(String sql, HashMap<String,Object> >> params,StringBuilder errMsg) { >> List<ODocument> result = new ArrayList<ODocument>(); >> try { >> db = ODatabaseDocumentPool.global().acquire(connection,user, >> password); >> OSQLSynchQuery<ODocument> query = new OSQLSynchQuery< >> ODocument>(sql); >> >> >> if (params.isEmpty() == true) { >> result = db.command(query).execute(); >> } else { >> result = db.command(query).execute(params); >> } >> >> >> } catch (Exception e) { >> errMsg.append(e.getMessage()); >> //TODO: Add threaded error log saving mechanism >> } finally { >> db.close(); >> } >> return result; >> } >> >> public boolean listItemExist(String userRID, String productRID, String >> offerRID, ListItem listItem){ >> String sql; >> List<ODocument> listItems; >> HashMap<String, Object> params = new HashMap(); >> if (offerRID.equals("")){ >> sql = "select *, listName.name_ar as arlistname, >> listName.name_en as enlistname from Inf_List_Item where userID = " + >> userRID + " and productID = " + productRID; >> >> } >> else { >> sql = "select *, listName.name_ar as arlistname, >> listName.name_en as enlistname from Inf_List_Item where userID = " + >> userRID + " and productID = " + productRID + " and offerID = " + >> offerRID; >> >> } >> StringBuilder errorMsg = new StringBuilder(); >> listItems = db.executeQuery(sql, params, errorMsg); >> if (!errorMsg.toString().equals("")){ >> return false; >> } >> if (listItems.size() > 0){ >> ODocument listItemDoc = listItems.get(0); >> listItem.setListItemRID(listItemDoc.field("@rid").toString() >> ); >> listItem.setListNameAr(listItemDoc.field("arlistname").toStr >> ing()); >> listItem.setListNameEn(listItemDoc.field("enlistname").toStr >> ing()); >> listItem.setProductRID(productRID); >> listItem.setOfferRID(offerRID); >> return true; >> } >> else { >> return false; >> } >> } >> >> I get the error at >> listItem.setListItemRID(listItemDoc.field("@rid").toString()); >> >> Both methods are running on same thread. Any help is appreciated. >> >> Thanks, >> Noorul >> >> >> -- > > --- > 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. > -- --- 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.
