A bit of context first
I have been developing the new recovery function in Narayana’s RecoveryManagerImpl (which recovers in-flight/in-doubt transactions before terminating the recovery manager). See the design in this conversation in our Zulip. I have not shared info about the design phase as we discussed it (mostly) internally. I would like to open the discussion more widely with our community. I recently finished my PoC based on our internal discussion and I would like to gather further feedback from the community. Please, let me know what you think about the overall design (discussed here) and if you have any comment/question regarding the PoC. Thanks for your contributions
Additional Information (issues that I have addressed in my PoC)
It turns out that the hardest bit of this development is to find out if there are transactions left in the Object Store. In a first attempt to tackle this problem, I used the `ObjStoreBrowser` in our package `com.arjuna.ats.arjuna.tools.osb.mbean`. Although `ObjStoreBrowser` worked fine, employing this tool is an overkill as this browser produces MBeans to navigate Narayana’s Object Store. As an alternative, I developed a wrapper of `ObjectStoreIterator` to check if a particular type has transactions associated with it.
To fetch transactions from the Object Store, I needed to know (in advance) what types I wanted to skim through. This has been addressed in this conversation and implemented in my PoC.