Skip to content

Commit dc8d323

Browse files
committed
[FAB-6987]Fix single_tx_client panic error
Likley due to the fact that it has not really been maintained, the single_tx_client panicked because the proper message structures were not being send to the orderer. Once this was fixed, it led to a type mismatch error due to the way the deliver channel is set up. Rather than muck around with this, I simply got the client working such that it gets the latest block from the orderer and then also gets the block for the tx it submits as well. Change-Id: Ie05ac79a2d940e2b30b1d8935bb2feeea527518b Signed-off-by: Gari Singh <[email protected]>
1 parent b19580a commit dc8d323

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

orderer/sample_clients/single_tx_client/single_tx_client.go

+20-14
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package main
1818

1919
import (
2020
"fmt"
21+
"math"
2122
"time"
2223

2324
"github.com/hyperledger/fabric/common/configtx/tool/provisional"
@@ -42,7 +43,7 @@ var NEEDED_SENT = 1
4243
func main() {
4344
logger.Info("Creating an Atomic Broadcast GRPC connection.")
4445
timeout := 4 * time.Second
45-
clientconn, err := grpc.Dial(":7101", grpc.WithBlock(), grpc.WithTimeout(timeout), grpc.WithInsecure())
46+
clientconn, err := grpc.Dial(":7050", grpc.WithBlock(), grpc.WithTimeout(timeout), grpc.WithInsecure())
4647
if err != nil {
4748
logger.Errorf("Failed to connect to GRPC: %s", err)
4849
return
@@ -108,32 +109,37 @@ func updateReceiver(resultch chan byte, errorch chan error, client ab.AtomicBroa
108109
SignatureHeader: utils.MarshalOrPanic(&cb.SignatureHeader{}),
109110
},
110111
Data: utils.MarshalOrPanic(&ab.SeekInfo{
111-
Start: &ab.SeekPosition{Type: &ab.SeekPosition_Newest{}},
112-
Stop: &ab.SeekPosition{Type: &ab.SeekPosition_Newest{}},
112+
Start: &ab.SeekPosition{Type: &ab.SeekPosition_Newest{
113+
Newest: &ab.SeekNewest{}}},
114+
Stop: &ab.SeekPosition{Type: &ab.SeekPosition_Specified{Specified: &ab.SeekSpecified{Number: math.MaxUint64}}},
113115
Behavior: ab.SeekInfo_BLOCK_UNTIL_READY,
114116
}),
115117
}),
116118
})
117119

118120
logger.Info("{Update Receiver} Listening to ledger updates.")
119-
for i := 0; i < 2; i++ {
121+
for i := 0; i < 3; i++ {
120122
m, inerr := dstream.Recv()
121123
if inerr != nil {
122124
errorch <- fmt.Errorf("Failed to receive consensus: %s", inerr)
123125
return
124126
}
125-
b := m.Type.(*ab.DeliverResponse_Block)
126-
logger.Info("{Update Receiver} Received a ledger update.")
127-
for i, tx := range b.Block.Data.Data {
128-
pl := &cb.Payload{}
129-
e := &cb.Envelope{}
130-
merr1 := proto.Unmarshal(tx, e)
131-
merr2 := proto.Unmarshal(e.Payload, pl)
132-
if merr1 == nil && merr2 == nil {
133-
logger.Infof("{Update Receiver} %d - %v", i+1, pl.Data)
127+
switch b := m.Type.(type) {
128+
case *ab.DeliverResponse_Status:
129+
fmt.Println("Got status ", b)
130+
case *ab.DeliverResponse_Block:
131+
logger.Info("{Update Receiver} Received a ledger update.")
132+
for i, tx := range b.Block.Data.Data {
133+
pl := &cb.Payload{}
134+
e := &cb.Envelope{}
135+
merr1 := proto.Unmarshal(tx, e)
136+
merr2 := proto.Unmarshal(e.Payload, pl)
137+
if merr1 == nil && merr2 == nil {
138+
logger.Infof("{Update Receiver} %d - %v", i+1, pl.Data)
139+
}
134140
}
141+
resultch <- UPDATE
135142
}
136-
resultch <- UPDATE
137143
}
138144
logger.Info("{Update Receiver} Exiting...")
139145
}

0 commit comments

Comments
 (0)