Skip to content

Commit 313c163

Browse files
Fix trace pending txns
Co-authored-by: IronGauntlets <[email protected]>
1 parent d3ff578 commit 313c163

File tree

2 files changed

+23
-8
lines changed

2 files changed

+23
-8
lines changed

rpc/trace.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/NethermindEth/juno/blockchain"
1212
"github.com/NethermindEth/juno/core"
1313
"github.com/NethermindEth/juno/core/felt"
14+
"github.com/NethermindEth/juno/db"
1415
"github.com/NethermindEth/juno/jsonrpc"
1516
"github.com/NethermindEth/juno/starknet"
1617
"github.com/NethermindEth/juno/sync"
@@ -141,7 +142,7 @@ func (h *Handler) traceTransaction(ctx context.Context, hash *felt.Felt) (*vm.Tr
141142
httpHeader := http.Header{}
142143
httpHeader.Set(ExecutionStepsHeader, "0")
143144

144-
if err != nil {
145+
if err != nil && !errors.Is(err, db.ErrKeyNotFound) {
145146
return nil, httpHeader, ErrTxnHashNotFound
146147
}
147148

rpc/trace_test.go

+21-7
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,28 @@ func TestTraceTransaction(t *testing.T) {
8686
handler := rpc.New(mockReader, mockSyncReader, mockVM, "", utils.NewNopZapLogger())
8787

8888
t.Run("not found", func(t *testing.T) {
89-
hash := utils.HexToFelt(t, "0xBBBB")
90-
// Receipt() returns error related to db
91-
mockReader.EXPECT().Receipt(hash).Return(nil, nil, uint64(0), db.ErrKeyNotFound)
89+
t.Run("key not found", func(t *testing.T) {
90+
hash := utils.HexToFelt(t, "0xBBBB")
91+
// Receipt() returns error related to db
92+
mockReader.EXPECT().Receipt(hash).Return(nil, nil, uint64(0), db.ErrKeyNotFound)
93+
mockSyncReader.EXPECT().Pending().Return(&sync.Pending{Block: &core.Block{}}, nil)
94+
95+
trace, httpHeader, err := handler.TraceTransaction(context.Background(), *hash)
96+
assert.Nil(t, trace)
97+
assert.Equal(t, rpc.ErrTxnHashNotFound, err)
98+
assert.Equal(t, httpHeader.Get(rpc.ExecutionStepsHeader), "0")
99+
})
92100

93-
trace, httpHeader, err := handler.TraceTransaction(context.Background(), *hash)
94-
assert.Nil(t, trace)
95-
assert.Equal(t, rpc.ErrTxnHashNotFound, err)
96-
assert.Equal(t, httpHeader.Get(rpc.ExecutionStepsHeader), "0")
101+
t.Run("other error", func(t *testing.T) {
102+
hash := utils.HexToFelt(t, "0xBBBB")
103+
// Receipt() returns some other error
104+
mockReader.EXPECT().Receipt(hash).Return(nil, nil, uint64(0), errors.New("database error"))
105+
106+
trace, httpHeader, err := handler.TraceTransaction(context.Background(), *hash)
107+
assert.Nil(t, trace)
108+
assert.Equal(t, rpc.ErrTxnHashNotFound, err)
109+
assert.Equal(t, httpHeader.Get(rpc.ExecutionStepsHeader), "0")
110+
})
97111
})
98112
t.Run("ok", func(t *testing.T) {
99113
hash := utils.HexToFelt(t, "0x37b244ea7dc6b3f9735fba02d183ef0d6807a572dd91a63cc1b14b923c1ac0")

0 commit comments

Comments
 (0)