Philip Stoev's test for backlogging has turned up a number of
interesting problems, some of which are easy, and some of which
are probably going to involve some further use of backlogging.
The first problem was a crash in SerialLog::getTableSpaceInfo.
You may wonder "what is the intersection between backlogging
and the serial log?" The answer is that there should be none.
Nothing about the backlog goes through the serial log. However,
the backlog is a degenerate tablespace with an id of -1. that
has exactly one section.
When a section is created, it checks to see if a section with
that id is in use in the tablespace where it's being created.
The serial log keeps tablespace information, including which
sections exist in which tablespaces. However, -1 is not a legal
value for a tablespace id in the mind of the SerialLog leading
to accessing the space before a hash table and other bad results.
That's easy enough. When Section goes to Dbb to find out about
the state of sections in that tablespace, Dbb checks for a
tablespace id of -1 and doesn't pass the call on to SerialLog.
The next problem is an assert that sometimes fails in
TABLE::backlogRecord. For reasons not yet clear, the insert
of a backlog record fails, once in a while.
The most serious problem is that this test clearly demonstrates
that backlogging as we're now doing it, doesn't solve the problem
of running out of record cache. Currently Falcon backlogs records
after a record chill cycle. If the chill threshold is high or
transactions are short, nothing goes to the backlog. I'd like
to talk tomorrow morning about other points where records should
be moved to the backlog.
|• Backlogs and Philip's dastardly tests||Ann W. Harrison||9 Oct|