Skip to content

Commit f302533

Browse files
author
Srinivasan Muralidharan
committed
FAB-1195 CLI broadcast client should receive ack
https://jira.hyperledger.org/browse/FAB-1195 Not receiving Ack in the client side could cause the orderer to exit the broadcast stream without draining it. Made sure the CLI orderer client receives Ack. https://jira.hyperledger.org/browse/FAB-1196 Also fixed the build issue consensus_test.go. Change-Id: I26f81a8f49e0381b89c532cfd68dbec20d2a5985 Signed-off-by: Srinivasan Muralidharan <[email protected]>
1 parent f4e12d9 commit f302533

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

orderer/solo/consensus_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ func TestBatchTimer(t *testing.T) {
158158
func TestBatchTimerHaltOnFilledBatch(t *testing.T) {
159159
filters, cm := getFiltersAndConfig()
160160
batchSize := 2
161-
rl := ramledger.New(10, genesisBlock)
161+
_, rl := ramledger.New(10, genesisBlock)
162162
bs := NewConsenter(batchSize, time.Hour, rl, filters, cm)
163163
defer bs.halt()
164164
it, _ := rl.Iterator(ab.SeekInfo_SPECIFIED, 1)

peer/chaincode/noopsordererclient.go

+24-3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ package chaincode
2424
//-------------------------------------------------------------
2525
import (
2626
"fmt"
27+
"time"
2728

2829
cb "github.com/hyperledger/fabric/protos/common"
2930
ab "github.com/hyperledger/fabric/protos/orderer"
@@ -40,9 +41,25 @@ func newBroadcastClient(client ab.AtomicBroadcast_BroadcastClient) *broadcastCli
4041
return &broadcastClient{client: client}
4142
}
4243

44+
func (s *broadcastClient) getAck() error {
45+
msg, err := s.client.Recv()
46+
if err != nil {
47+
return err
48+
}
49+
if msg.Status != cb.Status_SUCCESS {
50+
return fmt.Errorf("Got unexpected status: %v", msg.Status)
51+
}
52+
return nil
53+
}
54+
4355
//Send data to solo orderer
4456
func Send(serverAddr string, env *cb.Envelope) error {
45-
conn, err := grpc.Dial(serverAddr, grpc.WithInsecure())
57+
var opts []grpc.DialOption
58+
opts = append(opts, grpc.WithInsecure())
59+
opts = append(opts, grpc.WithTimeout(3*time.Second))
60+
opts = append(opts, grpc.WithBlock())
61+
62+
conn, err := grpc.Dial(serverAddr, opts...)
4663
defer conn.Close()
4764
if err != nil {
4865
return fmt.Errorf("Error connecting: %s", err)
@@ -53,7 +70,11 @@ func Send(serverAddr string, env *cb.Envelope) error {
5370
}
5471

5572
s := newBroadcastClient(client)
56-
s.client.Send(env)
73+
if err = s.client.Send(env); err != nil {
74+
return fmt.Errorf("Could not send :%s)", err)
75+
}
5776

58-
return nil
77+
err = s.getAck()
78+
79+
return err
5980
}

0 commit comments

Comments
 (0)