Package org.apache.lucene.index

# Class TwoPhaseCommitTool

java.lang.Object
org.apache.lucene.index.TwoPhaseCommitTool

public final class TwoPhaseCommitTool extends Object
A utility for executing 2-phase commit on several objects.

See Also:
  - `TwoPhaseCommit`
WARNING: This API is experimental and might change in incompatible ways in the next release.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`TwoPhaseCommitTool.CommitFailException`
Thrown by `execute(TwoPhaseCommit...)` when an object fails to commit().
`static class`
`TwoPhaseCommitTool.PrepareCommitFailException`
Thrown by `execute(TwoPhaseCommit...)` when an object fails to prepareCommit().

## Method Summary

Modifier and Type
Method
Description
`static void`
`execute(TwoPhaseCommit... objects)`
Executes a 2-phase commit algorithm by first `TwoPhaseCommit.prepareCommit()` all objects and only if all succeed, it proceeds with `TwoPhaseCommit.commit()`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### execute

public static void execute(TwoPhaseCommit... objects) throws TwoPhaseCommitTool.PrepareCommitFailException, TwoPhaseCommitTool.CommitFailException
Executes a 2-phase commit algorithm by first `TwoPhaseCommit.prepareCommit()` all objects and only if all succeed, it proceeds with `TwoPhaseCommit.commit()`. If any of the objects fail on either the preparation or actual commit, it terminates and `TwoPhaseCommit.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 to `TwoPhaseCommit.prepareCommit()`
  `TwoPhaseCommitTool.CommitFailException` - if any of the objects fail to `TwoPhaseCommit.commit()`