Skip to content

Commit 4286a09

Browse files
committed
return error from WaitForZetacoreToCreateBlocks() and SetAccountNumber() and handle them in start.go
1 parent 4bc58ca commit 4286a09

File tree

5 files changed

+32
-37
lines changed

5 files changed

+32
-37
lines changed

cmd/zetaclientd/p2p_diagnostics.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ func RunDiagnostics(startLogger zerolog.Logger, peers p2p.AddrList, hotkeyPk cry
176176
startLogger.Error().Err(err).Msgf("fail to create stream to peer %s", peer)
177177
continue
178178
}
179+
180+
// write a message to the stream
179181
message := fmt.Sprintf("round %d %s => %s", round, host.ID().String()[len(host.ID().String())-5:], peer.ID.String()[len(peer.ID.String())-5:])
180182
_, err = stream.Write([]byte(message))
181183
if err != nil {
@@ -186,7 +188,8 @@ func RunDiagnostics(startLogger zerolog.Logger, peers p2p.AddrList, hotkeyPk cry
186188
}
187189
continue
188190
}
189-
//startLogger.Debug().Msgf("wrote %d bytes", nw)
191+
192+
// read the echoed message
190193
buf := make([]byte, 1024)
191194
nr, err := stream.Read(buf)
192195
if err != nil {
@@ -197,13 +200,13 @@ func RunDiagnostics(startLogger zerolog.Logger, peers p2p.AddrList, hotkeyPk cry
197200
}
198201
continue
199202
}
200-
//startLogger.Debug().Msgf("read %d bytes", nr)
201203
startLogger.Debug().Msgf("echoed message: %s", string(buf[:nr]))
202204
err = stream.Close()
203205
if err != nil {
204206
startLogger.Warn().Err(err).Msgf("fail to close stream to peer %s", peer)
205207
}
206208

209+
// check if the message is echoed correctly
207210
if string(buf[:nr]) != message {
208211
startLogger.Error().Msgf("ping-pong failed with peer #(%d): %s; want %s got %s", peerCount, peer, message, string(buf[:nr]))
209212
continue

cmd/zetaclientd/start.go

+11-4
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,19 @@ func start(_ *cobra.Command, _ []string) error {
100100
}
101101

102102
// Wait until zetacore is ready to create blocks
103-
ready := zetacoreClient.WaitForZetacoreToCreateBlocks()
104-
if !ready {
105-
return errors.New("Zetacore is not ready")
103+
err = zetacoreClient.WaitForZetacoreToCreateBlocks()
104+
if err != nil {
105+
startLogger.Error().Err(err).Msg("WaitForZetacoreToCreateBlocks error")
106+
return err
106107
}
107108
startLogger.Info().Msgf("Zetacore client is ready")
108-
zetacoreClient.SetAccountNumber(authz.ZetaClientGranteeKey)
109+
110+
// Set grantee account number and sequence number
111+
err = zetacoreClient.SetAccountNumber(authz.ZetaClientGranteeKey)
112+
if err != nil {
113+
startLogger.Error().Err(err).Msg("SetAccountNumber error")
114+
return err
115+
}
109116

110117
// cross-check chainid
111118
res, err := zetacoreClient.GetNodeInfo()

zetaclient/chains/bitcoin/observer/observer.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -352,10 +352,6 @@ func (ob *Observer) GetLastBlockHeight() int64 {
352352
}
353353

354354
func (ob *Observer) SetLastBlockHeightScanned(height int64) {
355-
if height < 0 {
356-
ob.logger.Chain.Error().Msgf("lastBlockScanned for chain %d is negative: %d", ob.chain.ChainId, height)
357-
return
358-
}
359355
atomic.StoreInt64(&ob.lastBlockScanned, height)
360356
metrics.LastScannedBlockNumber.WithLabelValues(ob.chain.ChainName.String()).Set(float64(height))
361357
}
@@ -670,10 +666,14 @@ func (ob *Observer) BuildBroadcastedTxMap() error {
670666
}
671667

672668
func (ob *Observer) LoadLastBlock() error {
669+
// Get the latest block number from node
673670
bn, err := ob.rpcClient.GetBlockCount()
674671
if err != nil {
675672
return err
676673
}
674+
if bn < 0 {
675+
return fmt.Errorf("LoadLastBlock: negative block number %d", bn)
676+
}
677677

678678
//Load persisted block number
679679
var lastBlockNum clienttypes.LastBlockSQLType

zetaclient/context/zetacore_context_test.go

-15
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,6 @@ import (
1414
context "github.com/zeta-chain/zetacore/zetaclient/context"
1515
)
1616

17-
func assertPanic(t *testing.T, f func(), errorLog string) {
18-
defer func() {
19-
r := recover()
20-
if r != nil {
21-
require.Contains(t, r, errorLog)
22-
}
23-
}()
24-
f()
25-
}
26-
2717
func getTestCoreContext(
2818
evmChain chains.Chain,
2919
evmChainParams *observertypes.ChainParams,
@@ -149,11 +139,6 @@ func TestNewZetaCoreContext(t *testing.T) {
149139
}
150140
zetaContext := context.NewZetacoreContext(testCfg)
151141
require.NotNil(t, zetaContext)
152-
153-
// assert btc chain params panic because chain params are not yet updated
154-
assertPanic(t, func() {
155-
zetaContext.GetBTCChainParams()
156-
}, "BTCChain is missing for chainID 0")
157142
})
158143
}
159144

zetaclient/zetacore/client.go

+12-12
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
"cosmossdk.io/simapp/params"
99
rpcclient "github.com/cometbft/cometbft/rpc/client"
10+
"github.com/pkg/errors"
1011
"github.com/rs/zerolog"
1112
"github.com/rs/zerolog/log"
1213
"github.com/zeta-chain/zetacore/app"
@@ -150,28 +151,28 @@ func (c *Client) GetAccountNumberAndSequenceNumber(_ authz.KeyType) (uint64, uin
150151
return ctx.AccountRetriever.GetAccountNumberSequence(ctx, address)
151152
}
152153

153-
func (c *Client) SetAccountNumber(keyType authz.KeyType) {
154+
// SetAccountNumber sets the account number and sequence number for the given keyType
155+
func (c *Client) SetAccountNumber(keyType authz.KeyType) error {
154156
ctx, err := c.GetContext()
155157
if err != nil {
156-
c.logger.Error().Err(err).Msg("fail to get context")
157-
return
158+
return errors.Wrap(err, "fail to get context")
158159
}
159160
address, err := c.keys.GetAddress()
160161
if err != nil {
161-
c.logger.Error().Err(err).Msg("fail to get address")
162-
return
162+
return errors.Wrap(err, "fail to get address")
163163
}
164164
accN, seq, err := ctx.AccountRetriever.GetAccountNumberSequence(ctx, address)
165165
if err != nil {
166-
c.logger.Error().Err(err).Msg("fail to get account number and sequence number")
167-
return
166+
return errors.Wrap(err, "fail to get account number and sequence number")
168167
}
169168
c.accountNumber[keyType] = accN
170169
c.seqNumber[keyType] = seq
170+
171+
return nil
171172
}
172173

173-
// WaitForZetacoreToCreateBlocks returns true if zetacore is ready to create blocks
174-
func (c *Client) WaitForZetacoreToCreateBlocks() bool {
174+
// WaitForZetacoreToCreateBlocks waits for zetacore to create blocks
175+
func (c *Client) WaitForZetacoreToCreateBlocks() error {
175176
retryCount := 0
176177
for {
177178
block, err := c.GetLatestZetaBlock()
@@ -182,12 +183,11 @@ func (c *Client) WaitForZetacoreToCreateBlocks() bool {
182183
retryCount++
183184
c.logger.Debug().Msgf("Failed to get latest Block , Retry : %d/%d", retryCount, DefaultRetryCount)
184185
if retryCount > ExtendedRetryCount {
185-
c.logger.Error().Msgf("Zetacore is not ready, waited for %d seconds", DefaultRetryCount*DefaultRetryInterval)
186-
return false
186+
return fmt.Errorf("zetacore is not ready, waited for %d seconds", DefaultRetryCount*DefaultRetryInterval)
187187
}
188188
time.Sleep(DefaultRetryInterval * time.Second)
189189
}
190-
return true
190+
return nil
191191
}
192192

193193
// UpdateZetacoreContext updates zetacore context

0 commit comments

Comments
 (0)