Class BaseViewOperations

java.lang.Object
org.apache.iceberg.BaseMetastoreOperations
org.apache.iceberg.view.BaseViewOperations
All Implemented Interfaces:
ViewOperations
Direct Known Subclasses:
JdbcViewOperations, NessieViewOperations

public abstract class BaseViewOperations extends BaseMetastoreOperations implements ViewOperations
  • Constructor Details

    • BaseViewOperations

      protected BaseViewOperations()
  • Method Details

    • requestRefresh

      protected void requestRefresh()
    • disableRefresh

      protected void disableRefresh()
    • doRefresh

      protected abstract void doRefresh()
    • doCommit

      protected abstract void doCommit(ViewMetadata base, ViewMetadata metadata)
    • viewName

      protected abstract String viewName()
    • io

      protected abstract FileIO io()
    • currentMetadataLocation

      protected String currentMetadataLocation()
    • currentVersion

      protected int currentVersion()
    • current

      public ViewMetadata current()
      Description copied from interface: ViewOperations
      Return the currently loaded view metadata, without checking for updates.
      Specified by:
      current in interface ViewOperations
      Returns:
      view metadata
    • refresh

      public ViewMetadata refresh()
      Description copied from interface: ViewOperations
      Return the current view metadata after checking for updates.
      Specified by:
      refresh in interface ViewOperations
      Returns:
      view metadata
    • commit

      public void commit(ViewMetadata base, ViewMetadata metadata)
      Description copied from interface: ViewOperations
      Replace the base view metadata with a new version.

      This method should implement and document atomicity guarantees.

      Implementations must check that the base metadata is current to avoid overwriting updates. Once the atomic commit operation succeeds, implementations must not perform any operations that may fail because failure in this method cannot be distinguished from commit failure.

      Implementations should throw a CommitStateUnknownException in cases where it cannot be determined if the commit succeeded or failed. For example if a network partition causes the confirmation of the commit to be lost, the implementation should throw a CommitStateUnknownException. An unknown state indicates to downstream users of this API that it is not safe to perform clean up and remove any files. In general, strict metadata cleanup will only trigger cleanups when the commit fails with an exception implementing the marker interface CleanableFailure. All other exceptions will be treated as if the commit has failed.

      Specified by:
      commit in interface ViewOperations
      Parameters:
      base - view metadata on which changes were based
      metadata - new view metadata with updates
    • writeNewMetadataIfRequired

      protected String writeNewMetadataIfRequired(ViewMetadata metadata)
    • refreshFromMetadataLocation

      protected void refreshFromMetadataLocation(String newLocation)
    • refreshFromMetadataLocation

      protected void refreshFromMetadataLocation(String newLocation, Predicate<Exception> shouldRetry, int numRetries)
    • refreshFromMetadataLocation

      protected void refreshFromMetadataLocation(String newLocation, Predicate<Exception> shouldRetry, int numRetries, Function<String,ViewMetadata> metadataLoader)