## org.apache.lucene.util
Interface TwoPhaseCommit

All Known Subinterfaces:
  TaxonomyWriter

All Known Implementing Classes:
  DirectoryTaxonomyWriter, IndexWriter, TwoPhaseCommitTool.TwoPhaseCommitWrapper

    public interface TwoPhaseCommit

An interface for implementations that support 2-phase commit. You can use `TwoPhaseCommitTool` to execute a 2-phase commit algorithm over several `TwoPhaseCommit`s.

WARNING: This API is experimental and might change in incompatible ways in the next release.

Method Summary
`void` `commit()` The second phase of a 2-phase commit.
`void` `commit(Map<String,String> commitData)` Like `commit()`, but takes an additional commit data to be included w/ the commit.
`void` `prepareCommit()` The first stage of a 2-phase commit.
`void` `prepareCommit(Map<String,String> commitData)` Like `commit()`, but takes an additional commit data to be included w/ the commit.
`void` `rollback()` Discards any changes that have occurred since the last commit.

Method Detail

### prepareCommit

    void prepareCommit()
                       throws IOException

  The first stage of a 2-phase commit. Implementations should do as much work as possible in this method, but avoid actual committing changes. If the 2-phase commit fails, `rollback()` is called to discard all changes since last successful commit.

  Throws:
    `IOException`

### prepareCommit

    void prepareCommit(Map<String,String> commitData)
                       throws IOException

  Like `commit()`, but takes an additional commit data to be included w/ the commit.

  NOTE: some implementations may not support any custom data to be included w/ the commit and may discard it altogether. Consult the actual implementation documentation for verifying if this is supported.

  Throws:
    `IOException`
  See Also:
    `prepareCommit()`

### commit

    void commit()
                throws IOException

  The second phase of a 2-phase commit. Implementations should ideally do very little work in this method (following `prepareCommit()`, and after it returns, the caller can assume that the changes were successfully committed to the underlying storage.

  Throws:
    `IOException`

### commit

    void commit(Map<String,String> commitData)
                throws IOException

  Like `commit()`, but takes an additional commit data to be included w/ the commit.

  Throws:
    `IOException`
  See Also:
    `commit()`, `prepareCommit(Map)`

### rollback

    void rollback()
                  throws IOException

  Discards any changes that have occurred since the last commit. In a 2-phase commit algorithm, where one of the objects failed to `commit()` or `prepareCommit()`, this method is used to roll all other objects back to their previous state.

  Throws:
    `IOException`