Skip to content

Data race when opening database #879

Open
@thorfour

Description

@thorfour
2024-05-22T13:41:38.6474307Z ==================
2024-05-22T13:41:38.6474647Z WARNING: DATA RACE
2024-05-22T13:41:38.6475059Z Write at 0x00c0000c9e88 by goroutine 2933:
2024-05-22T13:41:38.6475656Z   github.com/polarsignals/frostdb.(*ColumnStore).DB.func2()
2024-05-22T13:41:38.6476329Z       /home/runner/work/frostdb/frostdb/db.go:557 +0x5dd
2024-05-22T13:41:38.6476992Z   github.com/polarsignals/frostdb.(*ColumnStore).DB()
2024-05-22T13:41:38.6477625Z       /home/runner/work/frostdb/frostdb/db.go:578 +0xeb0
2024-05-22T13:41:38.6478302Z   github.com/polarsignals/frostdb.(*ColumnStore).recoverDBsFromStorage.func1()
2024-05-22T13:41:38.6479134Z       /home/runner/work/frostdb/frostdb/db.go:341 +0x19c
2024-05-22T13:41:38.6479690Z   golang.org/x/sync/errgroup.(*Group).Go.func1()
2024-05-22T13:41:38.6480550Z       /home/runner/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:78 +0x97
2024-05-22T13:41:38.6481013Z 
2024-05-22T13:41:38.6481246Z Previous read at 0x00c0000c9e88 by goroutine 3017:
2024-05-22T13:41:38.6482169Z   github.com/polarsignals/frostdb.(*Table).writeBlock.func1()
2024-05-22T13:41:38.6482915Z       /home/runner/work/frostdb/frostdb/table.go:529 +0x41c
2024-05-22T13:41:38.6483523Z   github.com/polarsignals/frostdb.(*Table).writeBlock()
2024-05-22T13:41:38.6484197Z       /home/runner/work/frostdb/frostdb/table.go:548 +0xbe4
2024-05-22T13:41:38.6484870Z   github.com/polarsignals/frostdb.(*DB).recover.func2.3()
2024-05-22T13:41:38.6485520Z       /home/runner/work/frostdb/frostdb/db.go:847 +0x64
2024-05-22T13:41:38.6485849Z 
2024-05-22T13:41:38.6486043Z Goroutine 2933 (running) created at:
2024-05-22T13:41:38.6486561Z   golang.org/x/sync/errgroup.(*Group).Go()
2024-05-22T13:41:38.6487345Z       /home/runner/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:75 +0x124
2024-05-22T13:41:38.6488165Z   github.com/polarsignals/frostdb.(*ColumnStore).recoverDBsFromStorage()
2024-05-22T13:41:38.6488964Z       /home/runner/work/frostdb/frostdb/db.go:339 +0x564
2024-05-22T13:41:38.6489516Z   github.com/polarsignals/frostdb.New()
2024-05-22T13:41:38.6490056Z       /home/runner/work/frostdb/frostdb/db.go:142 +0xc84
2024-05-22T13:41:38.6490712Z   github.com/polarsignals/frostdb.TestDBRecover.func7()
2024-05-22T13:41:38.6491612Z       /home/runner/work/frostdb/frostdb/db_test.go:1420 +0x86c
2024-05-22T13:41:38.6492213Z   testing.tRunner()
2024-05-22T13:41:38.6492852Z       /opt/hostedtoolcache/go/1.21.10/x64/src/testing/testing.go:1595 +0x261
2024-05-22T13:41:38.6493406Z   testing.(*T).Run.func1()
2024-05-22T13:41:38.6494097Z       /opt/hostedtoolcache/go/1.21.10/x64/src/testing/testing.go:1648 +0x44
2024-05-22T13:41:38.6494553Z 
2024-05-22T13:41:38.6494709Z Goroutine 3017 (finished) created at:
2024-05-22T13:41:38.6495238Z   github.com/polarsignals/frostdb.(*DB).recover.func2()
2024-05-22T13:41:38.6495946Z       /home/runner/work/frostdb/frostdb/db.go:847 +0xa5b
2024-05-22T13:41:38.6496561Z   github.com/polarsignals/frostdb/wal.(*FileWAL).Replay()
2024-05-22T13:41:38.6497209Z       /home/runner/work/frostdb/frostdb/wal/wal.go:642 +0xb45
2024-05-22T13:41:38.6497878Z   github.com/polarsignals/frostdb.(*DB).recover()
2024-05-22T13:41:38.6498498Z       /home/runner/work/frostdb/frostdb/db.go:764 +0x1370
2024-05-22T13:41:38.6499056Z   github.com/polarsignals/frostdb.(*DB).openWAL()
2024-05-22T13:41:38.6499747Z       /home/runner/work/frostdb/frostdb/db.go:660 +0x1e4
2024-05-22T13:41:38.6500329Z   github.com/polarsignals/frostdb.(*ColumnStore).DB.func2.1()
2024-05-22T13:41:38.6500992Z       /home/runner/work/frostdb/frostdb/db.go:547 +0x1fe
2024-05-22T13:41:38.6501667Z   github.com/polarsignals/frostdb.(*ColumnStore).DB.func2()
2024-05-22T13:41:38.6502319Z       /home/runner/work/frostdb/frostdb/db.go:549 +0x468
2024-05-22T13:41:38.6502967Z   github.com/polarsignals/frostdb.(*ColumnStore).DB()
2024-05-22T13:41:38.6503590Z       /home/runner/work/frostdb/frostdb/db.go:578 +0xeb0
2024-05-22T13:41:38.6504262Z   github.com/polarsignals/frostdb.(*ColumnStore).recoverDBsFromStorage.func1()
2024-05-22T13:41:38.6505106Z       /home/runner/work/frostdb/frostdb/db.go:341 +0x19c
2024-05-22T13:41:38.6505661Z   golang.org/x/sync/errgroup.(*Group).Go.func1()
2024-05-22T13:41:38.6506447Z       /home/runner/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:78 +0x97
2024-05-22T13:41:38.6507172Z ==================

Spawning a writeblock routine when opening a database causes a data race. This was introduced in commit ef7d1fe

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions