Durability and acknowledgement
What this concept is
An acknowledgement is a promise to an observer. Durability requires enough information to reconstruct that promise after the specified failure. Volatile application state, persisted log and persisted data are different states; a successful in-memory assignment establishes only the first.
Why it matters here
A service can return success before its data page is persisted if a durable recovery log already contains the update. It cannot safely make the same promise based only on a volatile log. The ordering requirement is about recoverability, not a particular function name.
Concrete example
Start at zero, append an after-image of 7, persist its log record, then crash before applying data. The data checkpoint remains zero but replay recovers 7. If success had been reported after append and before persistence, the same crash would leave no recovery record and the promise would be lost.
Common confusion / misconception
No acknowledgement does not prove no commit. A crash after durable commit but before the response can leave the client uncertain while recovery still installs the value. Repeating an increment request is then a separate deduplication problem; this lab does not implement it.
How to use it
Write down the failure model and the point at which recovery information becomes durable. Place the success response after that point. When reviewing an I/O API, distinguish buffer acceptance, persistence completion and remote/client observation. Preserve evidence for each claim instead of treating them as one event.
Check yourself
Does a durable log require an already-persisted data page before success? Not in this redo model. Does an unobserved response imply rollback? No. What would change if the log could be reclaimed before data persistence? Recovery information might disappear.
Mini drill or application
Trace crash cuts after append, after log persistence and after acknowledgement. For each, list what the client knows separately from what recovery finds. Explain why retaining the acknowledgement list in the test is an external oracle, not durable storage implemented by the service.
Read this only if stuck
Review the file interface in OSTEP Files and Directories, then return to the primary journaling reading with the three states labeled.