@@ -19,6 +19,7 @@ import (
1919 "github.com/ava-labs/avalanchego/snow/engine/enginetest"
2020 "github.com/ava-labs/avalanchego/snow/engine/snowman/block"
2121 "github.com/ava-labs/avalanchego/upgrade/upgradetest"
22+ "github.com/ava-labs/avalanchego/utils"
2223 "github.com/ava-labs/avalanchego/utils/set"
2324 "github.com/ava-labs/avalanchego/vms/evm/database"
2425 "github.com/ava-labs/avalanchego/vms/evm/predicate"
@@ -104,7 +105,7 @@ func TestStateSyncToggleEnabledToDisabled(t *testing.T) {
104105 require .NoError (t , syncerVM .AppRequestFailed (t .Context (), nodeID , requestID , commonEng .ErrTimeout ))
105106 require .NoError (t , syncerVM .Client .Shutdown ())
106107 } else {
107- syncerVM .AppResponse (t .Context (), nodeID , requestID , response )
108+ require . NoError ( t , syncerVM .AppResponse (t .Context (), nodeID , requestID , response ) )
108109 }
109110 },
110111 expectedErr : context .Canceled ,
@@ -118,13 +119,18 @@ func TestStateSyncToggleEnabledToDisabled(t *testing.T) {
118119 test .responseIntercept = nil
119120 test .expectedErr = nil
120121
122+ var atomicErr utils.Atomic [error ]
121123 syncDisabledVM := & VM {}
122124 appSender := & enginetest.Sender {T : t }
123125 appSender .SendAppGossipF = func (context.Context , commonEng.SendConfig , []byte ) error { return nil }
124126 appSender .SendAppRequestF = func (ctx context.Context , nodeSet set.Set [ids.NodeID ], requestID uint32 , request []byte ) error {
125127 nodeID , hasItem := nodeSet .Pop ()
126128 require .True (t , hasItem , "expected nodeSet to contain at least 1 nodeID" )
127- go vmSetup .serverVM .AppRequest (ctx , nodeID , requestID , time .Now ().Add (1 * time .Second ), request )
129+ go func () {
130+ if err := vmSetup .serverVM .AppRequest (ctx , nodeID , requestID , time .Now ().Add (1 * time .Second ), request ); err != nil {
131+ atomicErr .Set (err )
132+ }
133+ }()
128134 return nil
129135 }
130136 // Reset metrics to allow re-initialization
@@ -191,7 +197,11 @@ func TestStateSyncToggleEnabledToDisabled(t *testing.T) {
191197 // override [serverVM]'s SendAppResponse function to trigger AppResponse on [syncerVM]
192198 vmSetup .serverAppSender .SendAppResponseF = func (ctx context.Context , nodeID ids.NodeID , requestID uint32 , response []byte ) error {
193199 if test .responseIntercept == nil {
194- go syncReEnabledVM .AppResponse (ctx , nodeID , requestID , response )
200+ go func () {
201+ if err := syncReEnabledVM .AppResponse (ctx , nodeID , requestID , response ); err != nil {
202+ atomicErr .Set (err )
203+ }
204+ }()
195205 } else {
196206 go test .responseIntercept (syncReEnabledVM , nodeID , requestID , response )
197207 }
@@ -212,6 +222,7 @@ func TestStateSyncToggleEnabledToDisabled(t *testing.T) {
212222
213223 vmSetup .syncerVM = syncReEnabledVM
214224 testSyncerVM (t , vmSetup , test )
225+ require .NoError (t , atomicErr .Get ())
215226}
216227
217228func TestVMShutdownWhileSyncing (t * testing.T ) {
@@ -311,15 +322,23 @@ func createSyncServerAndClientVMs(t *testing.T, test syncTest, numBlocks int) *s
311322 require .True (enabled )
312323
313324 // override [serverVM]'s SendAppResponse function to trigger AppResponse on [syncerVM]
325+ var atomicErr utils.Atomic [error ]
314326 serverVM .appSender .SendAppResponseF = func (ctx context.Context , nodeID ids.NodeID , requestID uint32 , response []byte ) error {
315327 if test .responseIntercept == nil {
316- go syncerVM .vm .AppResponse (ctx , nodeID , requestID , response )
328+ go func () {
329+ if err := syncerVM .vm .AppResponse (ctx , nodeID , requestID , response ); err != nil {
330+ atomicErr .Set (err )
331+ }
332+ }()
317333 } else {
318334 go test .responseIntercept (syncerVM .vm , nodeID , requestID , response )
319335 }
320336
321337 return nil
322338 }
339+ t .Cleanup (func () {
340+ require .NoError (atomicErr .Get ())
341+ })
323342
324343 // connect peer to [syncerVM]
325344 require .NoError (
0 commit comments