Failed to fetch next results: QUERY_STATE_NEXT failed: transaction ID: XXXXX: no ledger context

445 Views Asked by At

I am trying to fetch data from blockchain using query in chaincode. I have invoked around 2,50,000 records in blockchain and trying to fetch the data using query. When I run the chaincode and get the peer logs, I am getting the below error.

Chaincode error in peer logs:

Chaincode error in peer logs

Here is my code:

queryStringsa := fmt.Sprintf("{\"selector\":{\"$and\":[{\"savesID\":{\"$ne\":\"%s\"}},{\"bankID\":{\"$eq\":\"%s\"}},{\"ytdSavedFlag\":{\"$ne\":\"%s\"}},{\"saveMonthYear\":{\"$eq\":\"%s\"}}]},\"use_index\":[\"_design/indexSavesDataReportDoc\",\"indexSavesDataReportName\"]}","null",bankidsave,"Yes",lastImportDatekey)
queryResultss11sa, errsav := getQueryResultForQueryString(stub, queryStringsa)


// getQueryResultForQueryString
func getQueryResultForQueryString(stub shim.ChaincodeStubInterface, queryString string) ([]byte, error) {
 _scbLogger.Infof(string("**********************************"))
 _scbLogger.Infof(string("getQueryResultForQueryString queryString : "+ queryString))
 _scbLogger.Infof(string("**********************************"))

 resultsIterator, err := stub.GetQueryResult(queryString)

 if err != nil {
    _scbLogger.Error("Error Starting SCB-Efficiency Chaincode is " + string(err.Error()))
    return nil, err
 }
 defer resultsIterator.Close()

  // buffer is a JSON array containing QueryRecords
   var buffer bytes.Buffer
   buffer.WriteString("[")
   bArrayMemberAlreadyWritten := false
   fmt.Println("resultsIterator length : ", (resultsIterator))
   for resultsIterator.HasNext() {
    queryResponse, err := resultsIterator.Next()
    //fmt.Println("queryresponse inside for next : ", queryResponse)
    if err != nil {
        fmt.Println("$$$$$$$$$$$ error in reuslt iterator  : ", err)
        return nil, err
    }
    // Add a comma before array members, suppress it for the first array member
    if bArrayMemberAlreadyWritten == true {
        buffer.WriteString(",")
    }
    buffer.WriteString("{\"Key\":")
    buffer.WriteString("\"")
    buffer.WriteString(queryResponse.Key)
    buffer.WriteString("\"")

    buffer.WriteString(", \"Record\":")
    // Record is a JSON object, so we write as-is
    //fmt.Println("string(queryResponse.Value) : ",string(queryResponse.Value))
    buffer.WriteString(string(queryResponse.Value))
    buffer.WriteString("}")
    bArrayMemberAlreadyWritten = true
 }
 buffer.WriteString("]")
 //fmt.Printf("- getQueryResultForQueryString queryResult:\n%s\n", buffer.String())
 return buffer.Bytes(), nil
}

I have 5 set of different queries in same function. sometimes few queries return the query result and sometimes none of the queries gives the result, rather it shows the above error.

When I run the same queries in CouchDB fauxton I am getting the query result. When I run the same function for less number of records, the queries work properly without any errors.

0

There are 0 best solutions below