Klaus Post
ad511b0eb8
tests: Fix occasional data race ( #11223 )
...
CI tests could trigger a data race.
Servers are generally not expected to reinitialize, so tests could trigger data races when reinitializing and async operations are running.
We add the option to safely reset global vars instead of overwriting.
Fixes races like:
```
WARNING: DATA RACE
Read at 0x00000477ab18 by goroutine 1159:
github.com/minio/minio/cmd.FileInfo.ToObjectInfo()
/home/runner/work/minio/minio/cmd/erasure-metadata.go:105 +0x16d
github.com/minio/minio/cmd.erasureObjects.putObject()
/home/runner/work/minio/minio/cmd/erasure-object.go:748 +0x13f8
github.com/minio/minio/cmd.(*erasureObjects).listPath.func3.2()
/home/runner/work/minio/minio/cmd/metacache-set.go:682 +0x7d3
github.com/minio/minio/cmd.newMetacacheBlockWriter.func1.2()
/home/runner/work/minio/minio/cmd/metacache-stream.go:777 +0x1c4
github.com/minio/minio/cmd.newMetacacheBlockWriter.func1()
/home/runner/work/minio/minio/cmd/metacache-stream.go:806 +0x614
Previous write at 0x00000477ab18 by goroutine 1269:
[failed to restore the stack]
Goroutine 1159 (running) created at:
github.com/minio/minio/cmd.newMetacacheBlockWriter()
/home/runner/work/minio/minio/cmd/metacache-stream.go:760 +0x112
github.com/minio/minio/cmd.(*erasureObjects).listPath.func3()
/home/runner/work/minio/minio/cmd/metacache-set.go:672 +0xe22
Goroutine 1269 (running) created at:
testing.(*T).Run()
/opt/hostedtoolcache/go/1.14.13/x64/src/testing/testing.go:1095 +0x537
testing.runTests.func1()
/opt/hostedtoolcache/go/1.14.13/x64/src/testing/testing.go:1339 +0xa6
testing.tRunner()
/opt/hostedtoolcache/go/1.14.13/x64/src/testing/testing.go:1050 +0x1eb
testing.runTests()
/opt/hostedtoolcache/go/1.14.13/x64/src/testing/testing.go:1337 +0x594
testing.(*M).Run()
/opt/hostedtoolcache/go/1.14.13/x64/src/testing/testing.go:1252 +0x2ff
github.com/minio/minio/cmd.TestMain()
/home/runner/work/minio/minio/cmd/test-utils_test.go:120 +0x44e
main.main()
_testmain.go:1408 +0x223
==================
==================
WARNING: DATA RACE
Read at 0x00000477aae8 by goroutine 1159:
github.com/minio/minio/cmd.(*BucketVersioningSys).Enabled()
/home/runner/work/minio/minio/cmd/bucket-versioning.go:26 +0x52
github.com/minio/minio/cmd.FileInfo.ToObjectInfo()
/home/runner/work/minio/minio/cmd/erasure-metadata.go:105 +0x197
github.com/minio/minio/cmd.erasureObjects.putObject()
/home/runner/work/minio/minio/cmd/erasure-object.go:748 +0x13f8
github.com/minio/minio/cmd.(*erasureObjects).listPath.func3.2()
/home/runner/work/minio/minio/cmd/metacache-set.go:682 +0x7d3
github.com/minio/minio/cmd.newMetacacheBlockWriter.func1.2()
/home/runner/work/minio/minio/cmd/metacache-stream.go:777 +0x1c4
github.com/minio/minio/cmd.newMetacacheBlockWriter.func1()
/home/runner/work/minio/minio/cmd/metacache-stream.go:806 +0x614
Previous write at 0x00000477aae8 by goroutine 1269:
[failed to restore the stack]
Goroutine 1159 (running) created at:
github.com/minio/minio/cmd.newMetacacheBlockWriter()
/home/runner/work/minio/minio/cmd/metacache-stream.go:760 +0x112
github.com/minio/minio/cmd.(*erasureObjects).listPath.func3()
/home/runner/work/minio/minio/cmd/metacache-set.go:672 +0xe22
Goroutine 1269 (running) created at:
testing.(*T).Run()
/opt/hostedtoolcache/go/1.14.13/x64/src/testing/testing.go:1095 +0x537
testing.runTests.func1()
/opt/hostedtoolcache/go/1.14.13/x64/src/testing/testing.go:1339 +0xa6
testing.tRunner()
/opt/hostedtoolcache/go/1.14.13/x64/src/testing/testing.go:1050 +0x1eb
testing.runTests()
/opt/hostedtoolcache/go/1.14.13/x64/src/testing/testing.go:1337 +0x594
testing.(*M).Run()
/opt/hostedtoolcache/go/1.14.13/x64/src/testing/testing.go:1252 +0x2ff
github.com/minio/minio/cmd.TestMain()
/home/runner/work/minio/minio/cmd/test-utils_test.go:120 +0x44e
main.main()
_testmain.go:1408 +0x223
==================
```
2021-01-05 10:45:26 -08:00
Harshavardhana
4915433bd2
Support bucket versioning ( #9377 )
...
- Implement a new xl.json 2.0.0 format to support,
this moves the entire marshaling logic to POSIX
layer, top layer always consumes a common FileInfo
construct which simplifies the metadata reads.
- Implement list object versions
- Migrate to siphash from crchash for new deployments
for object placements.
Fixes #2111
2020-06-12 20:04:01 -07:00