Vlad,
>
Sorry this is late - we've discussed this on Friday.
> In case I'm investigating right now I've got following backtrace
> PageInventoryPage::reallocPage
> Dbb::reallocPage
> SerialLog::bumpPageIncarnation
> SRLSectionPage::pass1
>
>
> How does this correspond to the description of Phase I? Should not
> reallocPages be done first in Phase II?
If memory serves, the resolution was to be certain that nothing in
Phase II allocates new pages. It shouldn't, but all the pages that
are reallocated must be done before any new allocation is done, or
an object that must be on a certain page may find that the page is
already in use for something else.
To be absolutely clear, there are two different operations:
reallocPage which reestablishes the use of a specific page for
an object (e.g. index, section, record locator) that must be
on a specific page, and new allocation which takes whatever
page is free and uses it for data or blobs. The two must be
in separate phases, or they step on each other.
If there are new allocations in Phase II, then either they should
be deferred to Phase III (probably hard) or we need a phase II.V
that does those new allocations.
Sorry again if this is a rehash of an old discussion -
Best,
Ann