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 Summary
Modifier and Type Method Description boolean
addPersistentQueryConfiguration(PersistentQueryConfiguration config)
Add the specified persistent query configuration.void
commitCheckPoint()
Commit a checkpoint.boolean
deletePersistentQueryConfiguration(PersistentQueryConfiguration config)
Delete the specified persistent query configuration.void
disconnect(boolean forceCheckpoint)
Disconnect from the storage mechanism.PersistentQueryConfiguration
getLatestPersistentQueryConfigurationFromKvClient(long serial)
Get the latest revision version of aPersistentQueryConfiguration
from the kv client (not from the local cache).PersistentQueryConfiguration
getPersistentQueryConfiguration(long serial)
Return thePersistentQueryConfiguration
for the specified serial.Set<Long>
keySet()
Return the Set of persisted serials.boolean
updatePersistentQueryConfiguration(PersistentQueryConfiguration config)
Update the specified persistent query configuration.Collection<PersistentQueryConfiguration>
values()
Return a Collection containing all of the persistedPersistentQueryConfiguration
instances.
-
Method Details
-
getPersistentQueryConfiguration
Description copied from interface:PqStorage
Return thePersistentQueryConfiguration
for the specified serial.- Specified by:
getPersistentQueryConfiguration
in interfacePqStorage
- Parameters:
serial
- the serial for the query- Returns:
- the query, or null if it does not exist
-
addPersistentQueryConfiguration
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 interfacePqStorage
- Parameters:
config
- the configuration to add- Returns:
- true if the configuration was added, false if it already existed
-
updatePersistentQueryConfiguration
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 interfacePqStorage
- Parameters:
config
- the configuration to update- Returns:
- true if the (existing) configuration was updated, false if it did not exist
-
deletePersistentQueryConfiguration
Description copied from interface:PqStorage
Delete the specified persistent query configuration.- Specified by:
deletePersistentQueryConfiguration
in interfacePqStorage
- 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 interfacePqStorage
-
disconnect
public void disconnect(boolean forceCheckpoint)Description copied from interface:PqStorage
Disconnect from the storage mechanism.- Specified by:
disconnect
in interfacePqStorage
- Parameters:
forceCheckpoint
- if true, perform a checkpoint
-
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. -
values
Description copied from interface:PqStorage
Return a Collection containing all of the persistedPersistentQueryConfiguration
instances. Updates to these PersistentQueryConfiguration instances should be persisted viaPqStorage.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. -
getLatestPersistentQueryConfigurationFromKvClient
@Nullable public PersistentQueryConfiguration getLatestPersistentQueryConfigurationFromKvClient(long serial) throws IOExceptionGet the latest revision version of aPersistentQueryConfiguration
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
-