Skip to content

Commit 138c970

Browse files
Enhance proposal task error handling in tbtcpg (#3862)
Modified pkg/tbtcpg/tbtcpg.go - Generate method Before: If any task's Run method returned an error, the entire proposal generation would fail and return that error. After: • If a task fails with an error, it logs the error with context (action name, wallet PKH, error details) • Continues to the next task in the checklist instead of returning • Only returns a NoopProposal if all tasks fail or complete without result • Never returns an error from Generate (always succeeds with either a proposal or Noop) Impact • Resilience: Proposal generation continues even if individual tasks fail • Better coordination: Leaders can still generate proposals (Noop or other actions) even when some tasks encounter errors • Improved debugging: Errors are logged with full context for investigation • No coordination failures: Proposal generation always succeeds, preventing leader routine failures that cause follower timeouts This ensures that coordination messages are always sent, preventing the "coordination message not received on time" errors you were seeing.
2 parents d04ce46 + d930d64 commit 138c970

5 files changed

Lines changed: 365 additions & 192 deletions

File tree

go.mod

Lines changed: 79 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,50 @@ require (
4141
github.com/jbenet/goprocess v0.1.4
4242
github.com/keep-network/keep-common v1.7.1-0.20240424094333-bd36cd25bb74
4343
github.com/libp2p/go-addr-util v0.2.0
44-
github.com/libp2p/go-libp2p v0.32.2
45-
github.com/libp2p/go-libp2p-kad-dht v0.25.2
46-
github.com/libp2p/go-libp2p-pubsub v0.10.0
44+
github.com/libp2p/go-libp2p v0.38.2
45+
github.com/libp2p/go-libp2p-kad-dht v0.29.0
46+
github.com/libp2p/go-libp2p-pubsub v0.13.0
4747
github.com/mitchellh/mapstructure v1.5.0
48-
github.com/multiformats/go-multiaddr v0.12.0
48+
github.com/multiformats/go-multiaddr v0.14.0
4949
github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7
5050
github.com/spf13/cobra v1.5.0
5151
github.com/spf13/pflag v1.0.5
5252
github.com/spf13/viper v1.12.0
53-
go.uber.org/zap v1.26.0
54-
golang.org/x/crypto v0.24.0
55-
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
56-
golang.org/x/sync v0.7.0
57-
golang.org/x/term v0.21.0
58-
google.golang.org/protobuf v1.33.0
53+
go.uber.org/zap v1.27.0
54+
golang.org/x/crypto v0.32.0
55+
golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8
56+
golang.org/x/sync v0.10.0
57+
golang.org/x/term v0.28.0
58+
google.golang.org/protobuf v1.36.3
5959
google.golang.org/protobuf/dev v0.0.0-00010101000000-000000000000
6060
)
6161

62+
require (
63+
github.com/davecgh/go-spew v1.1.1 // indirect
64+
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
65+
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
66+
github.com/pion/datachannel v1.5.10 // indirect
67+
github.com/pion/dtls/v2 v2.2.12 // indirect
68+
github.com/pion/ice/v2 v2.3.37 // indirect
69+
github.com/pion/interceptor v0.1.37 // indirect
70+
github.com/pion/logging v0.2.2 // indirect
71+
github.com/pion/mdns v0.0.12 // indirect
72+
github.com/pion/randutil v0.1.0 // indirect
73+
github.com/pion/rtcp v1.2.15 // indirect
74+
github.com/pion/rtp v1.8.10 // indirect
75+
github.com/pion/sctp v1.8.35 // indirect
76+
github.com/pion/sdp/v3 v3.0.9 // indirect
77+
github.com/pion/srtp/v2 v2.0.20 // indirect
78+
github.com/pion/stun v0.6.1 // indirect
79+
github.com/pion/transport/v2 v2.2.10 // indirect
80+
github.com/pion/transport/v3 v3.0.7 // indirect
81+
github.com/pion/turn/v2 v2.1.6 // indirect
82+
github.com/pion/webrtc/v3 v3.3.5 // indirect
83+
github.com/pmezard/go-difflib v1.0.0 // indirect
84+
github.com/stretchr/testify v1.11.1 // indirect
85+
github.com/wlynxg/anet v0.0.5 // indirect
86+
)
87+
6288
require (
6389
github.com/Microsoft/go-winio v0.6.1 // indirect
6490
github.com/StackExchange/wmi v1.2.1 // indirect
@@ -69,7 +95,7 @@ require (
6995
github.com/bits-and-blooms/bitset v1.10.0 // indirect
7096
github.com/btcsuite/btcd/btcutil v1.1.1 // indirect
7197
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f // indirect
72-
github.com/cespare/xxhash/v2 v2.2.0 // indirect
98+
github.com/cespare/xxhash/v2 v2.3.0 // indirect
7399
github.com/consensys/bavard v0.1.13 // indirect
74100
github.com/consensys/gnark-crypto v0.12.1 // indirect
75101
github.com/containerd/cgroups v1.1.0 // indirect
@@ -78,63 +104,60 @@ require (
78104
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
79105
github.com/deckarep/golang-set/v2 v2.1.0 // indirect
80106
github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0 // indirect
81-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
107+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
82108
github.com/deepmap/oapi-codegen v1.6.0 // indirect
83109
github.com/docker/go-units v0.5.0 // indirect
84-
github.com/elastic/gosigar v0.14.2 // indirect
110+
github.com/elastic/gosigar v0.14.3 // indirect
85111
github.com/ethereum/c-kzg-4844 v0.4.0 // indirect
86-
github.com/flynn/noise v1.0.0 // indirect
112+
github.com/flynn/noise v1.1.0 // indirect
87113
github.com/francoispqt/gojay v1.2.13 // indirect
88114
github.com/fsnotify/fsnotify v1.6.0 // indirect
89115
github.com/go-logr/logr v1.4.3 // indirect
90116
github.com/go-logr/stdr v1.2.2 // indirect
91117
github.com/go-ole/go-ole v1.3.0 // indirect
92-
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
93118
github.com/godbus/dbus/v5 v5.1.0 // indirect
94119
github.com/gogo/protobuf v1.3.2 // indirect
95-
github.com/golang/protobuf v1.5.3 // indirect
96120
github.com/google/gopacket v1.1.19 // indirect
97-
github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b // indirect
98-
github.com/google/uuid v1.3.1 // indirect
99-
github.com/gorilla/websocket v1.5.0 // indirect
121+
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect
122+
github.com/google/uuid v1.6.0 // indirect
123+
github.com/gorilla/websocket v1.5.3 // indirect
100124
github.com/hashicorp/errwrap v1.1.0 // indirect
101-
github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect
102-
github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect
125+
github.com/hashicorp/golang-lru v1.0.2 // indirect
126+
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
103127
github.com/hashicorp/hcl v1.0.0 // indirect
104128
github.com/holiman/uint256 v1.2.4 // indirect
105129
github.com/huin/goupnp v1.3.0 // indirect
106130
github.com/inconshreveable/mousetrap v1.0.0 // indirect
107131
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 // indirect
108-
github.com/ipfs/boxo v0.10.0 // indirect
109-
github.com/ipfs/go-cid v0.4.1 // indirect
132+
github.com/ipfs/boxo v0.27.2 // indirect
133+
github.com/ipfs/go-cid v0.5.0 // indirect
110134
github.com/ipfs/go-ipfs-addr v0.0.1 // indirect
111-
github.com/ipld/go-ipld-prime v0.20.0 // indirect
135+
github.com/ipld/go-ipld-prime v0.21.0 // indirect
112136
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
113137
github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
114138
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23 // indirect
115-
github.com/klauspost/compress v1.17.2 // indirect
116-
github.com/klauspost/cpuid/v2 v2.2.5 // indirect
139+
github.com/klauspost/compress v1.17.11 // indirect
140+
github.com/klauspost/cpuid/v2 v2.2.9 // indirect
117141
github.com/koron/go-ssdp v0.0.4 // indirect
118142
github.com/libp2p/go-buffer-pool v0.1.0 // indirect
119143
github.com/libp2p/go-cidranger v1.1.0 // indirect
120-
github.com/libp2p/go-flow-metrics v0.1.0 // indirect
121-
github.com/libp2p/go-libp2p-asn-util v0.3.0 // indirect
144+
github.com/libp2p/go-flow-metrics v0.2.0 // indirect
145+
github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect
122146
github.com/libp2p/go-libp2p-crypto v0.0.2 // indirect
123-
github.com/libp2p/go-libp2p-kbucket v0.6.3 // indirect
147+
github.com/libp2p/go-libp2p-kbucket v0.6.4 // indirect
124148
github.com/libp2p/go-libp2p-peer v0.1.1 // indirect
125-
github.com/libp2p/go-libp2p-record v0.2.0 // indirect
126-
github.com/libp2p/go-libp2p-routing-helpers v0.7.2 // indirect
149+
github.com/libp2p/go-libp2p-record v0.3.1 // indirect
150+
github.com/libp2p/go-libp2p-routing-helpers v0.7.4 // indirect
127151
github.com/libp2p/go-msgio v0.3.0 // indirect
128152
github.com/libp2p/go-nat v0.2.0 // indirect
129-
github.com/libp2p/go-netroute v0.2.1 // indirect
153+
github.com/libp2p/go-netroute v0.2.2 // indirect
130154
github.com/libp2p/go-reuseport v0.4.0 // indirect
131155
github.com/libp2p/go-yamux/v4 v4.0.1 // indirect
132156
github.com/magiconair/properties v1.8.6 // indirect
133157
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect
134158
github.com/mattn/go-isatty v0.0.20 // indirect
135159
github.com/mattn/go-runewidth v0.0.13 // indirect
136-
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
137-
github.com/miekg/dns v1.1.56 // indirect
160+
github.com/miekg/dns v1.1.62 // indirect
138161
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
139162
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
140163
github.com/minio/sha256-simd v1.0.1 // indirect
@@ -143,33 +166,32 @@ require (
143166
github.com/mr-tron/base58 v1.2.0 // indirect
144167
github.com/multiformats/go-base32 v0.1.0 // indirect
145168
github.com/multiformats/go-base36 v0.2.0 // indirect
146-
github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect
169+
github.com/multiformats/go-multiaddr-dns v0.4.1 // indirect
147170
github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect
148171
github.com/multiformats/go-multibase v0.2.0 // indirect
149172
github.com/multiformats/go-multicodec v0.9.0 // indirect
150173
github.com/multiformats/go-multihash v0.2.3 // indirect
151-
github.com/multiformats/go-multistream v0.5.0 // indirect
174+
github.com/multiformats/go-multistream v0.6.0 // indirect
152175
github.com/multiformats/go-varint v0.0.7 // indirect
153-
github.com/onsi/ginkgo/v2 v2.13.0 // indirect
154-
github.com/opencontainers/runtime-spec v1.1.0 // indirect
176+
github.com/onsi/ginkgo/v2 v2.22.0 // indirect
177+
github.com/opencontainers/runtime-spec v1.2.0 // indirect
155178
github.com/opentracing/opentracing-go v1.2.0 // indirect
156179
github.com/otiai10/primes v0.0.0-20180210170552-f6d2a1ba97c4 // indirect
157180
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
158181
github.com/pelletier/go-toml v1.9.5 // indirect
159182
github.com/pelletier/go-toml/v2 v2.0.9 // indirect
160183
github.com/pkg/errors v0.9.1 // indirect
161184
github.com/polydawn/refmt v0.89.0 // indirect
162-
github.com/prometheus/client_golang v1.16.0 // indirect
163-
github.com/prometheus/client_model v0.4.0 // indirect
164-
github.com/prometheus/common v0.44.0 // indirect
165-
github.com/prometheus/procfs v0.11.1 // indirect
166-
github.com/quic-go/qpack v0.4.0 // indirect
167-
github.com/quic-go/qtls-go1-20 v0.4.1 // indirect
168-
github.com/quic-go/quic-go v0.40.1 // indirect
169-
github.com/quic-go/webtransport-go v0.6.0 // indirect
185+
github.com/prometheus/client_golang v1.20.5 // indirect
186+
github.com/prometheus/client_model v0.6.1 // indirect
187+
github.com/prometheus/common v0.62.0 // indirect
188+
github.com/prometheus/procfs v0.15.1 // indirect
189+
github.com/quic-go/qpack v0.5.1 // indirect
190+
github.com/quic-go/quic-go v0.48.2 // indirect
191+
github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66 // indirect
170192
github.com/raulk/go-watchdog v1.3.0 // indirect
171193
github.com/rivo/uniseg v0.2.0 // indirect
172-
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect
194+
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible
173195
github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a // indirect
174196
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect
175197
github.com/spaolacci/murmur3 v1.1.0 // indirect
@@ -186,20 +208,20 @@ require (
186208
go.opentelemetry.io/otel v1.38.0 // indirect
187209
go.opentelemetry.io/otel/metric v1.38.0 // indirect
188210
go.opentelemetry.io/otel/trace v1.38.0 // indirect
189-
go.uber.org/dig v1.17.1 // indirect
190-
go.uber.org/fx v1.20.1 // indirect
191-
go.uber.org/mock v0.4.0 // indirect
211+
go.uber.org/dig v1.18.0 // indirect
212+
go.uber.org/fx v1.23.0 // indirect
213+
go.uber.org/mock v0.5.0 // indirect
192214
go.uber.org/multierr v1.11.0 // indirect
193-
golang.org/x/mod v0.18.0 // indirect
194-
golang.org/x/net v0.26.0 // indirect
195-
golang.org/x/sys v0.21.0 // indirect
196-
golang.org/x/text v0.16.0 // indirect
215+
golang.org/x/mod v0.22.0 // indirect
216+
golang.org/x/net v0.34.0 // indirect
217+
golang.org/x/sys v0.29.0 // indirect
218+
golang.org/x/text v0.21.0 // indirect
197219
golang.org/x/time v0.5.0 // indirect
198-
golang.org/x/tools v0.22.0 // indirect
199-
gonum.org/v1/gonum v0.13.0 // indirect
220+
golang.org/x/tools v0.29.0 // indirect
221+
gonum.org/v1/gonum v0.15.1 // indirect
200222
gopkg.in/ini.v1 v1.67.0 // indirect
201223
gopkg.in/yaml.v2 v2.4.0 // indirect
202224
gopkg.in/yaml.v3 v3.0.1 // indirect
203-
lukechampine.com/blake3 v1.2.1 // indirect
225+
lukechampine.com/blake3 v1.3.0 // indirect
204226
rsc.io/tmplfunc v0.0.3 // indirect
205227
)

0 commit comments

Comments
 (0)