Hi Luigi, Thanks for pointing me to the right direction. I was closing the DB before data manipulation. Now I am explicitly setting it to null after completion of operation.
Regards, Noorul On Tuesday, March 10, 2015 at 6:36:50 PM UTC+3, Luigi Dell'Aquila wrote: > > 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] > <javascript:>>: > >> 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] <javascript:>. >> 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.
