Class PqStorageKvBase

java.lang.Object
com.illumon.iris.controller.pqstorage.PqStorageKvBase
All Implemented Interfaces:
PqStorage
Direct Known Subclasses:
PqStorageEtcdImpl

public abstract class PqStorageKvBase extends Object implements PqStorage
Abstract base for PqStorage which uses a kv-store for its underlying storage. It includes a local cache to speed operations. This local cache is generally trusted when determining whether or not a query exists. However, if the revision is wrong when attempting to update or delete a persistent query, instead of crashing the controller, we'll just update the revision for that query, overwriting what was there.
  • Method Details

    • getPersistentQueryConfiguration

      @Nullable public PersistentQueryConfiguration getPersistentQueryConfiguration(long serial)
      Description copied from interface: PqStorage
      Return the PersistentQueryConfiguration for the specified serial.
      Specified by:
      getPersistentQueryConfiguration in interface PqStorage
      Parameters:
      serial - the serial for the query
      Returns:
      the query, or null if it does not exist
    • addPersistentQueryConfiguration

      public boolean addPersistentQueryConfiguration(@NotNull PersistentQueryConfiguration config)
      Description copied from interface: PqStorage
      Add the specified persistent query configuration. If the configuration already exists, it will not be updated.
      Specified by:
      addPersistentQueryConfiguration in interface PqStorage
      Parameters:
      config - the configuration to add
      Returns:
      true if the configuration was added, false if it already existed
    • updatePersistentQueryConfiguration

      public boolean updatePersistentQueryConfiguration(@NotNull PersistentQueryConfiguration config)
      Description copied from interface: PqStorage
      Update the specified persistent query configuration. If the configuration does not exist, it will not be created.
      Specified by:
      updatePersistentQueryConfiguration in interface PqStorage
      Parameters:
      config - the configuration to update
      Returns:
      true if the (existing) configuration was updated, false if it did not exist
    • deletePersistentQueryConfiguration

      public boolean deletePersistentQueryConfiguration(@NotNull PersistentQueryConfiguration config)
      Description copied from interface: PqStorage
      Delete the specified persistent query configuration.
      Specified by:
      deletePersistentQueryConfiguration in interface PqStorage
      Parameters:
      config - the configuration to update
      Returns:
      true if the configuration was deleted, false if it did not exist
    • commitCheckPoint

      public void commitCheckPoint()
      Description copied from interface: PqStorage
      Commit a checkpoint. This may be a no-op.
      Specified by:
      commitCheckPoint in interface PqStorage
    • disconnect

      public void disconnect(boolean forceCheckpoint)
      Description copied from interface: PqStorage
      Disconnect from the storage mechanism.
      Specified by:
      disconnect in interface PqStorage
      Parameters:
      forceCheckpoint - if true, perform a checkpoint
    • keySet

      public Set<Long> keySet()
      Description copied from interface: PqStorage
      Return the Set of persisted serials. There are no guarantees on the type, mutability, serializability, or thread-safety of the Set returned.
      Specified by:
      keySet in interface PqStorage
      Returns:
      a Set of the serials
    • values

      Description copied from interface: PqStorage
      Return a Collection containing all of the persisted PersistentQueryConfiguration instances. Updates to these PersistentQueryConfiguration instances should be persisted via PqStorage.updatePersistentQueryConfiguration(com.illumon.iris.controller.PersistentQueryConfiguration). There are no guarantees on the type, mutability, serializability, or thread-safety of the Collection returned, or of the objects contained within the Collection.
      Specified by:
      values in interface PqStorage
      Returns:
      a Collection of persistent query configurations
    • getLatestPersistentQueryConfigurationFromKvClient

      @Nullable public PersistentQueryConfiguration getLatestPersistentQueryConfigurationFromKvClient(long serial) throws IOException
      Get the latest revision version of a PersistentQueryConfiguration from the kv client (not from the local cache).
      Parameters:
      serial - the PQ's serial
      Returns:
      the PQ, or null if it can't be found
      Throws:
      IOException