@@ -55,13 +55,16 @@ func (cc *ChannelClient) QueryWithOpts(request apitxn.QueryRequest, opts apitxn.
5555 notifier = make (chan apitxn.QueryResponse )
5656 }
5757
58- peers , err := cc .discovery .GetPeers (request .ChaincodeID )
59- if err != nil {
60- return nil , fmt .Errorf ("Unable to get peers: %v" , err )
58+ txProcessors := opts .ProposalProcessors
59+ if len (txProcessors ) == 0 {
60+ // Use discovery service to figure out proposal processors
61+ peers , err := cc .discovery .GetPeers (request .ChaincodeID )
62+ if err != nil {
63+ return nil , fmt .Errorf ("Unable to get peers: %v" , err )
64+ }
65+ txProcessors = peer .PeersToTxnProcessors (peers )
6166 }
6267
63- txProcessors := peer .PeersToTxnProcessors (peers )
64-
6568 go sendTransactionProposal (request , cc .channel , txProcessors , notifier )
6669
6770 if opts .Notifier != nil {
@@ -113,15 +116,20 @@ func (cc *ChannelClient) ExecuteTxWithOpts(request apitxn.ExecuteTxRequest, opts
113116 return apitxn.TransactionID {}, fmt .Errorf ("Chaincode name and function name must be provided" )
114117 }
115118
116- peers , err := cc .discovery .GetPeers (request .ChaincodeID )
117- if err != nil {
118- return apitxn.TransactionID {}, fmt .Errorf ("Unable to get peers: %v" , err )
119+ txProcessors := opts .ProposalProcessors
120+ if len (txProcessors ) == 0 {
121+ // Use discovery service to figure out proposal processors
122+ peers , err := cc .discovery .GetPeers (request .ChaincodeID )
123+ if err != nil {
124+ return apitxn.TransactionID {}, fmt .Errorf ("Unable to get peers: %v" , err )
125+ }
126+ txProcessors = peer .PeersToTxnProcessors (peers )
119127 }
120128
121129 // TODO: Temporary conversion until proposal sender is changed to handle [][]byte arguments
122130 ccArgs := toStringArray (request .Args )
123131 txProposalResponses , txID , err := internal .CreateAndSendTransactionProposal (cc .channel ,
124- request .ChaincodeID , request .Fcn , ccArgs , peer . PeersToTxnProcessors ( peers ) , request .TransientMap )
132+ request .ChaincodeID , request .Fcn , ccArgs , txProcessors , request .TransientMap )
125133 if err != nil {
126134 return apitxn.TransactionID {}, fmt .Errorf ("CreateAndSendTransactionProposal returned error: %v" , err )
127135 }
0 commit comments