Skip to content

Commit

Permalink
log RLP decoding error (#1633)
Browse files Browse the repository at this point in the history
* log RLP decoding error

* log RLP decoding error
  • Loading branch information
ToniRamirezM committed Feb 6, 2023
1 parent 74f1204 commit 364a76a
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 11 deletions.
27 changes: 22 additions & 5 deletions state/converters.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package state

import (
"context"
"fmt"
"math/big"
"time"

"github.com/0xPolygonHermez/zkevm-node/encoding"
"github.com/0xPolygonHermez/zkevm-node/hex"
Expand All @@ -16,12 +18,12 @@ import (
)

// TestConvertToProcessBatchResponse for test purposes
func TestConvertToProcessBatchResponse(txs []types.Transaction, response *pb.ProcessBatchResponse) (*ProcessBatchResponse, error) {
return convertToProcessBatchResponse(txs, response)
func (s *State) TestConvertToProcessBatchResponse(txs []types.Transaction, response *pb.ProcessBatchResponse) (*ProcessBatchResponse, error) {
return s.convertToProcessBatchResponse(txs, response)
}

func convertToProcessBatchResponse(txs []types.Transaction, response *pb.ProcessBatchResponse) (*ProcessBatchResponse, error) {
responses, err := convertToProcessTransactionResponse(txs, response.Responses)
func (s *State) convertToProcessBatchResponse(txs []types.Transaction, response *pb.ProcessBatchResponse) (*ProcessBatchResponse, error) {
responses, err := s.convertToProcessTransactionResponse(txs, response.Responses)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -90,7 +92,7 @@ func convertToReadWriteAddresses(addresses map[string]*pb.InfoReadWrite) ([]*Inf
return results, nil
}

func convertToProcessTransactionResponse(txs []types.Transaction, responses []*pb.ProcessTransactionResponse) ([]*ProcessTransactionResponse, error) {
func (s *State) convertToProcessTransactionResponse(txs []types.Transaction, responses []*pb.ProcessTransactionResponse) ([]*ProcessTransactionResponse, error) {
results := make([]*ProcessTransactionResponse, 0, len(responses))
for i, response := range responses {
trace, err := convertToStructLogArray(response.ExecutionTrace)
Expand All @@ -114,6 +116,21 @@ func convertToProcessTransactionResponse(txs []types.Transaction, responses []*p
result.CallTrace = convertToExecutorTrace(response.CallTrace)
result.Tx = txs[i]

_, err = DecodeTx(common.Bytes2Hex(response.GetRlpTx()))
if err != nil {
timestamp := time.Now()
log.Errorf("error decoding rlp returned by executor %v at %v", err, timestamp)
debugInfo := &DebugInfo{
ErrorType: DebugInfoErrorType_EXECUTOR_RLP_ERROR,
Timestamp: timestamp,
Payload: string(response.GetRlpTx()),
}
err = s.AddDebugInfo(context.Background(), debugInfo, nil)
if err != nil {
log.Errorf("error storing payload: %v", err)
}
}

results = append(results, result)

log.Debugf("ProcessTransactionResponse[TxHash]: %v", txs[i].Hash().String())
Expand Down
8 changes: 4 additions & 4 deletions state/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,7 @@ func (s *State) ProcessSequencerBatch(ctx context.Context, batchNumber uint64, t
if err != nil {
return nil, err
}
result, err := convertToProcessBatchResponse(txs, processBatchResponse)
result, err := s.convertToProcessBatchResponse(txs, processBatchResponse)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -741,7 +741,7 @@ func (s *State) ProcessAndStoreClosedBatch(ctx context.Context, processingCtx Pr
}
}

processedBatch, err := convertToProcessBatchResponse(decodedTransactions, processed)
processedBatch, err := s.convertToProcessBatchResponse(decodedTransactions, processed)
if err != nil {
return err
}
Expand Down Expand Up @@ -850,7 +850,7 @@ func (s *State) DebugTransaction(ctx context.Context, transactionHash common.Has
log.Debugf(tx.Hash().String())
}

convertedResponse, err := convertToProcessBatchResponse(txs, processBatchResponse)
convertedResponse, err := s.convertToProcessBatchResponse(txs, processBatchResponse)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -1143,7 +1143,7 @@ func (s *State) ProcessUnsignedTransaction(ctx context.Context, tx *types.Transa
result.Err = err
return result
}
response, err := convertToProcessBatchResponse([]types.Transaction{*tx}, processBatchResponse)
response, err := s.convertToProcessBatchResponse([]types.Transaction{*tx}, processBatchResponse)
if err != nil {
result.Err = err
return result
Expand Down
4 changes: 2 additions & 2 deletions state/state_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2028,7 +2028,7 @@ func TestExecutorEstimateGas(t *testing.T) {
require.NoError(t, err)
assert.NotEqual(t, "", processBatchResponse.Responses[0].Error)

convertedResponse, err := state.TestConvertToProcessBatchResponse([]types.Transaction{*signedTx0, *signedTx1}, processBatchResponse)
convertedResponse, err := testState.TestConvertToProcessBatchResponse([]types.Transaction{*signedTx0, *signedTx1}, processBatchResponse)
require.NoError(t, err)
log.Debugf("%v", len(convertedResponse.Responses))

Expand Down Expand Up @@ -2393,7 +2393,7 @@ func TestExecutorGasEstimationMultisig(t *testing.T) {
require.Equal(t, uint64(1000000000), balance.Uint64())

// Preparation to be able to estimate gas
convertedResponse, err := state.TestConvertToProcessBatchResponse(transactions, processBatchResponse)
convertedResponse, err := testState.TestConvertToProcessBatchResponse(transactions, processBatchResponse)
require.NoError(t, err)
log.Debugf("%v", len(convertedResponse.Responses))

Expand Down
2 changes: 2 additions & 0 deletions state/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ type InfoReadWrite struct {
const (
// DebugInfoErrorType_EXECUTOR_ERROR indicates a error happened in the executor
DebugInfoErrorType_EXECUTOR_ERROR = "EXECUTOR ERROR"
// DebugInfoErrorType_EXECUTOR_RLP_ERROR indicates a error happened decoding the RLP returned by the executor
DebugInfoErrorType_EXECUTOR_RLP_ERROR = "EXECUTOR RLP ERROR"
)

// DebugInfo allows handling runtime debug info
Expand Down

0 comments on commit 364a76a

Please sign in to comment.