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.

Reply via email to