Class ConnectionAwareRemoteTable
java.lang.Object
com.illumon.util.referencecounting.ReferenceCounted
com.illumon.iris.db.util.liveness.ReferenceCountedLivenessNode
com.illumon.iris.db.util.liveness.LivenessArtifact
com.illumon.iris.db.v2.BaseTable
com.illumon.iris.db.v2.QueryTable
com.illumon.iris.controller.utils.ConnectionAwareRemoteTable
- All Implemented Interfaces:
com.fishlib.base.log.LogOutputAppendable
,LiveTable
,NotificationQueue.Dependency
,Deflatable<Table>
,Table
,LivenessManager
,LivenessNode
,LivenessReferent
,LongSizedDataStructure
,DynamicNode
,DynamicTable
,NotificationStepReceiver
,NotificationStepSource
,SystemicObject
,Serializable
,Runnable
Given the name of a persistent query, plus a prototype or definition of the table to be returned,
connect to it and fetch a preemptive table by name.
In the event that the underlying persistent query cannot be uniquely identified, fail hard.
In the event that the underlying persistent query is not running, return the prototype table (no rows).
If the underlying persistent query fails while this table is connected, then this will either:
- Immediately inform clients that all rows have been removed. If the underlying persistent query then reconnects, this will inform clients that new rows have been added at that time.
- Simply stop sending out updates, but leave the existing data in place. If the underlying persistent query then reconnects, at THAT time inform clients that all rows have been removed, then add all the rows from the restarted query.
In either case, if at any time the PQ definition does not match the pre-existing definition, then explode. Specifically, the PQ must have all of the columns called for by the ConnectionAwareRemoteTable, all of which must match the type specified in the pre-existing definition. If the persistent query has additional columns not specified in the pre-existing definition, these will be ignored.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class com.illumon.iris.db.v2.QueryTable
QueryTable.FilteredTable, QueryTable.MemoizableOperation, QueryTable.Operation
Nested classes/interfaces inherited from class com.illumon.iris.db.v2.BaseTable
BaseTable.CopyAttributeOperation, BaseTable.ListenerImpl, BaseTable.ShiftAwareListenerImpl, BaseTable.SwapListenerFactory<T extends SwapListenerBase>
Nested classes/interfaces inherited from interface com.illumon.iris.db.tables.Table
Table.AsOfMatchRule, Table.GroupStrategy, Table.RenameFunction
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
A property that can be set to make the CART automatically check after X length of time to make sure that if the underlying query never went down, then the CART will reconnect.Fields inherited from class com.illumon.iris.db.v2.QueryTable
modifiedColumnSet, USE_CHUNKED_CROSS_JOIN, USE_UNTRACKED_LASTBY_FOR_AUTOMATED_FILTERS
Fields inherited from class com.illumon.iris.db.v2.BaseTable
attributes, definition, description, PRINT_SERIALIZED_UPDATE_OVERLAPS, sharedAttributes
Fields inherited from interface com.illumon.iris.db.v2.NotificationStepReceiver
NULL_NOTIFICATION_STEP
Fields inherited from interface com.illumon.iris.db.tables.Table
ACL_ATTRIBUTE, ADD_ONLY_TABLE_ATTRIBUTE, COLUMN_DESCRIPTIONS_ATTRIBUTE, COLUMN_RENDERERS_ATTRIBUTE, CUSTOM_ACTIONS_ATTRIBUTE, DO_NOT_MAKE_REMOTE_ATTRIBUTE, EMPTY_SOURCE_TABLE_ATTRIBUTE, FILTERABLE_COLUMNS_ATTRIBUTE, HIERARCHICAL_CHILDREN_TABLE_MAP_ATTRIBUTE, HIERARCHICAL_SOURCE_INFO_ATTRIBUTE, HIERARCHICAL_SOURCE_TABLE_ATTRIBUTE, INPUT_TABLE_ATTRIBUTE, KEY_COLUMNS_ATTRIBUTE, LAYOUT_HINTS_ATTRIBUTE, MERGED_TABLE_ATTRIBUTE, NON_DISPLAY_TABLE, PLUGIN_NAME, PREDEFINED_ROLLUP_ATTRIBUTE, PREEMPTIVE_VIEWPORT_TYPE, PREPARED_RLL_ATTRIBUTE, PREVIEW_PARENT_TABLE, REVERSE_LOOKUP_ATTRIBUTE, ROLLUP_LEAF_ATTRIBUTE, SNAPSHOT_VIEWPORT_TYPE, SORTABLE_COLUMNS_ATTRIBUTE, SORTED_COLUMNS_ATTRIBUTE, SYSTEMIC_TABLE_ATTRIBUTE, TABLE_DESCRIPTION_ATTRIBUTE, TOTALS_TABLE_ATTRIBUTE, TREE_TABLE_FILTER_REVERSE_LOOKUP_ATTRIBUTE, UNIQUE_KEYS_ATTRIBUTE, UNTRACKED_LASTBY_TABLE_ATTRIBUTE, VIEWPORT_TYPE_ATTRIBUTE, ZERO_LENGTH_TABLE_ARRAY
-
Constructor Summary
ConstructorsConstructorDescriptionConnectionAwareRemoteTable
(com.fishlib.io.logger.Logger log, String owner, String queryName, String tableName, boolean clearOnDisconnect, Table prototype) Retrieve a remote table, treating non-running or disconnected queries as empty tables rather than errors.ConnectionAwareRemoteTable
(com.fishlib.io.logger.Logger log, String owner, String queryName, String tableName, boolean clearOnDisconnect, TableDefinition definition) Retrieve a remote table, treating non-running or disconnected queries as empty tables rather than errors.ConnectionAwareRemoteTable
(com.fishlib.io.logger.Logger log, String owner, String queryName, String tableName, boolean clearOnDisconnect, TableDefinition definition, int retryAttemptsInWindow, long retryWindowMillis) Retrieve a remote table, treating non-running or disconnected queries as empty tables rather than errors.ConnectionAwareRemoteTable
(com.fishlib.io.logger.Logger log, String owner, String queryName, String tableName, boolean clearOnDisconnect, TableDefinition definition, int retryAttemptsInWindow, long retryWindowMillis, PersistentQueryControllerClient controllerClient) Retrieve a remote table, treating non-running or disconnected queries as empty tables rather than errors.ConnectionAwareRemoteTable
(com.fishlib.io.logger.Logger log, String owner, String queryName, String tableName, boolean clearOnDisconnect, TableDefinition definition, ControllerHashtableEventSource controllerClient) Retrieve a remote table, treating non-running or disconnected queries as empty tables rather than errors.ConnectionAwareRemoteTable
(com.fishlib.io.logger.Logger log, String owner, String queryName, String tableName, boolean clearOnDisconnect, Table prototype, int retryAttemptsInWindow, long retryWindowMillis) Retrieve a remote table, treating non-running or disconnected queries as empty tables rather than errors. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Release resources held by this table, possibly destructively.long
void
refresh()
Refresh this LiveTable.void
setReconnectCheckTimeoutMillis
(long reconnectCheckTimeoutMillis) Change the reconnect timeout from the default value.toString()
Methods inherited from class com.illumon.iris.db.v2.QueryTable
absSumBy, aj, apply, applyToAllBy, avgBy, by, byExternal, copy, copy, countBy, disableParallelWhereForThread, disableWriteReplace, dropColumns, enableWriteReplace, exactJoin, firstBy, flatten, getColumn, getColumnSource, getColumnSourceMap, getColumnSources, getDataIndex, getIndex, getModifiedColumnSetForUpdates, getRecord, getSubTable, getSubTable, head, headBy, headPct, isFlat, join, lastBy, lazyUpdate, leftJoin, maxBy, medianBy, memoizeResult, minBy, naturalJoin, newModifiedColumnSet, newModifiedColumnSetIdentityTransformer, newModifiedColumnSetIdentityTransformer, newModifiedColumnSetTransformer, preemptiveSnapshotTable, preemptiveUpdatesTable, preemptiveUpdatesTable, raj, releaseCachedResources, renameColumns, reverse, rollup, select, selectDistinct, setDataIndexProvider, setFlat, setMemoizeResults, silent, size, slice, snapshot, snapshotHistory, snapshotIncremental, sort, stdBy, sumBy, tail, tailBy, tailPct, treeTable, ungroup, update, updateBy, updateView, validateSelect, varBy, view, wavgBy, where, whereIn, wouldMatch, wsumBy
Methods inherited from class com.illumon.iris.db.v2.BaseTable
addParentReference, append, awaitUpdate, awaitUpdate, clearSortingRestrictions, copyAttributes, copyAttributes, createSwapListenerIfRefreshing, destroy, getAttribute, getAttributeNames, getAttributes, getDefinition, getDescription, getLastNotificationStep, getNotificationQueue, hasAttribute, initializeWithSnapshot, isAddOnly, isAddOnly, isFailed, isRefreshing, isSystemicObject, layoutHints, listenForDirectUpdates, listenForUpdates, listenForUpdates, markSystemic, notifyListeners, notifyListenersOnError, removeDirectUpdateListener, removeUpdateListener, removeUpdateListener, restrictSortTo, satisfied, setAttribute, setColumnRenderers, setLastNotificationStep, setRefreshing, setTotalsTable, shouldCopyAttribute, withColumnDescription, withKeys, withTableDescription, withUniqueKeys
Methods inherited from class com.illumon.iris.db.util.liveness.LivenessArtifact
manageWithCurrentScope, unmanage, unmanage
Methods inherited from class com.illumon.iris.db.util.liveness.ReferenceCountedLivenessNode
dropReference, getWeakReference, initializeTransientFieldsForLiveness, onReferenceCountAtZero, tryManage, tryRetainReference
Methods inherited from class com.illumon.util.referencecounting.ReferenceCounted
decrementReferenceCount, incrementReferenceCount, resetReferenceCount, tryDecrementReferenceCount, tryIncrementReferenceCount
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.illumon.iris.db.v2.DynamicTable
listenForUpdates, newModifiedColumnSetTransformer, newModifiedColumnSetTransformer, notifyListeners
Methods inherited from interface com.illumon.iris.db.util.liveness.LivenessManager
manage, tryManage
Methods inherited from interface com.illumon.iris.db.util.liveness.LivenessReferent
dropReference, getReferentDescription, getWeakReference, retainReference, tryRetainReference
Methods inherited from interface com.illumon.iris.db.util.LongSizedDataStructure
intSize, intSize
Methods inherited from interface com.illumon.iris.db.tables.Table
absSumBy, absSumBy, absSumBy, aj, aj, aj, aj, aj, applyToAllBy, applyToAllBy, applyToAllBy, avgBy, avgBy, avgBy, by, by, by, by, by, by, byExternal, byteColumnIterator, characterColumnIterator, coalesce, columnIterator, countBy, countBy, countBy, dateTimeColumnAsNanos, dateTimeColumnAsNanos, deflate, deflate, doubleColumnIterator, dropColumnFormats, dropColumns, exactJoin, exactJoin, exactJoin, exactJoin, firstBy, firstBy, firstBy, floatColumnIterator, formatColumns, formatColumnWhere, formatRowWhere, getAttributes, getColumn, getColumns, getColumnSource, getMeta, getViewPort, hasColumns, hasColumns, headBy, headBy, integerColumnIterator, isEmpty, isLive, join, join, join, join, join, join, join, join, join, lastBy, lastBy, lastBy, layoutHints, lazyUpdate, lazyUpdate, leftJoin, leftJoin, leftJoin, leftJoin, leftJoin, longColumnIterator, maxBy, maxBy, maxBy, medianBy, medianBy, medianBy, minBy, minBy, minBy, moveColumns, moveColumns, moveDownColumns, moveUpColumns, naturalJoin, naturalJoin, naturalJoin, naturalJoin, preemptiveSnapshotTable, raj, raj, raj, raj, raj, renameAllColumns, renameColumns, renameColumns, rollup, rollup, rollup, rollup, rollup, rollup, rollup, select, select, select, selectDistinct, selectDistinct, selectDistinct, shortColumnIterator, sizeForInstrumentation, snapshot, snapshotIncremental, sort, sort, sortDescending, sortDescending, stdBy, stdBy, stdBy, subscribeToPreemptiveUpdates, sumBy, sumBy, sumBy, supportsPreemptiveSubscription, tailBy, tailBy, ungroup, ungroup, ungroup, ungroupAllBut, update, update, updateBy, updateBy, updateBy, updateBy, updateBy, updateView, updateView, validateSelect, varBy, varBy, varBy, view, view, wavgBy, wavgBy, wavgBy, where, where, where, whereIn, whereIn, whereIn, whereNotIn, whereNotIn, whereOneOf, whereOneOf, whereOneOf, withColumnDescription, wouldMatch, wsumBy, wsumBy, wsumBy
-
Field Details
-
RECONNECT_CHECK_TIMEOUT_PROPERTY
A property that can be set to make the CART automatically check after X length of time to make sure that if the underlying query never went down, then the CART will reconnect.- See Also:
-
-
Constructor Details
-
ConnectionAwareRemoteTable
@ScriptApi public ConnectionAwareRemoteTable(@NotNull com.fishlib.io.logger.Logger log, @NotNull String owner, @NotNull String queryName, @NotNull String tableName, boolean clearOnDisconnect, @NotNull Table prototype) Retrieve a remote table, treating non-running or disconnected queries as empty tables rather than errors.- Parameters:
log
- The Logger objectowner
- The username of the owner of the persistent queryqueryName
- The name of the persistent querytableName
- The name of the preemptive table within the persistent query to retrieveclearOnDisconnect
- If true, this table should appear empty if the underlying persistent query provides data and then later disconnects. If false, this table will hang on to any data it has already received when the underlying persistent query disconnects, and will then update itself if the underlying persistent query later reconnects.prototype
- A prototype of the table expected to be returned by the persistent query table. The definition of this prototype must exactly match that of the returned table.
-
ConnectionAwareRemoteTable
@ScriptApi public ConnectionAwareRemoteTable(@NotNull com.fishlib.io.logger.Logger log, @NotNull String owner, @NotNull String queryName, @NotNull String tableName, boolean clearOnDisconnect, @NotNull Table prototype, int retryAttemptsInWindow, long retryWindowMillis) Retrieve a remote table, treating non-running or disconnected queries as empty tables rather than errors.- Parameters:
log
- The Logger objectowner
- The username of the owner of the persistent queryqueryName
- The name of the persistent querytableName
- The name of the preemptive table within the persistent query to retrieveclearOnDisconnect
- If true, this table should appear empty if the underlying persistent query provides data and then later disconnects. If false, this table will hang on to any data it has already received when the underlying persistent query disconnects, and will then update itself if the underlying persistent query later reconnects.prototype
- A prototype of the table expected to be returned by the persistent query table. The definition of this prototype must exactly match that of the returned table.retryAttemptsInWindow
- Number of retry attempts before giving up and erroring. Default 0 (no limit).retryWindowMillis
- How long the retry window is, in milliseconds, before resetting. Default 5 minutes.
-
ConnectionAwareRemoteTable
@ScriptApi public ConnectionAwareRemoteTable(@NotNull com.fishlib.io.logger.Logger log, @NotNull String owner, @NotNull String queryName, @NotNull String tableName, boolean clearOnDisconnect, @NotNull TableDefinition definition) Retrieve a remote table, treating non-running or disconnected queries as empty tables rather than errors.- Parameters:
log
- The Logger objectowner
- The username of the owner of the persistent queryqueryName
- The name of the persistent querytableName
- The name of the preemptive table within the persistent query to retrieveclearOnDisconnect
- If true, this table should appear empty if the underlying persistent query provides data and then later disconnects. If false, this table will hang on to any data it has already received when the underlying persistent query disconnects, and will then update itself if the underlying persistent query later reconnects.definition
- A TableDefinition matching that of the table to be retrieved from the persistent query.
-
ConnectionAwareRemoteTable
@ScriptApi public ConnectionAwareRemoteTable(@NotNull com.fishlib.io.logger.Logger log, @NotNull String owner, @NotNull String queryName, @NotNull String tableName, boolean clearOnDisconnect, @NotNull TableDefinition definition, @NotNull ControllerHashtableEventSource controllerClient) Retrieve a remote table, treating non-running or disconnected queries as empty tables rather than errors.- Parameters:
log
- The Logger objectowner
- The username of the owner of the persistent queryqueryName
- The name of the persistent querytableName
- The name of the preemptive table within the persistent query to retrieveclearOnDisconnect
- If true, this table should appear empty if the underlying persistent query provides data and then later disconnects. If false, this table will hang on to any data it has already received when the underlying persistent query disconnects, and will then update itself if the underlying persistent query later reconnects.definition
- A TableDefinition matching that of the table to be retrieved from the persistent query.controllerClient
- The Controller client.
-
ConnectionAwareRemoteTable
@ScriptApi public ConnectionAwareRemoteTable(@NotNull com.fishlib.io.logger.Logger log, @NotNull String owner, @NotNull String queryName, @NotNull String tableName, boolean clearOnDisconnect, @NotNull TableDefinition definition, int retryAttemptsInWindow, long retryWindowMillis) Retrieve a remote table, treating non-running or disconnected queries as empty tables rather than errors.- Parameters:
log
- The Logger objectowner
- The username of the owner of the persistent queryqueryName
- The name of the persistent querytableName
- The name of the preemptive table within the persistent query to retrieveclearOnDisconnect
- If true, this table should appear empty if the underlying persistent query provides data and then later disconnects. If false, this table will hang on to any data it has already received when the underlying persistent query disconnects, and will then update itself if the underlying persistent query later reconnects.definition
- A TableDefinition matching that of the table to be retrieved from the persistent query.retryAttemptsInWindow
- Number of retry attempts before giving up and erroring. Default 0 (no limit).retryWindowMillis
- How long the retry window is, in milliseconds, before resetting. Default 5 minutes.
-
ConnectionAwareRemoteTable
@ScriptApi public ConnectionAwareRemoteTable(@NotNull com.fishlib.io.logger.Logger log, @NotNull String owner, @NotNull String queryName, @NotNull String tableName, boolean clearOnDisconnect, @NotNull TableDefinition definition, int retryAttemptsInWindow, long retryWindowMillis, @NotNull PersistentQueryControllerClient controllerClient) Retrieve a remote table, treating non-running or disconnected queries as empty tables rather than errors.- Parameters:
log
- The Logger objectowner
- The username of the owner of the persistent queryqueryName
- The name of the persistent querytableName
- The name of the preemptive table within the persistent query to retrieveclearOnDisconnect
- If true, this table should appear empty if the underlying persistent query provides data and then later disconnects. If false, this table will hang on to any data it has already received when the underlying persistent query disconnects, and will then update itself if the underlying persistent query later reconnects.definition
- A TableDefinition matching that of the table to be retrieved from the persistent query.
-
-
Method Details
-
refresh
public void refresh()Refresh this LiveTable. -
toString
-
close
public void close()Description copied from interface:Table
Release resources held by this table, possibly destructively. This may render the table unsuitable or unsafe for further use. -
setReconnectCheckTimeoutMillis
public void setReconnectCheckTimeoutMillis(long reconnectCheckTimeoutMillis) Change the reconnect timeout from the default value.- Parameters:
reconnectCheckTimeoutMillis
- the new value
-
getReconnectCheckTimeoutMillis
public long getReconnectCheckTimeoutMillis()
-