THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||||
---|---|---|---|---|
| ||||
/**
* Runtime provider for fully loading and periodically reloading all entries of the lookup table and
* storing the table locally for lookup.
*
* <p>Implementations should provide a {@link ScanTableSource.ScanRuntimeProvider} in order to reuse
* the ability of scanning for loading all entries from the lookup table.
*/
@PublicEvolving
public interface FullCachingLookupProvider extends LookupTableSource.LookupRuntimeProvider {
/**
* Creates {@link FullCachingLookupProvider} with provided scan runtime provider and reload
* time.
*/
static FullCachingLookupProvider of(
ScanTableSource.ScanRuntimeProvider scanRuntimeProvider, ReloadTime reloadTime) {
return new FullCachingLookupProvider() {
@Override
public ScanTableSource.ScanRuntimeProvider getScanRuntimeProvider() {
return scanRuntimeProvider;
}
@Override
public ReloadTime getReloadTime() {
return reloadTime;
}
};
}
/**
* Gets the {@link org.apache.flink.table.connector.source.ScanTableSource.ScanRuntimeProvider}
* for executing the periodically reload.
*/
ScanTableSource.ScanRuntimeProvider getScanRuntimeProvider();
/** Gets the time when to reload cache. See {@link ReloadTime}. */
ReloadTime getReloadTime();
/** Defines at what time the cache should be reloaded. */
interface ReloadTime extends Serializable {
/** Gets the interval between two reload operations. */
Duration getReloadInterval();
/** Gets the start time of the reload operation in UTC. */
LocalTime getReloadStartTime();
/** Creates reload time with periodic intervals. */
static ReloadTime withInterval(Duration reloadInterval) {
return new ReloadTime() {
@Override
public Duration getReloadInterval() {
return reloadInterval;
}
@Override
public LocalTime getReloadStartTime() {
return LocalTime.now(ZoneOffset.UTC);
}
};
}
/**
* Creates reload time with periodic intervals after initial delay up to {@code
* reloadStartTime}.
*/
static ReloadTime withIntervalAfterDelay(
Duration reloadInterval, LocalTime reloadStartTime) {
return new ReloadTime() {
@Override
public Duration getReloadInterval() {
return reloadInterval;
}
@Override
public LocalTime getReloadStartTime() {
return reloadStartTime;
}
};
}
/** Creates reload time daily at specified {@code reloadStartTime}. */
static ReloadTime dailyAtSpecifiedTime(LocalTime reloadStartTime) {
return new ReloadTime() {
@Override
public Duration getReloadInterval() {
return Duration.ofDays(1);
}
@Override
public LocalTime getReloadStartTime() {
return reloadStartTime;
}
};
}
}
} |
...