Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <psteinhardt@gitlab.com>2021-09-21 13:55:42 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2021-09-21 13:55:42 +0300
commit10a77e97a1392ecb76eb6148d1ce45f3d5b87cbd (patch)
treee8a413a45b7542126a49b73059790da62e101cdf
parent858ab5adcc2996f16e958160f3f31fe519300bc8 (diff)
parent80312c4166c2f65b8f3e357b6ecf131023f8d324 (diff)
Merge branch 'ps-fix-data-race-in-test' into 'master'
test: Fix data race on the votes counter See merge request gitlab-org/gitaly!3897
-rw-r--r--internal/gitaly/service/repository/replicate_test.go15
1 files changed, 8 insertions, 7 deletions
diff --git a/internal/gitaly/service/repository/replicate_test.go b/internal/gitaly/service/repository/replicate_test.go
index 5c07ccb11..9ec61609a 100644
--- a/internal/gitaly/service/repository/replicate_test.go
+++ b/internal/gitaly/service/repository/replicate_test.go
@@ -5,6 +5,7 @@ import (
"context"
"os"
"path/filepath"
+ "sync/atomic"
"testing"
"github.com/stretchr/testify/require"
@@ -118,10 +119,10 @@ func testReplicateRepositoryTransactional(t *testing.T, ctx context.Context) {
targetRepo := proto.Clone(sourceRepo).(*gitalypb.Repository)
targetRepo.StorageName = cfg.Storages[1].Name
- votes := 0
+ votes := int32(0)
txServer := testTransactionServer{
vote: func(request *gitalypb.VoteTransactionRequest) (*gitalypb.VoteTransactionResponse, error) {
- votes++
+ atomic.AddInt32(&votes, 1)
return &gitalypb.VoteTransactionResponse{
State: gitalypb.VoteTransactionResponse_COMMIT,
}, nil
@@ -151,16 +152,16 @@ func testReplicateRepositoryTransactional(t *testing.T, ctx context.Context) {
require.NoError(t, err)
if featureflag.TxExtendedFileLocking.IsEnabled(ctx) {
- require.Equal(t, 5, votes)
+ require.EqualValues(t, 5, atomic.LoadInt32(&votes))
} else {
- require.Equal(t, 1, votes)
+ require.EqualValues(t, 1, atomic.LoadInt32(&votes))
}
// We're now changing a reference in the source repository such that we can observe changes
// in the target repo.
gittest.Exec(t, cfg, "-C", sourceRepoPath, "update-ref", "refs/heads/master", "refs/heads/master~")
- votes = 0
+ atomic.StoreInt32(&votes, 0)
// And the second invocation uses FetchInternalRemote.
_, err = client.ReplicateRepository(ctx, &gitalypb.ReplicateRepositoryRequest{
@@ -170,9 +171,9 @@ func testReplicateRepositoryTransactional(t *testing.T, ctx context.Context) {
require.NoError(t, err)
if featureflag.TxExtendedFileLocking.IsEnabled(ctx) {
- require.Equal(t, 6, votes)
+ require.EqualValues(t, 6, atomic.LoadInt32(&votes))
} else {
- require.Equal(t, 2, votes)
+ require.EqualValues(t, 2, atomic.LoadInt32(&votes))
}
}