From 44dd66f919af158e49db23719709b00037740a24 Mon Sep 17 00:00:00 2001 From: David VIEJO Date: Tue, 17 Dec 2024 22:06:56 +0100 Subject: [PATCH] Enhance orderer channel configuration in mainchannel_controller - Added methods to set various EtcdRaft options including ElectionInterval, HeartbeatTick, TickInterval, SnapshotIntervalSize, and MaxInflightBlocks in the updateOrdererChannelConfigTx function. - Improved error handling for each configuration setting to ensure robust updates. These changes facilitate better control over the orderer channel's Raft consensus parameters, enhancing overall system reliability. Signed-off-by: David VIEJO --- .../mainchannel/mainchannel_controller.go | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/controllers/mainchannel/mainchannel_controller.go b/controllers/mainchannel/mainchannel_controller.go index de72420a..82f2eed7 100644 --- a/controllers/mainchannel/mainchannel_controller.go +++ b/controllers/mainchannel/mainchannel_controller.go @@ -1427,6 +1427,36 @@ func updateOrdererChannelConfigTx(currentConfigTX configtx.ConfigTx, newConfigTx } } } + err = currentConfigTX.Orderer().EtcdRaftOptions().SetElectionInterval( + newConfigTx.Orderer.EtcdRaft.Options.ElectionTick, + ) + if err != nil { + return errors.Wrapf(err, "failed to set election interval") + } + err = currentConfigTX.Orderer().EtcdRaftOptions().SetHeartbeatTick( + newConfigTx.Orderer.EtcdRaft.Options.HeartbeatTick, + ) + if err != nil { + return errors.Wrapf(err, "failed to set heartbeat tick") + } + err = currentConfigTX.Orderer().EtcdRaftOptions().SetTickInterval( + newConfigTx.Orderer.EtcdRaft.Options.TickInterval, + ) + if err != nil { + return errors.Wrapf(err, "failed to set tick interval") + } + err = currentConfigTX.Orderer().EtcdRaftOptions().SetSnapshotIntervalSize( + newConfigTx.Orderer.EtcdRaft.Options.SnapshotIntervalSize, + ) + if err != nil { + return errors.Wrapf(err, "failed to set snapshot interval size") + } + err = currentConfigTX.Orderer().EtcdRaftOptions().SetMaxInflightBlocks( + newConfigTx.Orderer.EtcdRaft.Options.MaxInflightBlocks, + ) + if err != nil { + return errors.Wrapf(err, "failed to set max inflight blocks") + } } else if newConfigTx.Orderer.OrdererType == orderer.ConsensusTypeBFT { err = currentConfigTX.Orderer().SetConfiguration(newConfigTx.Orderer) if err != nil { @@ -1583,6 +1613,7 @@ func updateOrdererChannelConfigTx(currentConfigTX configtx.ConfigTx, newConfigTx if err != nil { return errors.Wrapf(err, "failed to set preferred max bytes") } + err = currentConfigTX.Orderer().SetBatchTimeout(newConfigTx.Orderer.BatchTimeout) if err != nil { return errors.Wrapf(err, "failed to set batch timeout")