Не удалось получить следующие результаты: сбой QUERY_STATE_NEXT: идентификатор транзакции: XXXXX: нет контекста главной книги - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь получить данные из цепочки блоков, используя запрос в коде цепи. Я вызвал около 250000 записей в блокчейне и пытался получить данные с помощью запроса. Когда я запускаю цепной код и получаю одноранговые журналы, я получаю следующую ошибку:

Ошибка цепного кода в одноранговых журналах:

Chaincode error in peer logs

Вот мой код:

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
}

У меня есть 5 различных запросов в одной и той же функции. иногда несколько запросов возвращают результат запроса, а иногда ни один из запросов не дает результат, скорее это показывает вышеуказанную ошибку.

Когда я выполняю те же запросы в CouchDB fauxton, я получаю результат запроса. Когда я запускаю ту же функцию для меньшего количества записей, запросы работают без ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...