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
`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

Methods
`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 Detail

#### 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()`