Removing majority of orderers from OrdererAddresses section in channel in Hyperledger Fabric #fabric-orderer #hyperledger-fabric #raft


Yacov
 

Raft orderers only use the endpoints in that section for replication, but when exchanging consensus messages they use the host and port in the consenters section (the one with the TLS certificates).



From:        chintanr97@...
To:        fabric@...
Date:        05/12/2020 03:48 PM
Subject:        [EXTERNAL] [Hyperledger Fabric] Removing majority of orderers from OrdererAddresses section in channel in Hyperledger Fabric #raft #fabric-orderer #hyperledger-fabric
Sent by:        fabric@...




Consider the following situation:
 
1.        I am running fabric-samples/first-network for the HLF in RAFT mode.
2.        I use the CLI container to fetch the latest block for mychannel and edit the OrdererAddresses section by removing 4 orderers namely, orderer2.example.com, orderer3.example.com, orderer4.example.com, orderer5.example.com from it.
I am assuming this should disturb RAFT protocol because orderers are meant to communicate with one another by looking at the endpoints in OrdererAddresses section.
 
Now, the issue is that, despite the above fact, the RAFT keeps working fine. I wait for 10 minutes, assuming RAFT would break after EvictionSuspicion timeout as no longer leader can comunicate to other orderers. But this does not happen. I am still able to read blocks from the mychannel as well as I am able to submit new transactions (invoke operations) on the chaincode on that channel.
 
This means that OrdererAddresses are not looked into while communicating. Please correct me if I am wrong. By this, I need to know:
 
What is the exact functionality of OrdererAddresses section in the RAFT channels?




chintanr97@...
 

Consider the following situation:
 
  1. I am running fabric-samples/first-network for the HLF in RAFT mode.
  2. I use the CLI container to fetch the latest block for mychannel and edit the OrdererAddresses section by removing 4 orderers namely, orderer2.example.com, orderer3.example.com, orderer4.example.com, orderer5.example.com from it.
I am assuming this should disturb RAFT protocol because orderers are meant to communicate with one another by looking at the endpoints in OrdererAddresses section.
 
Now, the issue is that, despite the above fact, the RAFT keeps working fine. I wait for 10 minutes, assuming RAFT would break after EvictionSuspicion timeout as no longer leader can comunicate to other orderers. But this does not happen. I am still able to read blocks from the mychannel as well as I am able to submit new transactions (invoke operations) on the chaincode on that channel.
 
This means that OrdererAddresses are not looked into while communicating. Please correct me if I am wrong. By this, I need to know:
 
What is the exact functionality of OrdererAddresses section in the RAFT channels?