Как гарантировать, что регистр синхронизируется при выполнении цепного кода? - PullRequest
0 голосов
/ 29 августа 2018

Я создал сеть Hyperledger Fabric, установил и создал экземпляр моего цепного кода. Однако когда я проверил свой цепной код, я обнаружил что-то не то, что ожидал.

Например, мой цепной код имеет API, который создает пользователя (с PutState), но если данное имя пользователя уже существует (проверьте с помощью GetQueryResult), он отказывается, возвращая ошибку.

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

# create user successfully
docker exec -it cli peer chaincode invoke ...
sleep 3
# attempt to create user with the same username which should fail and it does fail
docker exec -it cli peer chaincode invoke ...

, но без sleep 3 он не перестает работать и успешно записывается в книгу. Когда я проверяю данные, записанные в состоянии DB, я вижу последние данные, которые не должны были быть записаны.

Я думаю, это произошло потому, что в момент обработки второго запроса первая книга (или блок?) Еще не была передана проверяющему узлу.

Как мне избежать этого поведения? или это то, что цепной код не должен обрабатывать?

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