Class ConfigureReplay

java.lang.Object
io.deephaven.enterprise.dnd.ConfigureReplay

@Module public class ConfigureReplay extends Object
Configure replay persistent queries.
  • Constructor Details

    • ConfigureReplay

      public ConfigureReplay()
  • Method Details

    • provideReplayTransformer

      @Provides @Named("databaseTransformer") @Nullable public @Nullable Function<Database,Database> provideReplayTransformer(@NotNull @NotNull io.deephaven.shadow.enterprise.com.fishlib.configuration.Configuration enterpriseConfiguration, @Nullable @Nullable io.deephaven.shadow.enterprise.com.illumon.iris.db.tables.databases.ReplaySettings replaySettings)
    • configureReplay

      public static Function<Database,Database> configureReplay(@NotNull io.deephaven.shadow.enterprise.com.fishlib.configuration.Configuration configuration, @NotNull @NotNull io.deephaven.shadow.enterprise.com.illumon.iris.db.tables.databases.ReplaySettings replaySettings) throws ClassNotFoundException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException
      Set up a ReplayDatabase for this worker.

      The replay is controlled by replacing the DateTimeUtils.currentClock() with a simulated clock.

      The configuration of a replay query derives from two distinct sources:

      • The PersistentQueryConfiguration type specific fields, which are represented by the ReplaySettings object. The replay date, start time, and speed are controlled by these settings.
      • The per table configuration stored in a ReplayConfigurationImpl that is derived from configuration properties. The per-table configuration determines the Timestamp column name and whether historicalTable or liveTable is used for the replayed data.

      The Database object created by Dagger is wrapped with a ReplayDatabase, which filters tables using the replay Clock before returning them to the query.

      In addition to the Database, the replay clock is used by timeTables, WindowCheck operations, and the result of the DateTimeUtils.today() function. This allows many simple persistent queries to function as if they were executing at the time returned by the replay clock.

      Parameters:
      configuration - the Enterprise configuration
      replaySettings - the replay settings from the worker JSON
      Throws:
      ClassNotFoundException
      InvocationTargetException
      NoSuchMethodException
      InstantiationException
      IllegalAccessException