Corda - происхождение сервиса и наша идентичность - разные личности - PullRequest
1 голос
/ 28 марта 2020

Я реализовал сервис Corda, предназначенный для автоматического завершения перехода между состояниями. Он работает, наблюдая за определенными состояниями хранилища, а затем запускает поток для состояний, которые соответствуют критериям хранилища.

Однако при выполнении потоковых тестов процесс зависает при обращении к службе. Я зарегистрировал некоторые выходные данные службы, которые не имеют смысла для меня

logger.info("Our Identity = $ourIdentity")

Где ourIdentity реализовано как:

private val ourIdentity: Party
    get() = serviceHub.myInfo.legalIdentities.first()

Что не имеет большого значения смысл - это то, что регистрируется после этого вывода ...

[INFO] 15:27:59,145 AutoCompleteService. Our Identity = O=Bank A, L=London, C=GB {
    actor_id=Only For Testing, 
    actor_owning_identity=O=Bank B, L=London, C=GB, 
    actor_store_id=TEST, 
    fiber-id=10000128, 
    flow-id=e40a3ee1-e1ac-4d9d-9fb7-be6cff1f2f34, 
    invocation_id=61787f49-1ecb-4663-a038-768c3b757ea7, 
    invocation_timestamp=2020-03-28T15:27:59.115Z, 
    origin=O=Bank B, L=London, C=GB, 
    session_id=61787f49-1ecb-4663-a038-768c3b757ea7, 
    session_timestamp=2020-03-28T15:27:59.115Z, 
    thread-id=6759
}

В частности, почему эти отчеты actor_owning_identity и origin должны быть Банк B , когда ourIdentity сообщает об узле идентификатор: Банк A ?

PS это выполняется в тесте потока с использованием MockNetwork.

1 Ответ

1 голос
/ 07 апреля 2020

Сервисы существуют во всех узлах с Cordapp, и мы запускаем их на всех состояниях.

Похоже, порядок прибытия неожидан для услуг. В этом случае вам придется управлять тем, какие узлы действительно обрабатывают какие события.

...