Package org.apache.lucene.index

# Interface TwoPhaseCommit

All Known Implementing Classes:
  `IndexWriter`

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

  Modifier and Type
  Method
  Description
  `long`
  `commit()`
  The second phase of a 2-phase commit.
  `long`
  `prepareCommit()`
  The first stage of a 2-phase commit.
  `void`
  `rollback()`
  Discards any changes that have occurred since the last commit.

- ## Method Details

  - ### prepareCommit

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

  - ### commit

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

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