-
I wrote a CCF(version: 0.19.3) app, and used sandbox.sh to setup the app with virtual mode and 3 nodes(-n option), then I killed two nodes(not primary node), I expected that the system can't write the key-value store anymore, so I sent a http request to a rpc endpoint which has a kv put command, but it still works, the kv store has been updated, is the behavior correct? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
@svenFeng KV writes happen in local state on the primary and are assigned a transaction ID (https://microsoft.github.io/CCF/main/use_apps/issue_commands.html), consensus then tries to replicate them out to the rest network. This is described in detail under: https://microsoft.github.io/CCF/main/use_apps/verify_tx.html Until the state of a transaction is Your network with two nodes shut down will be unable to make progress permanently, transactions submitted after the nodes have stopped responding will never commit. If the nodes were momentarily unavailable and eventually became reachable again on the other hand, the primary would be able to replicate its suffix and submitted transactions would commit in the end. |
Beta Was this translation helpful? Give feedback.
@svenFeng KV writes happen in local state on the primary and are assigned a transaction ID (https://microsoft.github.io/CCF/main/use_apps/issue_commands.html), consensus then tries to replicate them out to the rest network. This is described in detail under: https://microsoft.github.io/CCF/main/use_apps/verify_tx.html
Until the state of a transaction is
COMMITTED
, it is only tentatively applied on the current primary, but isn't persisted yet and could still be rolled back if replication failed.Your network with two nodes shut down will be unable to make progress permanently, transactions submitted after the nodes have stopped responding will never commit. If the nodes were momentarily un…