Class BaseViewOperations

    • Constructor Detail

      • BaseViewOperations

        protected BaseViewOperations()
    • Method Detail

      • requestRefresh

        protected void requestRefresh()
      • disableRefresh

        protected void disableRefresh()
      • doRefresh

        protected abstract void doRefresh()
      • viewName

        protected abstract java.lang.String viewName()
      • io

        protected abstract FileIO io()
      • currentMetadataLocation

        protected java.lang.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
        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
        base - view metadata on which changes were based
        metadata - new view metadata with updates
      • writeNewMetadataIfRequired

        protected java.lang.String writeNewMetadataIfRequired​(ViewMetadata metadata)
      • refreshFromMetadataLocation

        protected void refreshFromMetadataLocation​(java.lang.String newLocation)
      • refreshFromMetadataLocation

        protected void refreshFromMetadataLocation​(java.lang.String newLocation,
                                                   java.util.function.Predicate<java.lang.Exception> shouldRetry,
                                                   int numRetries)
      • refreshFromMetadataLocation

        protected void refreshFromMetadataLocation​(java.lang.String newLocation,
                                                   java.util.function.Predicate<java.lang.Exception> shouldRetry,
                                                   int numRetries,
                                                   java.util.function.Function<java.lang.String,​ViewMetadata> metadataLoader)