Description
Postgresql uses fixed-size commitlog files that it pre-allocates (filling with zeros) so "appending" to the log can use cheaper fsync-without-metadata (length changes is "metadata"). Then, when a commitlog is not needed, it "recycles" it by renaming it to a higher number. Commitlog entries have an increasing id, and if you come to an out-of-sequence (earlier) id, then you must have have reached the end of the commitlog and are reading from the "recycled" part.