A reader that commits before its writer creates an unsafe commit order.

highlighted = computed this step

The bad early commit

Now the reader commits too soon. It depends on a writer whose commit has not happened yet.

reader commits too early\text{reader commits too early}

Show the early commit

The diagram shows the same kind of dependency, but the terminal order is unsafe.

unsafe terminal order\text{unsafe terminal order}

Safe commit and rollback schedules are tiny finite histories; logging, undo, ARIES, timing, isolation-level, product, and performance claims are out of scope.

Nonrecoverable scheduleeventtxopitemvalue1T1wX102T2rX3T2c4T1c reads-from factsreadEventreaderitemwriterwriteEventvalue2T2XT1110 external read dependencieswriterreaderitemwriteEventreadEventT1T2X12 classificationsfactvaluerecoverablenocascadelessnostrictno violationsnkindtx/readerwriteritem1cascadelessT2T1X2strictT2T1X3recoverableT2T1X

Read the failed check

The recoverable label is no, and the compiler reports 1 recoverability violation.

recoverable=no\text{recoverable}=no

Summary

The bad fact is not the read by itself. It is the read plus the reader committing before the writer.

dependency before terminal order\text{dependency before terminal order}