Class SidecarStatePersister

  • All Implemented Interfaces:
    org.apache.cassandra.cdc.api.StatePersister

    public class SidecarStatePersister
    extends java.lang.Object
    implements org.apache.cassandra.cdc.api.StatePersister
    SidecarStatePersister buffers CDC state and flushes at regular time intervals, so we only write the latest CDC state and don't wastefully write expired data.
    • Constructor Detail

      • SidecarStatePersister

        public SidecarStatePersister​(SidecarCdcOptions sidecarCdcOptions,
                                     org.apache.cassandra.cdc.api.CdcOptions cdcOptions,
                                     SidecarCdcStats sidecarCdcStats,
                                     SidecarCdcCassandraClient cassandraClient,
                                     org.apache.cassandra.spark.utils.AsyncExecutor asyncExecutor)
    • Method Detail

      • persist

        public void persist​(java.lang.String jobId,
                            int partitionId,
                            @Nullable
                            org.apache.cassandra.bridge.TokenRange tokenRange,
                            @NotNull
                            java.nio.ByteBuffer buf)
        Specified by:
        persist in interface org.apache.cassandra.cdc.api.StatePersister
      • loadState

        @NotNull
        public java.util.List<org.apache.cassandra.cdc.state.CdcState> loadState​(java.lang.String jobId,
                                                                                 int partitionId,
                                                                                 @Nullable
                                                                                 org.apache.cassandra.bridge.TokenRange tokenRange)
        Specified by:
        loadState in interface org.apache.cassandra.cdc.api.StatePersister
      • loadStateForRange

        public java.util.stream.Stream<byte[]> loadStateForRange​(java.lang.String jobId,
                                                                 @Nullable
                                                                 org.apache.cassandra.bridge.TokenRange tokenRange)
      • start

        public void start()
        Start the SidecarStatePersister to flush to Cassandra every `persistDelay()`.
      • stop

        public void stop()
        Stop the SidecarStatePersister gracefully, blocking to await for any pending flushes to complete.
      • stop

        public void stop​(boolean flush)
      • persistToCassandra

        protected void persistToCassandra()
      • persistToCassandra

        protected void persistToCassandra​(boolean force)
      • flush

        protected void flush()
        Flush active state persist calls
      • flushActiveSafe

        protected void flushActiveSafe()
      • flushActive

        protected void flushActive()
                            throws java.util.concurrent.ExecutionException,
                                   java.lang.InterruptedException
        Flush active in-flight persist writes.
        Throws:
        java.util.concurrent.ExecutionException
        java.lang.InterruptedException