Skip to content

CRITICAL: No atomicity between WAL and page writes #151

@poyrazK

Description

@poyrazK

Why is this an issue?

In heap_table.cpp, page is unpinned before WAL is guaranteed durable:

bpm_.unpin_page(pid, true);  // Page written
return TupleId(...);  // WAL may not be flushed

Crash between page write and WAL flush loses data with no redo record.

What is causing it?

No coordination between page write and WAL durability.

How can it be solved?

Flush WAL before acknowledging commit.

Category

  • Small
  • Medium
  • Large
  • Critical

Severity

  • Low
  • Medium
  • High
  • Critical

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions