Code review comment for lp:~pbeaman/akiban-persistit/fix_1017957_stress_tests_corruption

Revision history for this message
Peter Beaman (pbeaman) wrote :

Turns out there were two problems in the Exchange class that contributed to this bug, making diagnosis somewhat difficult.

This branch fixes both:

(a) There is no longer a concept of "deferred reindexing" in raw_removeKeyRangeInternal. That was a relic of the fix-length write ahead journal of the past. One of the bug mechanisms used that code path to reinsert a page pointer to a page that had changed due to releasing all locks.

(b) there was a code path that failed to bump the tree generation counter upon completing a structure delete.

To support diagnosing this bug, I added better formatting and a new, useful CLI command that walks a pointer chain and displays selected information about a page. Some of these changes are located in Buffer#toStringDetail which is now simpler and more useful.

Also, while diagnosing this bug I came across Exceptions while reporting garbage chain structure errors in IntegrityCheck. Fixed that problem and wrote a unit test to verify it.

And of course the Eclipse random line-length formatter made its usual contribution...

« Back to merge proposal