Обнаружена ошибка в «session.sendAndReceiveWithRetry (tx)» - PullRequest
0 голосов
/ 22 мая 2018

наше приложение использует Corda V2.0 в настоящее время и развернуто на выделенном сервере, мы используем 3 нотариуса с настроенным RAFT, но когда есть состояние ввода транзакции, в журнале обнаружена ошибка ниже

messaging.NodeMessagingClient.sendWithRetry - Reached the maximum number of retries (3) for message ClientMessageImpl

И после прочтения кода FinalityFlow мы обнаружили, что эта ошибка должна возникать на шаге "session.sendAndReceiveWithRetry (tx)" приведенных ниже кодов в NotaryFlow.kt

val response = try {
                val session = initiateFlow(notaryParty)
                if (serviceHub.networkMapCache.isValidatingNotary(notaryParty)) {
                    subFlow(SendTransactionWithRetry(session, stx))
                    session.receive<List<TransactionSignature>>()
                } else {
                    val tx: Any = if (stx.isNotaryChangeTransaction()) {
                        stx.notaryChangeTx
                    } else {
                        stx.buildFilteredTransaction(Predicate { it is StateRef || it is TimeWindow || it == notaryParty })
                    }
                    session.sendAndReceiveWithRetry(tx)
                }
            } catch (e: NotaryException) {
                if (e.error is NotaryError.Conflict) {
                    e.error.conflict.verified()
                }
                throw e
            }

Мы пыталисьпропингуйте друг друга между узлом, нотариусом 1, 2 и 3 с портом RPC, все они слушают, но из сообщения об ошибке мы не уверены, что это вызвано тем, что связь / обмен сообщениями не могли работать между узлом и нотариусом.Узлы нотариусов работают, и в их журналах нет ошибок.

Итак, мы хотели бы знать, может ли пинг друг с другом с портом RPC гарантировать, что обмен сообщениями будет хорошо работать между ними?Существует ли какой-либо подход, позволяющий проверить, могут ли сообщения между двумя узлами (узлом и нотариусом) отправляться и приниматься надлежащим образом?Большое спасибо.

1 Ответ

0 голосов
/ 05 июня 2018

В Corda 3 существует известная ошибка, из-за которой после перезагрузки нотариального кластера Raft он больше не обслуживает клиентские запросы.Вместо этого кластер Raft разделен на несколько лидеров.

Эта проблема отслеживается на плате JIRA Корды здесь: https://r3 -cev.atlassian.net / browse / CORDA-1527 .

...