- java.lang.Object
-
- org.apache.lucene.index.TwoPhaseCommitTool
-
public final class TwoPhaseCommitTool extends java.lang.Object
A utility for executing 2-phase commit on several objects.- See Also:
TwoPhaseCommit
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
TwoPhaseCommitTool.CommitFailException
Thrown byexecute(TwoPhaseCommit...)
when an object fails to commit().static class
TwoPhaseCommitTool.PrepareCommitFailException
Thrown byexecute(TwoPhaseCommit...)
when an object fails to prepareCommit().
-
Constructor Summary
Constructors Modifier Constructor Description private
TwoPhaseCommitTool()
No instance
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
execute(TwoPhaseCommit... objects)
Executes a 2-phase commit algorithm by firstTwoPhaseCommit.prepareCommit()
all objects and only if all succeed, it proceeds withTwoPhaseCommit.commit()
.private static void
rollback(TwoPhaseCommit... objects)
rollback all objects, discarding any exceptions that occur.
-
-
-
Method Detail
-
rollback
private static void rollback(TwoPhaseCommit... objects)
rollback all objects, discarding any exceptions that occur.
-
execute
public static void execute(TwoPhaseCommit... objects) throws TwoPhaseCommitTool.PrepareCommitFailException, TwoPhaseCommitTool.CommitFailException
Executes a 2-phase commit algorithm by firstTwoPhaseCommit.prepareCommit()
all objects and only if all succeed, it proceeds withTwoPhaseCommit.commit()
. If any of the objects fail on either the preparation or actual commit, it terminates andTwoPhaseCommit.rollback()
all of them.NOTE: it may happen that an object fails to commit, after few have already successfully committed. This tool will still issue a rollback instruction on them as well, but depending on the implementation, it may not have any effect.
NOTE: if any of the objects are
null
, this method simply skips over them.- Throws:
TwoPhaseCommitTool.PrepareCommitFailException
- if any of the objects fail toTwoPhaseCommit.prepareCommit()
TwoPhaseCommitTool.CommitFailException
- if any of the objects fail toTwoPhaseCommit.commit()
-
-