Ann, thanks a lot for the answer.
I'm still on tablespaces recovery doing my investigations. I want to put a
something more robust and predictable then exceptions I used in my patch in
the phase 1.
In theory, phase 1 should have no access to physical structures , e.g
tablespaces , incarnations are bumped, nothing else happens.With your
explanation, I think *all* reallocPage should be done then on phase2 and all
allocPage if any should be done in redo, is this correct? I could put
ASSERTs for that
If this is so, I can populate droppedTablespaces bitmap during phase1, and
during phase2 or redo skip all records that reference non-existing
tablespaces. It is exactly what I have done in the patch, but this time just
without any exception handling, as we do not expect access to the
tablespaces in the phase1.
There is a reason I do not like exceptions anymore. With exceptions, I could
skip a potentially valid record referencing tablespace that should be
created at the end, but that is not yet there in the phase1 of recovery.
> -----Original Message-----
> From: Ann.Harrison@stripped [mailto:Ann.Harrison@stripped] On Behalf Of
> Ann W. Harrison
> Sent: Tuesday, November 11, 2008 9:59 PM
> To: Vladislav Vaintroub
> Cc: 'FalconDev'
> Subject: Re: Question on The 3 phases Of Recovery
> 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 -
> Falcon Storage Engine Mailing List
> For list archives: http://lists.mysql.com/falcon
> To unsubscribe: http://lists.mysql.com/falcon?unsub=1