Skip to content

Commit

Permalink
various perf fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
tudor-malene committed Jan 19, 2024
1 parent aa57c0c commit 0098052
Show file tree
Hide file tree
Showing 10 changed files with 146 additions and 169 deletions.
8 changes: 6 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@ replace github.com/docker/docker => github.com/docker/docker v20.10.3-0.20220224
require (
github.com/allegro/bigcache/v3 v3.1.0
github.com/andybalholm/brotli v1.0.5
github.com/dgraph-io/ristretto v0.1.1
github.com/docker/docker v1.6.2
github.com/docker/go-connections v0.4.0
github.com/edgelesssys/ego v1.1.0
github.com/eko/gocache/lib/v4 v4.1.2
github.com/eko/gocache/store/bigcache/v4 v4.1.2
github.com/eko/gocache/lib/v4 v4.1.5
github.com/eko/gocache/store/bigcache/v4 v4.2.1
github.com/eko/gocache/store/ristretto/v4 v4.2.1
github.com/ethereum/go-ethereum v1.12.2
github.com/gin-contrib/cors v1.4.0
github.com/gin-gonic/gin v1.9.1
Expand Down Expand Up @@ -65,6 +67,7 @@ require (
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
github.com/docker/distribution v2.8.1+incompatible // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/dustin/go-humanize v1.0.0 // indirect
github.com/ethereum/c-kzg-4844 v0.3.1 // indirect
github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
Expand All @@ -82,6 +85,7 @@ require (
github.com/gofrs/flock v0.8.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v4 v4.3.0 // indirect
github.com/golang/glog v1.0.0 // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
Expand Down
17 changes: 13 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,10 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etly
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218=
github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4=
github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8=
github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA=
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68=
github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
Expand All @@ -140,6 +143,7 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
Expand All @@ -148,10 +152,12 @@ github.com/edgelesssys/ego v1.1.0 h1:UcDiGGJ8PF8YStlticxi2hMgPqRTtP42FzaGaAxm9Ys
github.com/edgelesssys/ego v1.1.0/go.mod h1:ex4cDvgi0l6wxDm5xBaQzJqi547FMPDsxv+3ERLJfLI=
github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM=
github.com/eko/gocache/lib/v4 v4.1.2 h1:cX54GhJJsfc5jvCEaPW8595h9Pq6bbNfkv0o/669Tw4=
github.com/eko/gocache/lib/v4 v4.1.2/go.mod h1:FqyrANKct257VFHVVs11m6V2syGobOmHycQCyRSMwu0=
github.com/eko/gocache/store/bigcache/v4 v4.1.2 h1:8uMDpgxTG7BvyLHBFqL3Ao809bVrXfrWqo7v6ALiwTw=
github.com/eko/gocache/store/bigcache/v4 v4.1.2/go.mod h1:Lut5Sk/yI835w02tmwx4ecezYQo445L5sdICsk1zgho=
github.com/eko/gocache/lib/v4 v4.1.5 h1:CeMQmdIzwBKKLRjk3FCDXzNFsQTyqJ01JLI7Ib0C9r8=
github.com/eko/gocache/lib/v4 v4.1.5/go.mod h1:XaNfCwW8KYW1bRZ/KoHA1TugnnkMz0/gT51NDIu7LSY=
github.com/eko/gocache/store/bigcache/v4 v4.2.1 h1:xf9R5HZqmrfT4+NzlJPQJQUWftfWW06FHbjz4IEjE08=
github.com/eko/gocache/store/bigcache/v4 v4.2.1/go.mod h1:Q9+hxUE+XUVGSRGP1tqW8sPHcZ50PfyBVh9VKh0OjrA=
github.com/eko/gocache/store/ristretto/v4 v4.2.1 h1:xB5E1LP1gh8yUV1G3KVRSL4T0OTnxp4OixuTljn2848=
github.com/eko/gocache/store/ristretto/v4 v4.2.1/go.mod h1:KyshDyWQqfSVrg2rH06fFQZTj6vG2fxlY7oAW9oxNHY=
github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
Expand Down Expand Up @@ -245,6 +251,8 @@ github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzq
github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog=
github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ=
github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
Expand Down Expand Up @@ -799,6 +807,7 @@ golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
Expand Down
31 changes: 31 additions & 0 deletions go/common/cache_util.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package common

import (
"context"

"github.com/eko/gocache/lib/v4/cache"
gethlog "github.com/ethereum/go-ethereum/log"
"github.com/ten-protocol/go-ten/go/common/log"
)

func GetCachedValue[V any](cache *cache.Cache[V], logger gethlog.Logger, key any, onFailed func(any) (V, error)) (V, error) {
value, err := cache.Get(context.Background(), key)
if err != nil {
// todo metrics for cache misses
b, err := onFailed(key)
if err != nil {
return b, err
}
CacheValue(cache, logger, key, b)
return b, err
}

return value, err
}

func CacheValue[V any](cache *cache.Cache[V], logger gethlog.Logger, key any, v V) {
err := cache.Set(context.Background(), key, v)
if err != nil {
logger.Error("Could not store value in cache", log.ErrKey, err)
}
}
130 changes: 53 additions & 77 deletions go/common/gethencoding/geth_encoding.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package gethencoding

import (
"context"
"encoding/json"
"fmt"
"math/big"
Expand All @@ -10,11 +9,10 @@ import (
"time"
"unsafe"

"github.com/ethereum/go-ethereum/rlp"

"github.com/allegro/bigcache/v3"
"github.com/dgraph-io/ristretto"
"github.com/eko/gocache/lib/v4/cache"
bigcache_store "github.com/eko/gocache/store/bigcache/v4"
ristretto_store "github.com/eko/gocache/store/ristretto/v4"

gethlog "github.com/ethereum/go-ethereum/log"
"github.com/ten-protocol/go-ten/go/common/log"
"github.com/ten-protocol/go-ten/go/enclave/storage"
Expand Down Expand Up @@ -52,7 +50,7 @@ type EncodingService interface {
}

type gethEncodingServiceImpl struct {
convertedCache *cache.Cache[[]byte]
convertedCache *cache.Cache[*types.Header]

// small converted cache
storage storage.Storage
Expand All @@ -61,19 +59,18 @@ type gethEncodingServiceImpl struct {

func NewGethEncodingService(storage storage.Storage, logger gethlog.Logger) EncodingService {
// todo (tudor) figure out the context and the config
cfg := bigcache.DefaultConfig(2 * time.Minute)
cfg.Shards = 512
// 1GB cache. Max value in a shard is 2MB. No batch or block should be larger than that
cfg.HardMaxCacheSize = cfg.Shards * 4
bigcacheClient, err := bigcache.New(context.Background(), cfg)
ristrettoCache, err := ristretto.NewCache(&ristretto.Config{
NumCounters: 1000, // number of keys to track frequency of 100.
MaxCost: 1 << 28, // maximum cost of cache (256MB).
BufferItems: 64, // number of keys per Get buffer.
})
if err != nil {
logger.Crit("Could not initialise bigcache", log.ErrKey, err)
panic(err)
}

bigcacheStore := bigcache_store.NewBigcache(bigcacheClient)
ristrettoStore := ristretto_store.NewRistretto(ristrettoCache)

return &gethEncodingServiceImpl{
convertedCache: cache.New[[]byte](bigcacheStore),
convertedCache: cache.New[*types.Header](ristrettoStore),
storage: storage,
logger: logger,
}
Expand Down Expand Up @@ -275,75 +272,54 @@ func ExtractEthCall(param interface{}) (*gethapi.TransactionArgs, error) {
// CreateEthHeaderForBatch - the EVM requires an Ethereum "block" header.
// In this function we are creating one from the Batch Header
func (enc *gethEncodingServiceImpl) CreateEthHeaderForBatch(h *common.BatchHeader) (*types.Header, error) {
// todo - cache only when there is some "final" arg
value, err := enc.convertedCache.Get(context.Background(), h.Hash())
if err == nil {
v := new(types.Header)
err = rlp.DecodeBytes(value, v)
return common.GetCachedValue(enc.convertedCache, enc.logger, h.Hash(), func(a any) (*types.Header, error) {
// deterministically calculate the private randomness that will be exposed to the evm
secret, err := enc.storage.FetchSecret()
if err != nil {
enc.logger.Error("Failed reading from the cache", log.ErrKey, err)
enc.logger.Crit("Could not fetch shared secret. Exiting.", log.ErrKey, err)
}
return v, err
}
randomness := crypto.CalculateRootBatchEntropy(secret[:], h.Number)

// deterministically calculate the private randomness that will be exposed to the evm
secret, err := enc.storage.FetchSecret()
if err != nil {
enc.logger.Crit("Could not fetch shared secret. Exiting.", log.ErrKey, err)
}
randomness := crypto.CalculateRootBatchEntropy(secret[:], h.Number)
// calculate the converted hash of the parent, for a correct converted chain
convertedParentHash := gethcommon.Hash{}

// calculate the converted hash of the parent, for a correct converted chain
convertedParentHash := gethcommon.Hash{}

// handle genesis
if h.SequencerOrderNo.Uint64() > common.L2GenesisSeqNo {
convertedParentHash, err = enc.storage.FetchConvertedHash(h.ParentHash)
if err != nil {
enc.logger.Error("Cannot find the converted value for the parent of", log.BatchSeqNoKey, h.SequencerOrderNo)
return nil, err
// handle genesis
if h.SequencerOrderNo.Uint64() > common.L2GenesisSeqNo {
convertedParentHash, err = enc.storage.FetchConvertedHash(h.ParentHash)
if err != nil {
enc.logger.Error("Cannot find the converted value for the parent of", log.BatchSeqNoKey, h.SequencerOrderNo)
return nil, err
}
}
}

baseFee := uint64(0)
if h.BaseFee != nil {
baseFee = h.BaseFee.Uint64()
}

gethHeader := types.Header{
ParentHash: convertedParentHash,
UncleHash: gethcommon.Hash{},
Root: h.Root,
TxHash: h.TxHash,
ReceiptHash: h.ReceiptHash,
Difficulty: big.NewInt(0),
Number: h.Number,
GasLimit: h.GasLimit,
GasUsed: h.GasUsed,
BaseFee: big.NewInt(0).SetUint64(baseFee),
Coinbase: h.Coinbase,
Time: h.Time,
MixDigest: randomness,
Nonce: types.BlockNonce{},
Extra: h.SequencerOrderNo.Bytes(),
WithdrawalsHash: nil,
BlobGasUsed: nil,
ExcessBlobGas: nil,
Bloom: types.Bloom{},
}

// cache value
encoded, err := rlp.EncodeToBytes(&gethHeader)
if err != nil {
enc.logger.Error("Could not encode value to store in cache", log.ErrKey, err)
return nil, err
}
err = enc.convertedCache.Set(context.Background(), h.Hash(), encoded)
if err != nil {
enc.logger.Error("Could not store value in cache", log.ErrKey, err)
}
baseFee := uint64(0)
if h.BaseFee != nil {
baseFee = h.BaseFee.Uint64()
}

return &gethHeader, nil
gethHeader := types.Header{
ParentHash: convertedParentHash,
UncleHash: gethcommon.Hash{},
Root: h.Root,
TxHash: h.TxHash,
ReceiptHash: h.ReceiptHash,
Difficulty: big.NewInt(0),
Number: h.Number,
GasLimit: h.GasLimit,
GasUsed: h.GasUsed,
BaseFee: big.NewInt(0).SetUint64(baseFee),
Coinbase: h.Coinbase,
Time: h.Time,
MixDigest: randomness,
Nonce: types.BlockNonce{},
Extra: h.SequencerOrderNo.Bytes(),
WithdrawalsHash: nil,
BlobGasUsed: nil,
ExcessBlobGas: nil,
Bloom: types.Bloom{},
}
return &gethHeader, nil
})
}

// this type is needed for accessing the internals
Expand Down
4 changes: 2 additions & 2 deletions go/enclave/crosschain/block_message_extractor.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ func (m *blockMessageExtractor) StoreCrossChainValueTransfers(block *common.L1Bl
return nil
}

m.logger.Trace(fmt.Sprintf("Storing %d value transfers for block", len(transfers)), log.BlockHashKey, block.Hash())
m.logger.Trace("Storing value transfers for block", "nr", len(transfers), log.BlockHashKey, block.Hash())
err = m.storage.StoreValueTransfers(block.Hash(), transfers)
if err != nil {
m.logger.Crit("Unable to store the transfers", log.ErrKey, err)
Expand All @@ -82,7 +82,7 @@ func (m *blockMessageExtractor) StoreCrossChainMessages(block *common.L1Block, r
return nil
}

lazilyLogReceiptChecksum(fmt.Sprintf("Processing block: %s receipts: %d", block.Hash(), len(receipts)), receipts, m.logger)
lazilyLogReceiptChecksum(block, receipts, m.logger)
messages, err := m.getCrossChainMessages(block, receipts)
if err != nil {
m.logger.Error("Converting receipts to messages failed.", log.ErrKey, err)
Expand Down
6 changes: 4 additions & 2 deletions go/enclave/crosschain/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"errors"
"strings"

"github.com/ten-protocol/go-ten/go/common/log"

"github.com/ethereum/go-ethereum/accounts/abi"
gethcommon "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
Expand All @@ -23,8 +25,8 @@ var (
ValueTransferEventID = MessageBusABI.Events["ValueTransfer"].ID
)

func lazilyLogReceiptChecksum(msg string, receipts types.Receipts, logger gethlog.Logger) {
logger.Trace(msg, "Hash",
func lazilyLogReceiptChecksum(block *common.L1Block, receipts types.Receipts, logger gethlog.Logger) {
logger.Trace("Processing block", log.BlockHashKey, block.Hash(), "nr_rec", len(receipts), "Hash",
gethlog.Lazy{Fn: func() string {
hasher := sha3.NewLegacyKeccak256().(crypto.KeccakState)
hasher.Reset()
Expand Down
14 changes: 8 additions & 6 deletions go/enclave/events/subscription_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"math/big"
"sync"

"github.com/ten-protocol/go-ten/go/common/log"

"github.com/ten-protocol/go-ten/go/enclave/core"

"github.com/ten-protocol/go-ten/go/enclave/storage"
Expand Down Expand Up @@ -153,7 +155,7 @@ func (s *SubscriptionManager) GetSubscribedLogsForBatch(batch *core.Batch, recei
if relevant {
relevantLogsForSub = append(relevantLogsForSub, logItem)
}
s.logger.Debug(fmt.Sprintf("Subscription %s. Account %s. Log %v. Extracted addresses: %v. Relevant: %t", id, sub.Account, logItem, userAddrs, relevant))
s.logger.Debug("Subscription", log.SubIDKey, id, "acc", sub.Account, "log", logItem, "extr_addr", userAddrs, "relev", relevant)
}
if len(relevantLogsForSub) > 0 {
relevantLogsPerSubscription[id] = relevantLogsForSub
Expand Down Expand Up @@ -239,21 +241,21 @@ func filterLogs(logs []*types.Log, fromBlock, toBlock *big.Int, addresses []geth
Logs:
for _, logItem := range logs {
if fromBlock != nil && fromBlock.Int64() >= 0 && fromBlock.Uint64() > logItem.BlockNumber {
logger.Debug(fmt.Sprintf("Skipping log = %v", logItem), "reason", "In the past. The starting block num for filter is bigger than log")
logger.Debug("Skipping log ", "log", logItem, "reason", "In the past. The starting block num for filter is bigger than log")
continue
}
if toBlock != nil && toBlock.Int64() > 0 && toBlock.Uint64() < logItem.BlockNumber {
logger.Debug(fmt.Sprintf("Skipping log = %v", logItem), "reason", "In the future. The ending block num for filter is smaller than log")
logger.Debug("Skipping log ", "log", logItem, "reason", "In the future. The ending block num for filter is smaller than log")
continue
}

if len(addresses) > 0 && !includes(addresses, logItem.Address) {
logger.Debug(fmt.Sprintf("Skipping log = %v", logItem), "reason", "The contract address of the log is not an address of interest")
logger.Debug("Skipping log ", "log", logItem, "reason", "The contract address of the log is not an address of interest")
continue
}
// If the to filtered topics is greater than the amount of topics in logs, skip.
if len(topics) > len(logItem.Topics) {
logger.Debug(fmt.Sprintf("Skipping log = %v", logItem), "reason", "Insufficient topics. The log has less topics than the required one to satisfy the query")
logger.Debug("Skipping log ", "log", logItem, "reason", "Insufficient topics. The log has less topics than the required one to satisfy the query")
continue
}
for i, sub := range topics {
Expand All @@ -265,7 +267,7 @@ Logs:
}
}
if !match {
logger.Debug(fmt.Sprintf("Skipping log = %v", logItem), "reason", "Topics do not match.")
logger.Debug("Skipping log ", "log", logItem, "reason", "Topics do not match.")
continue Logs
}
}
Expand Down
Loading

0 comments on commit 0098052

Please sign in to comment.