Как исправить «Ошибка: 14 недоступно: запись TCP не удалась» с помощью приложения блокчейна Fabric Hyperledger - PullRequest
1 голос
/ 30 мая 2019

На самом деле я работаю с этим приложением Hyperledger Fabric blockchain на моем компьютере (https://github.com/rastringer/medication-blockchain), и я могу запустить приложение на порту 8000.

Но у меня есть проблема: когда я хочу создатьзапись о наркотиках или смена владельца препарата с заявкой на порт 8000, у меня в терминале есть это сообщение:

"... Предложение о транзакции было успешно Отправлено предложение и получено ProposalResponse: Статус - 200, сообщение- "" Не удалось успешно вызвать :: Ошибка: возникла проблема с концентратором событий :: Ошибка: 14 НЕДОСТУПНО: Ошибка записи TCP "

И иногда у меня появляется то же сообщение, но с

... «Ошибка чтения TCP»

Более того, зеленое сообщение об успешном выполнении транзакции и идентификаторе транзакции не записывается, как в примере на рисунке, и этодля обоих (создать запись о наркотиках и изменить владельца лекарства).

Но когда я обновляю страницу на порту 8000, новая транзакция появляется в таблице, наканунеn если появляется сообщение об ошибке.

И я проверил приложение на другом компьютере, и нет этой проблемы (у меня последняя версия Linux Ubuntu 18.04.2)

Спасибозаранее за любую помощь:)

1 Ответ

0 голосов
/ 10 июня 2019

Ваш ответ правильный, пример кода был похож на код цепи fabric-samples / fabcar. В fabcar разработчик не реализовал веб-API, поэтому он использовал invoke.js. Но в случае с лекарственным приложением разработчик внедрил веб-приложение, в котором вам не нужен invoke.js. Но из-за кода цепочки из fabcar он забыл удалить часть вызова!

func (s *SmartContract) Invoke(APIstub shim.ChaincodeStubInterface) sc.Response {

function, args := APIstub.GetFunctionAndParameters()
if function == "queryDrug" {
    return s.queryDrug(APIstub, args)
} else if function == "initLedger" {
    return s.initLedger(APIstub)
} else if function == "recordDrug" {
    return s.recordDrug(APIstub, args)
} else if function == "queryAllDrug" {
    return s.queryAllDrug(APIstub)
} else if function == "changeDrugHolder" {
    return s.changeDrugHolder(APIstub, args)
}
...