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

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and 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 Detail

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

Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.