From 18195355d53d76f6b6cca1f045809bc51101475c Mon Sep 17 00:00:00 2001 From: Takeshi Yoneda Date: Mon, 3 Apr 2023 00:48:19 -0700 Subject: [PATCH] Fixes race in TestModuleInstance_CloseModuleOnCanceledOrTimeout (#1339) Signed-off-by: Takeshi Yoneda --- internal/wasm/module_instance_test.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/internal/wasm/module_instance_test.go b/internal/wasm/module_instance_test.go index 022edc3f..420746db 100644 --- a/internal/wasm/module_instance_test.go +++ b/internal/wasm/module_instance_test.go @@ -6,6 +6,7 @@ import ( "fmt" "os" "sync" + "sync/atomic" "testing" "time" @@ -271,7 +272,7 @@ func TestModuleInstance_CloseModuleOnCanceledOrTimeout(t *testing.T) { defer done() // Resource shouldn't be released at this point. - require.Equal(t, exitCodeFlag(exitCodeFlagResourceNotClosed), cc.Closed&exitCodeFlagMask) + require.Equal(t, exitCodeFlag(exitCodeFlagResourceNotClosed), atomic.LoadUint64(&cc.Closed)&exitCodeFlagMask) require.NotNil(t, cc.Sys) err := cc.FailIfClosed() @@ -293,7 +294,7 @@ func TestModuleInstance_CloseModuleOnCanceledOrTimeout(t *testing.T) { time.Sleep(time.Second) // Resource shouldn't be released at this point. - require.Equal(t, exitCodeFlag(exitCodeFlagResourceNotClosed), cc.Closed&exitCodeFlagMask) + require.Equal(t, exitCodeFlag(exitCodeFlagResourceNotClosed), atomic.LoadUint64(&cc.Closed)&exitCodeFlagMask) require.NotNil(t, cc.Sys) err := cc.FailIfClosed() @@ -316,7 +317,7 @@ func TestModuleInstance_CloseModuleOnCanceledOrTimeout(t *testing.T) { defer done() // Resource shouldn't be released at this point. - require.Equal(t, exitCodeFlag(exitCodeFlagResourceNotClosed), cc.Closed&exitCodeFlagMask) + require.Equal(t, exitCodeFlag(exitCodeFlagResourceNotClosed), atomic.LoadUint64(&cc.Closed)&exitCodeFlagMask) require.NotNil(t, cc.Sys) err := cc.FailIfClosed() @@ -341,7 +342,7 @@ func TestModuleInstance_CloseModuleOnCanceledOrTimeout(t *testing.T) { time.Sleep(time.Second) // Resource shouldn't be released at this point. - require.Equal(t, exitCodeFlag(exitCodeFlagResourceNotClosed), cc.Closed&exitCodeFlagMask) + require.Equal(t, exitCodeFlag(exitCodeFlagResourceNotClosed), atomic.LoadUint64(&cc.Closed)&exitCodeFlagMask) require.NotNil(t, cc.Sys) err := cc.FailIfClosed()