Keeping Transactions in Sync with Auto-Recovery
When transactions are executed with a fabric scope, they get applied to all nodes that are part of the same fabric instance as the local node. This process requires coordination and synchronization across the nodes.
You can display the ID of the last executed transaction by using the fabric-node-show command:
CLI (network-admin@pnswitch1) > fabric-node-show format name,fab-name,fab-tid,state,device-state,
name fab-name fab-tid state device-state
--------- ---------- ------- ------ ------------
pnswitch2 pnfabric 2 online ok
pnswitch1 pnfabric 2 online ok
The ID is the same because the fabric has made sure that the same transaction be executed consistently on all online nodes.
What happens, though, if one of the nodes is temporarily offline and gets out of sync?
Netvisor ONE’s fabric synchronization logic possesses an auto-recovery function (called auto-recover) that makes sure that the transactions get automatically resynchronized when they accidentally go out of sync. This capability is enabled by default:
CLI (network-admin@pnswitch1) > transaction-settings-show
switch: pnswitch1
allow-offline-cluster-nodes: on
auto-recover: on
auto-recover-retry-time: 5m
reserve-retry-maximum: 10
reserve-retry-interval-maximum(s): 8
In special scenarios, this capability can be turned off on purpose to force the configuration of a specific node to be rolled back to a previous state:
CLI (network-admin@pnswitch1) > transaction-settings-modify no-auto-recover
CLI (network-admin@pnswitch1) > transaction-settings-show
switch: pnswitch1
allow-offline-cluster-nodes: on
auto-recover: off
auto-recover-retry-time: 5m
reserve-retry-maximum: 10
reserve-retry-interval-maximum(s): 8
switch: pnswitch2
allow-offline-cluster-nodes: on
auto-recover: on
auto-recover-retry-time: 5m
reserve-retry-maximum: 10
reserve-retry-interval-maximum(s): 8
However, this change is local to the device where the command was issued. Therefore, in those cases in which it is necessary to apply this change to all nodes in the fabric, the switch * directive as shown in the following command can be used:
CLI (network-admin@pnswitch1) > switch * transaction-settings-modify no-auto-recover
CLI (network-admin@pnswitch1) > transaction-settings-show
switch: pnswitch1
allow-offline-cluster-nodes: on
auto-recover: off
auto-recover-retry-time: 5m
reserve-retry-maximum: 10
reserve-retry-interval-maximum(s): 8
switch: pnswitch2
allow-offline-cluster-nodes: on
auto-recover: off
auto-recover-retry-time: 5m
reserve-retry-maximum: 10
reserve-retry-interval-maximum(s): 8