Package com.cognite.client.statestore
Interface StateStore
- All Known Implementing Classes:
AbstractStateStore,LocalStateStore,MemoryStateStore,RawStateStore
public interface StateStore
The
StateStore helps keep track of the extraction/processing state of a data application (extractor,
data pipeline, contextualization pipeline, etc.). It is designed to keep track of watermarks to enable incremental
load patterns.
At the beginning of a run the data application typically calls the load() method, which loads the states
from the remote store (which can either be a local JSON file or a table in CDF RAW), and during and/or
at the end of a run, the commit method is called, which saves the current states to the persistent store.-
Method Summary
Modifier and TypeMethodDescriptionvoidcommit()Commit the current states to the persistent store.voiddeleteState(String key) Delete the state(s) for a given id.voidexpandHigh(String key, long value) LikesetHigh(String, long), but only sets the state if the proposed state is higher than the current state.voidLikesetLow(String, long), but only sets the state if the proposed state is lower than the current state.Get the high watermark state for a single id.Get the low watermark state for a single id.Optional<com.google.protobuf.Struct>Get the set of states for a single id.booleanisOutsideState(String key, long value) Check if a state is outside the stored state interval.keySet()Returns a read-only set of all state keys.voidload()Load the states from the persistent store.voidSet/update the high watermark for a single id.voidSet/update the low watermark for a single id.booleanstart()Start a background thread to perform a commit everymaxUploadInterval.booleanstop()Stops the background thread if it is running and ensures the upload queue is empty by callingupload()one last time after shutting down the thread.
-
Method Details
-
load
Load the states from the persistent store.- Throws:
Exception
-
commit
Commit the current states to the persistent store. Will overwrite/replace previously persisted states.- Throws:
Exception
-
setHigh
Set/update the high watermark for a single id.- Parameters:
key- The id to store the state of.value- The value of the high watermark.
-
expandHigh
LikesetHigh(String, long), but only sets the state if the proposed state is higher than the current state.- Parameters:
key- key The id to store the state of.value- The value of the high watermark.
-
getHigh
Get the high watermark state for a single id.- Parameters:
key- The id to get the state of.- Returns:
- The value of the high watermark. An empty optional in case the state does not exist.
-
setLow
Set/update the low watermark for a single id.- Parameters:
key- The id to store the state of.value- The value of the low watermark.
-
expandLow
LikesetLow(String, long), but only sets the state if the proposed state is lower than the current state.- Parameters:
key- key The id to store the state of.value- The value of the low watermark.
-
getLow
Get the low watermark state for a single id.- Parameters:
key- The id to get the state of.- Returns:
- The value of the low watermark. An empty optional in case the state does not exist.
-
isOutsideState
Check if a state is outside the stored state interval. I.e. if a state is higher than the current high watermark or lower than the current low watermark. The method can be used for determining if a data object should be processed or not.- Parameters:
key- the id to test.value- the state to test.- Returns:
Trueif the state is outside of stored state or if the key is previously unseen.
-
getState
Get the set of states for a single id. This will give you both the low and high watermark (if set) as aStruct. The returnedStructis a read-only view of the state values.- Parameters:
key- The id to get the state of.- Returns:
- All the states in a Struct.
-
deleteState
Delete the state(s) for a given id.- Parameters:
key- The id to delete the state(s) of.
-
keySet
Returns a read-only set of all state keys.- Returns:
- An immutable Set of all state keys.
-
start
boolean start()Start a background thread to perform a commit everymaxUploadInterval. The default upload interval is every 20 seconds. If the background thread has already been started (for example by an earlier call tostart()then this method does nothing and returnsfalse.- Returns:
trueif the upload thread started successfully,falseif the background thread has already been started.
-
stop
boolean stop()Stops the background thread if it is running and ensures the upload queue is empty by callingupload()one last time after shutting down the thread.- Returns:
trueif the upload thread stopped successfully,falseif the upload thread was not started in the first place.
-