psarna opened a new issue, #443: URL: https://github.com/apache/iceberg-go/issues/443
### Apache Iceberg version None ### Please describe the bug 🐞 When running the `TestMergeManifests` test with `-race` flag, a data report is created (attached to the end of the message). I only skimmed the code, but it looks like the culprit is concurrent fetching of manifest entries [here](https://github.com/apache/iceberg-go/blob/85f700808061fcea3655412245ef5d59f1784b69/table/scanner.go#L356). All concurrent requests write to the same structure [here](https://github.com/apache/iceberg-go/blob/85f700808061fcea3655412245ef5d59f1784b69/table/evaluators.go#L754-L756). I confirmed that setting the concurrency here to `1` makes all the tests pass the data race check. ``` $ go test -race -run TestTableWriting/TestMergeManifests ================== WARNING: DATA RACE Write at 0x00c000f7dc20 by goroutine 353: github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval() /dev/repo/iceberg-go/table/evaluators.go:754 +0xb9 github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval-fm() <autogenerated>:1 +0x47 github.com/apache/iceberg-go/table.openManifest() /dev/repo/iceberg-go/table/scanner.go:142 +0x1b2 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries.func1() /dev/repo/iceberg-go/table/scanner.go:358 +0xd0 golang.org/x/sync/errgroup.(*Group).add.func1() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:130 +0x141 Previous write at 0x00c000f7dc20 by goroutine 354: github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval() /dev/repo/iceberg-go/table/evaluators.go:754 +0xb9 github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval-fm() <autogenerated>:1 +0x47 github.com/apache/iceberg-go/table.openManifest() /dev/repo/iceberg-go/table/scanner.go:142 +0x1b2 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries.func1() /dev/repo/iceberg-go/table/scanner.go:358 +0xd0 golang.org/x/sync/errgroup.(*Group).add.func1() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:130 +0x141 Goroutine 353 (running) created at: golang.org/x/sync/errgroup.(*Group).add() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:98 +0xe4 golang.org/x/sync/errgroup.(*Group).Go() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:93 +0x791 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries() /dev/repo/iceberg-go/table/scanner.go:356 +0x531 github.com/apache/iceberg-go/table.(*Scan).PlanFiles() /dev/repo/iceberg-go/table/scanner.go:399 +0xb1 github.com/apache/iceberg-go/table.(*Scan).ToArrowRecords() /dev/repo/iceberg-go/table/scanner.go:441 +0x64 github.com/apache/iceberg-go/table.(*Scan).ToArrowTable() /dev/repo/iceberg-go/table/scanner.go:474 +0x8c github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1125 +0x21f0 github.com/apache/iceberg-go/table_test.arrowTableWithNull() /dev/repo/iceberg-go/table/table_test.go:974 +0x14b github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1067 +0x7d1 runtime.call16() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/runtime/asm_amd64.s:775 +0x42 reflect.Value.Call() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/reflect/value.go:368 +0xb5 github.com/stretchr/testify/suite.Run.func1() /dev/go/pkg/mod/github.com/stretchr/testify@v1.10.0/suite/suite.go:202 +0x6ed testing.tRunner() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1792 +0x225 testing.(*T).Run.gowrap1() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1851 +0x44 Goroutine 354 (finished) created at: golang.org/x/sync/errgroup.(*Group).add() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:98 +0xe4 golang.org/x/sync/errgroup.(*Group).Go() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:93 +0x791 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries() /dev/repo/iceberg-go/table/scanner.go:356 +0x531 github.com/apache/iceberg-go/table.(*Scan).PlanFiles() /dev/repo/iceberg-go/table/scanner.go:399 +0xb1 github.com/apache/iceberg-go/table.(*Scan).ToArrowRecords() /dev/repo/iceberg-go/table/scanner.go:441 +0x64 github.com/apache/iceberg-go/table.(*Scan).ToArrowTable() /dev/repo/iceberg-go/table/scanner.go:474 +0x8c github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1125 +0x21f0 github.com/apache/iceberg-go/table_test.arrowTableWithNull() /dev/repo/iceberg-go/table/table_test.go:974 +0x14b github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1067 +0x7d1 runtime.call16() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/runtime/asm_amd64.s:775 +0x42 reflect.Value.Call() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/reflect/value.go:368 +0xb5 github.com/stretchr/testify/suite.Run.func1() /dev/go/pkg/mod/github.com/stretchr/testify@v1.10.0/suite/suite.go:202 +0x6ed testing.tRunner() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1792 +0x225 testing.(*T).Run.gowrap1() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1851 +0x44 ================== ================== WARNING: DATA RACE Write at 0x00c000f7dc28 by goroutine 353: github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval() /dev/repo/iceberg-go/table/evaluators.go:754 +0xf9 github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval-fm() <autogenerated>:1 +0x47 github.com/apache/iceberg-go/table.openManifest() /dev/repo/iceberg-go/table/scanner.go:142 +0x1b2 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries.func1() /dev/repo/iceberg-go/table/scanner.go:358 +0xd0 golang.org/x/sync/errgroup.(*Group).add.func1() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:130 +0x141 Previous write at 0x00c000f7dc28 by goroutine 354: github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval() /dev/repo/iceberg-go/table/evaluators.go:754 +0xf9 github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval-fm() <autogenerated>:1 +0x47 github.com/apache/iceberg-go/table.openManifest() /dev/repo/iceberg-go/table/scanner.go:142 +0x1b2 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries.func1() /dev/repo/iceberg-go/table/scanner.go:358 +0xd0 golang.org/x/sync/errgroup.(*Group).add.func1() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:130 +0x141 Goroutine 353 (running) created at: golang.org/x/sync/errgroup.(*Group).add() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:98 +0xe4 golang.org/x/sync/errgroup.(*Group).Go() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:93 +0x791 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries() /dev/repo/iceberg-go/table/scanner.go:356 +0x531 github.com/apache/iceberg-go/table.(*Scan).PlanFiles() /dev/repo/iceberg-go/table/scanner.go:399 +0xb1 github.com/apache/iceberg-go/table.(*Scan).ToArrowRecords() /dev/repo/iceberg-go/table/scanner.go:441 +0x64 github.com/apache/iceberg-go/table.(*Scan).ToArrowTable() /dev/repo/iceberg-go/table/scanner.go:474 +0x8c github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1125 +0x21f0 github.com/apache/iceberg-go/table_test.arrowTableWithNull() /dev/repo/iceberg-go/table/table_test.go:974 +0x14b github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1067 +0x7d1 runtime.call16() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/runtime/asm_amd64.s:775 +0x42 reflect.Value.Call() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/reflect/value.go:368 +0xb5 github.com/stretchr/testify/suite.Run.func1() /dev/go/pkg/mod/github.com/stretchr/testify@v1.10.0/suite/suite.go:202 +0x6ed testing.tRunner() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1792 +0x225 testing.(*T).Run.gowrap1() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1851 +0x44 Goroutine 354 (finished) created at: golang.org/x/sync/errgroup.(*Group).add() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:98 +0xe4 golang.org/x/sync/errgroup.(*Group).Go() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:93 +0x791 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries() /dev/repo/iceberg-go/table/scanner.go:356 +0x531 github.com/apache/iceberg-go/table.(*Scan).PlanFiles() /dev/repo/iceberg-go/table/scanner.go:399 +0xb1 github.com/apache/iceberg-go/table.(*Scan).ToArrowRecords() /dev/repo/iceberg-go/table/scanner.go:441 +0x64 github.com/apache/iceberg-go/table.(*Scan).ToArrowTable() /dev/repo/iceberg-go/table/scanner.go:474 +0x8c github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1125 +0x21f0 github.com/apache/iceberg-go/table_test.arrowTableWithNull() /dev/repo/iceberg-go/table/table_test.go:974 +0x14b github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1067 +0x7d1 runtime.call16() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/runtime/asm_amd64.s:775 +0x42 reflect.Value.Call() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/reflect/value.go:368 +0xb5 github.com/stretchr/testify/suite.Run.func1() /dev/go/pkg/mod/github.com/stretchr/testify@v1.10.0/suite/suite.go:202 +0x6ed testing.tRunner() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1792 +0x225 testing.(*T).Run.gowrap1() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1851 +0x44 ================== ================== WARNING: DATA RACE Write at 0x00c000f7dc30 by goroutine 353: github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval() /dev/repo/iceberg-go/table/evaluators.go:755 +0x164 github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval-fm() <autogenerated>:1 +0x47 github.com/apache/iceberg-go/table.openManifest() /dev/repo/iceberg-go/table/scanner.go:142 +0x1b2 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries.func1() /dev/repo/iceberg-go/table/scanner.go:358 +0xd0 golang.org/x/sync/errgroup.(*Group).add.func1() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:130 +0x141 Previous write at 0x00c000f7dc30 by goroutine 354: github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval() /dev/repo/iceberg-go/table/evaluators.go:755 +0x164 github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval-fm() <autogenerated>:1 +0x47 github.com/apache/iceberg-go/table.openManifest() /dev/repo/iceberg-go/table/scanner.go:142 +0x1b2 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries.func1() /dev/repo/iceberg-go/table/scanner.go:358 +0xd0 golang.org/x/sync/errgroup.(*Group).add.func1() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:130 +0x141 Goroutine 353 (running) created at: golang.org/x/sync/errgroup.(*Group).add() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:98 +0xe4 golang.org/x/sync/errgroup.(*Group).Go() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:93 +0x791 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries() /dev/repo/iceberg-go/table/scanner.go:356 +0x531 github.com/apache/iceberg-go/table.(*Scan).PlanFiles() /dev/repo/iceberg-go/table/scanner.go:399 +0xb1 github.com/apache/iceberg-go/table.(*Scan).ToArrowRecords() /dev/repo/iceberg-go/table/scanner.go:441 +0x64 github.com/apache/iceberg-go/table.(*Scan).ToArrowTable() /dev/repo/iceberg-go/table/scanner.go:474 +0x8c github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1125 +0x21f0 github.com/apache/iceberg-go/table_test.arrowTableWithNull() /dev/repo/iceberg-go/table/table_test.go:974 +0x14b github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1067 +0x7d1 runtime.call16() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/runtime/asm_amd64.s:775 +0x42 reflect.Value.Call() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/reflect/value.go:368 +0xb5 github.com/stretchr/testify/suite.Run.func1() /dev/go/pkg/mod/github.com/stretchr/testify@v1.10.0/suite/suite.go:202 +0x6ed testing.tRunner() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1792 +0x225 testing.(*T).Run.gowrap1() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1851 +0x44 Goroutine 354 (finished) created at: golang.org/x/sync/errgroup.(*Group).add() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:98 +0xe4 golang.org/x/sync/errgroup.(*Group).Go() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:93 +0x791 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries() /dev/repo/iceberg-go/table/scanner.go:356 +0x531 github.com/apache/iceberg-go/table.(*Scan).PlanFiles() /dev/repo/iceberg-go/table/scanner.go:399 +0xb1 github.com/apache/iceberg-go/table.(*Scan).ToArrowRecords() /dev/repo/iceberg-go/table/scanner.go:441 +0x64 github.com/apache/iceberg-go/table.(*Scan).ToArrowTable() /dev/repo/iceberg-go/table/scanner.go:474 +0x8c github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1125 +0x21f0 github.com/apache/iceberg-go/table_test.arrowTableWithNull() /dev/repo/iceberg-go/table/table_test.go:974 +0x14b github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1067 +0x7d1 runtime.call16() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/runtime/asm_amd64.s:775 +0x42 reflect.Value.Call() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/reflect/value.go:368 +0xb5 github.com/stretchr/testify/suite.Run.func1() /dev/go/pkg/mod/github.com/stretchr/testify@v1.10.0/suite/suite.go:202 +0x6ed testing.tRunner() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1792 +0x225 testing.(*T).Run.gowrap1() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1851 +0x44 ================== ================== WARNING: DATA RACE Write at 0x00c000f7dc38 by goroutine 353: github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval() /dev/repo/iceberg-go/table/evaluators.go:756 +0x1f0 github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval-fm() <autogenerated>:1 +0x47 github.com/apache/iceberg-go/table.openManifest() /dev/repo/iceberg-go/table/scanner.go:142 +0x1b2 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries.func1() /dev/repo/iceberg-go/table/scanner.go:358 +0xd0 golang.org/x/sync/errgroup.(*Group).add.func1() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:130 +0x141 Previous write at 0x00c000f7dc38 by goroutine 354: github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval() /dev/repo/iceberg-go/table/evaluators.go:756 +0x1f0 github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval-fm() <autogenerated>:1 +0x47 github.com/apache/iceberg-go/table.openManifest() /dev/repo/iceberg-go/table/scanner.go:142 +0x1b2 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries.func1() /dev/repo/iceberg-go/table/scanner.go:358 +0xd0 golang.org/x/sync/errgroup.(*Group).add.func1() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:130 +0x141 Goroutine 353 (running) created at: golang.org/x/sync/errgroup.(*Group).add() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:98 +0xe4 golang.org/x/sync/errgroup.(*Group).Go() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:93 +0x791 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries() /dev/repo/iceberg-go/table/scanner.go:356 +0x531 github.com/apache/iceberg-go/table.(*Scan).PlanFiles() /dev/repo/iceberg-go/table/scanner.go:399 +0xb1 github.com/apache/iceberg-go/table.(*Scan).ToArrowRecords() /dev/repo/iceberg-go/table/scanner.go:441 +0x64 github.com/apache/iceberg-go/table.(*Scan).ToArrowTable() /dev/repo/iceberg-go/table/scanner.go:474 +0x8c github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1125 +0x21f0 github.com/apache/iceberg-go/table_test.arrowTableWithNull() /dev/repo/iceberg-go/table/table_test.go:974 +0x14b github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1067 +0x7d1 runtime.call16() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/runtime/asm_amd64.s:775 +0x42 reflect.Value.Call() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/reflect/value.go:368 +0xb5 github.com/stretchr/testify/suite.Run.func1() /dev/go/pkg/mod/github.com/stretchr/testify@v1.10.0/suite/suite.go:202 +0x6ed testing.tRunner() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1792 +0x225 testing.(*T).Run.gowrap1() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1851 +0x44 Goroutine 354 (finished) created at: golang.org/x/sync/errgroup.(*Group).add() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:98 +0xe4 golang.org/x/sync/errgroup.(*Group).Go() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:93 +0x791 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries() /dev/repo/iceberg-go/table/scanner.go:356 +0x531 github.com/apache/iceberg-go/table.(*Scan).PlanFiles() /dev/repo/iceberg-go/table/scanner.go:399 +0xb1 github.com/apache/iceberg-go/table.(*Scan).ToArrowRecords() /dev/repo/iceberg-go/table/scanner.go:441 +0x64 github.com/apache/iceberg-go/table.(*Scan).ToArrowTable() /dev/repo/iceberg-go/table/scanner.go:474 +0x8c github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1125 +0x21f0 github.com/apache/iceberg-go/table_test.arrowTableWithNull() /dev/repo/iceberg-go/table/table_test.go:974 +0x14b github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1067 +0x7d1 runtime.call16() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/runtime/asm_amd64.s:775 +0x42 reflect.Value.Call() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/reflect/value.go:368 +0xb5 github.com/stretchr/testify/suite.Run.func1() /dev/go/pkg/mod/github.com/stretchr/testify@v1.10.0/suite/suite.go:202 +0x6ed testing.tRunner() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1792 +0x225 testing.(*T).Run.gowrap1() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1851 +0x44 ================== ================== WARNING: DATA RACE Write at 0x00c000f7dc40 by goroutine 353: github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval() /dev/repo/iceberg-go/table/evaluators.go:756 +0x232 github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval-fm() <autogenerated>:1 +0x47 github.com/apache/iceberg-go/table.openManifest() /dev/repo/iceberg-go/table/scanner.go:142 +0x1b2 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries.func1() /dev/repo/iceberg-go/table/scanner.go:358 +0xd0 golang.org/x/sync/errgroup.(*Group).add.func1() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:130 +0x141 Previous write at 0x00c000f7dc40 by goroutine 354: github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval() /dev/repo/iceberg-go/table/evaluators.go:756 +0x232 github.com/apache/iceberg-go/table.(*inclusiveMetricsEval).Eval-fm() <autogenerated>:1 +0x47 github.com/apache/iceberg-go/table.openManifest() /dev/repo/iceberg-go/table/scanner.go:142 +0x1b2 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries.func1() /dev/repo/iceberg-go/table/scanner.go:358 +0xd0 golang.org/x/sync/errgroup.(*Group).add.func1() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:130 +0x141 Goroutine 353 (running) created at: golang.org/x/sync/errgroup.(*Group).add() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:98 +0xe4 golang.org/x/sync/errgroup.(*Group).Go() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:93 +0x791 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries() /dev/repo/iceberg-go/table/scanner.go:356 +0x531 github.com/apache/iceberg-go/table.(*Scan).PlanFiles() /dev/repo/iceberg-go/table/scanner.go:399 +0xb1 github.com/apache/iceberg-go/table.(*Scan).ToArrowRecords() /dev/repo/iceberg-go/table/scanner.go:441 +0x64 github.com/apache/iceberg-go/table.(*Scan).ToArrowTable() /dev/repo/iceberg-go/table/scanner.go:474 +0x8c github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1125 +0x21f0 github.com/apache/iceberg-go/table_test.arrowTableWithNull() /dev/repo/iceberg-go/table/table_test.go:974 +0x14b github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1067 +0x7d1 runtime.call16() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/runtime/asm_amd64.s:775 +0x42 reflect.Value.Call() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/reflect/value.go:368 +0xb5 github.com/stretchr/testify/suite.Run.func1() /dev/go/pkg/mod/github.com/stretchr/testify@v1.10.0/suite/suite.go:202 +0x6ed testing.tRunner() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1792 +0x225 testing.(*T).Run.gowrap1() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1851 +0x44 Goroutine 354 (finished) created at: golang.org/x/sync/errgroup.(*Group).add() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:98 +0xe4 golang.org/x/sync/errgroup.(*Group).Go() /dev/go/pkg/mod/golang.org/x/sync@v0.14.0/errgroup/errgroup.go:93 +0x791 github.com/apache/iceberg-go/table.(*Scan).collectManifestEntries() /dev/repo/iceberg-go/table/scanner.go:356 +0x531 github.com/apache/iceberg-go/table.(*Scan).PlanFiles() /dev/repo/iceberg-go/table/scanner.go:399 +0xb1 github.com/apache/iceberg-go/table.(*Scan).ToArrowRecords() /dev/repo/iceberg-go/table/scanner.go:441 +0x64 github.com/apache/iceberg-go/table.(*Scan).ToArrowTable() /dev/repo/iceberg-go/table/scanner.go:474 +0x8c github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1125 +0x21f0 github.com/apache/iceberg-go/table_test.arrowTableWithNull() /dev/repo/iceberg-go/table/table_test.go:974 +0x14b github.com/apache/iceberg-go/table_test.(*TableWritingTestSuite).TestMergeManifests() /dev/repo/iceberg-go/table/table_test.go:1067 +0x7d1 runtime.call16() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/runtime/asm_amd64.s:775 +0x42 reflect.Value.Call() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/reflect/value.go:368 +0xb5 github.com/stretchr/testify/suite.Run.func1() /dev/go/pkg/mod/github.com/stretchr/testify@v1.10.0/suite/suite.go:202 +0x6ed testing.tRunner() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1792 +0x225 testing.(*T).Run.gowrap1() /dev/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.2.linux-amd64/src/testing/testing.go:1851 +0x44 ================== --- FAIL: TestTableWriting (0.64s) --- FAIL: TestTableWriting/TestMergeManifests (0.37s) testing.go:1490: race detected during execution of test FAIL exit status 1 FAIL github.com/apache/iceberg-go/table 0.948s ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org