From 4804471582642b0a05d419e86b2ee3abf1707da3 Mon Sep 17 00:00:00 2001 From: Tatsushi Inagaki Date: Mon, 19 Dec 2016 04:12:55 -0500 Subject: [PATCH] [FAB-1447] Broadcaster exits normally at EOF Make broadcast.(*broadcaster).queueEnvelopes() exits normally when it detects io.EOF at receiving a message from a client. If the orderer forwards io.EOF to a Node SDK client, Orderer.sendBroadcast() fails due to the error. I observed this error when I deploy a large chaincode with BATCHSIZE=1. Fix Issue # FAB-1447. https://jira.hyperledger.org/browse/FAB-1447 Signed-off-by: Tatsushi Inagaki Change-Id: Icc6379bb04ceaab7ad463c0234d2419c34f8faca --- orderer/common/broadcast/broadcast.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/orderer/common/broadcast/broadcast.go b/orderer/common/broadcast/broadcast.go index 3eedf55da15..159b686f279 100644 --- a/orderer/common/broadcast/broadcast.go +++ b/orderer/common/broadcast/broadcast.go @@ -22,6 +22,8 @@ import ( ab "github.com/hyperledger/fabric/protos/orderer" "github.com/op/go-logging" + "io" + "github.com/golang/protobuf/proto" ) @@ -118,6 +120,9 @@ func (b *broadcaster) queueEnvelopes(srv ab.AtomicBroadcast_BroadcastServer) err default: } msg, err := srv.Recv() + if err == io.EOF { + return nil + } if err != nil { return err }