Re: Endorsing Peer - High Availability : Not able to submit tx even if sufficient endorsing peers available


Brett T Logan <brett.t.logan@...>
 

Hi Adhav,
 
Assuming you are using Service Discovery:
 
Service Discovery uses Gossip metadata to determine available peers for endorsement. If you take one of your peers offline and then immediately submit a transaction you are likely going to hit this error. This is because I would assume Gossip hasn't updated its metadata yet and Service Discovery is using the last known layout that is no longer valid.
 
Your clients should have failover logic if the network can't tolerate data not being written to the ledger, i.e., your client application should attempt to resend the transaction at intervals that make logical sense for you application, up to the limits that make sense for you application.
 
Yacov can probably answer, what gossip config parameters affect the frequency with which gossip updates its metadata used by Service Discovery?
 
Brett Logan
Software Engineer, IBM Blockchain
Phone: 1-984-242-6890
 
 
 

----- Original message -----
From: "Adhav Pavan" <adhavpavan@...>
Sent by: fabric@...
To: fabric <fabric@...>
Cc:
Subject: [EXTERNAL] [Hyperledger Fabric] Endorsing Peer - High Availability : Not able to submit tx even if sufficient endorsing peers available
Date: Mon, Sep 7, 2020 2:27 PM
 
Hello Experts,
 
I have a network with the following configuration.
  • Org 1 having 2 peers (both peers are endorsing)
  • Org 2 having 2 Peer(both peers are endorsing)
  • Endorsement  Policy: MAJORITY Endorsement
  • Fabric Version: 2.0
For high availability, both of the peers in each org are endorsing peers.
 
When I invoke tx with all peers up and running, the network is working as expected.
 
When I stop one peer(peer0.org1), the Transaction is not getting submitted as SDK is not able to connect with peer0.org1. But peer1.org1 is already up and running, it can endorse transaction. The purpose of having multiple endorsing peers is high availability(In case if one peer is down, other can endorse tx). In this case, the transaction should have committed successfully, but it gave an error.
 
Error: Failed to connect before the deadline on Endorser- name: peer0.org1.example.com, url:grpcs://localhost:7051
 
I have CCP for org 1 as below:
 
 
When I remove peer0.org1.example.com from CCP(Common Connection Profile ) of org1, I am able to submit transaction successfully.
 
I am just curious if this is correct behavior. Because in case one of peer failure, SDK should try to connect other peer to get endorsed transactions instead failed one.
 
In the case of peer failure, we should not require to change CCP. Instead, SDK should send tx to other peers of the same org to get endorsed tx.
 
Guys, Can you give me insights on this?
 
Please let me know in case if you require more information.
 
Thank you.

 

 
Heartfelt Regards,
 
Pavan Adhav
Blockchain Developer, Infinichains
phone:  8390114357
email:  pavan@...
------
Please excuse my brevity.
 

Join fabric@lists.hyperledger.org to automatically receive all group messages.