Что происходит, когда база данных H2 узла каким-либо образом удаляется в Corda? - PullRequest
0 голосов
/ 07 октября 2018

Представьте, что A находится в сети вместе с B и C. И у A есть один общий факт с B и один общий с C. Оба они находятся в хранилище A.Предположим, что система A выходит из строя, а данные узла H2 исчезают, как A может восстановить то же самое с обоими этими фактами обратно в свое хранилище?

1 Ответ

0 голосов
/ 08 октября 2018

Если бы B и C оба хотели поделиться этой информацией с A, они оба могли бы вызвать поток, такой как определенный ниже, для повторной отправки транзакций и их зависимостей в A:

@InitiatingFlow
@StartableByRPC
class ShareTransactionHistory(val otherParty: Party, val signedTransaction: SignedTransaction) : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        val otherPartySession = initiateFlow(otherParty)
        subFlow(SendTransactionFlow(otherPartySession, signedTransaction))
    }
}

@InitiatedBy(ShareTransactionHistory::class)
class ShareTransactionHistoryResponder(val otherPartySession: FlowSession) : FlowLogic<Unit>() {
    @Suspendable
    override fun call() {
        subFlow(ReceiveTransactionFlow(otherPartySession, statesToRecord = StatesToRecord.ONLY_RELEVANT))
    }
}

Затем A автоматически перезаписывает транзакции и любые соответствующие состояния.

Однако, пожалуйста, смотрите этот вопрос для предупреждений в процессе восстановления.

...