protected void recover (int session, long id) {
LogEvent evt = getLog().createLogEvent ("recover");
Profiler prof = new Profiler();
evt.addMessage ("<id>" + id + "</id>");
try {
String stateKey = getKey (STATE, id);
String contextKey = getKey (CONTEXT, id);
Integer state = (Integer) psp.rdp (stateKey);
if (state == null) {
evt.addMessage ("unknown stateKey " + stateKey);
SpaceUtil.wipe (psp, contextKey);
return;
}
Serializable context = (Serializable) psp.rdp (contextKey);
if (context != null)
evt.addMessage (context);
if (DONE.equals (state)) {
evt.addMessage ("<done/>");
} else if (COMMITTING.equals (state)) {
commit (session, id, context, getParticipants (id), true, evt, prof);
} else if (PREPARING.equals (state)) {
abort (session, id, context, getParticipants (id), true, evt, prof);
}
purge (id, true);
} finally {
evt.addMessage (prof);
Logger.log (evt);
}
}
protected synchronized void checkRetryTask () {