Nicolas Toper wrote:
My issue is more: I save the ChangeLog object, but at the "real" commit
time, an exception might still occur. How to handle it? Cf. in my last
mail:
"I can even make persistant the modification using an already existing
PM in
case of crash. One question though: I cannot guarantee the transaction
would
be later committed without exception. We can choose to ignore this issue or
add an asynchronous way to warn the session. What are your thoughts on
this?
"
changes committed to a temp persistence manager during a backup should be
moved to the primary persistence manager when:
1) the backup is completed
2) the system restarts after a crash that happened during a backup
In case of 2) the proxy pm should try to move the content from the temp to
the primary and if at some point the transfer fails it should throw
immediately an exception and prevent the repository from starting up. This
way an admin can fix the problem (e.g. out of disk space) and try to start
up the repository again. as miro already pointed out the transfer must be
transactional as well to ensure that none or all data is moved from temp to
primary.
Would this strategy work? Another advantage of this strategy is: it might
allow us later to add serializable transaction through a 2 phase locking
for
instance (since we would have a layer to delay a transaction if needed).
I have to disappoint you on the 2PL capabilities of jackrabbit. the current
design is entirely based on an optimistic approach. it's closely related to
what some people call 'backward-oriented optimistic concurrency control'.
there are no lock tables in jackrabbit that a 2PL system usually has to
maintain read and write locks (in a classic database sense).
wrt core changes, I think building a proxy persistence manager that exposes
the backup facility through jmx or whatever is appropriate here, there is
no need to change anything in the core. the proxy pm would simply implement
the existing persistence manager interface and can then be configured in
the repository.xml. people then can decide on their own if they wish to use
it or not.
regards
marcel