Package com.illumon.iris.controller
Class PersistentQueryControllerClient
java.lang.Object
com.illumon.iris.controller.ControllerHashtable
com.illumon.iris.controller.PersistentQueryControllerClient
- All Implemented Interfaces:
ControllerHashtableEventSource,PersistentQueryScriptSource,RemoteScriptSource,Map<Long,PersistentQueryInfo>
public class PersistentQueryControllerClient
extends ControllerHashtable
implements PersistentQueryScriptSource
Client for subscribing to state from the PersistentQueryController and manipulating persistent queries.
-
Nested Class Summary
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final longstatic final longprotected final ControllerClientGrpcprotected final com.fishlib.io.logger.LoggerFields inherited from class com.illumon.iris.controller.ControllerHashtable
data, handlers -
Constructor Summary
ConstructorsConstructorDescriptionPersistentQueryControllerClient(String who, com.fishlib.io.logger.Logger log, io.deephaven.shadow.core.io.grpc.ManagedChannel channel) PersistentQueryControllerClient(String who, com.fishlib.io.logger.Logger log, io.deephaven.shadow.core.io.grpc.ManagedChannel channel, TokenFactoryFactory.TokenFactory tokenFactory) PersistentQueryControllerClient(String who, com.fishlib.io.logger.Logger log, io.deephaven.shadow.core.io.grpc.ManagedChannel channel, ScheduledExecutorService executorService) PersistentQueryControllerClient(String who, com.fishlib.io.logger.Logger log, io.deephaven.shadow.core.io.grpc.ManagedChannel channel, ScheduledExecutorService executorService, long heartBeatPeriodMillis, long heartBeatTimeoutMillis) PersistentQueryControllerClient(String who, com.fishlib.io.logger.Logger log, io.deephaven.shadow.core.io.grpc.ManagedChannel channel, ScheduledExecutorService executorService, AuthenticationClient authClient) PersistentQueryControllerClient(String who, com.fishlib.io.logger.Logger log, io.deephaven.shadow.core.io.grpc.ManagedChannel channel, ScheduledExecutorService executorService, AuthenticationClient authClient, long heartBeatPeriodMillis, long heartBeatTimeoutMillis) PersistentQueryControllerClient(String who, com.fishlib.io.logger.Logger log, io.deephaven.shadow.core.io.grpc.ManagedChannel channel, ScheduledExecutorService executorService, TokenFactoryFactory.TokenFactory tokenFactory) PersistentQueryControllerClient(String who, com.fishlib.io.logger.Logger log, io.deephaven.shadow.core.io.grpc.ManagedChannel channel, ScheduledExecutorService executorService, TokenFactoryFactory.TokenFactory tokenFactory, long heartBeatPeriodMillis, long heartBeatTimeoutMillis) -
Method Summary
Modifier and TypeMethodDescriptionlongAdds a configuration to the controller's hash table.voidaddReloadConfigurationListener(Consumer<PersistentQueryControllerConfiguration> reloadListener) voidAdd a status listener.booleanauthenticate(AuthToken token) Use the specified auth token to authenticate this client to the hashtable server.determineDispatcher(PersistentQueryDbServerConfig serverConfig, int heapSizeMB, String workerKind) determineDispatcher(String serverConfigName, int heapSizeMB, String workerKind) String[]Returns the list of all groups.String[]Returns the list of all users.getControllerClient(com.fishlib.io.logger.Logger log) getControllerClient(com.fishlib.io.logger.Logger log, boolean doSubscription) getControllerClient(String who, com.fishlib.io.logger.Logger log) getControllerClient(String who, com.fishlib.io.logger.Logger log, boolean doSubscription) getControllerClient(String who, com.fishlib.io.logger.Logger log, boolean doSubscription, TokenFactoryFactory tokenFactoryFactory) String[]getGroupsForUser(UserContext userContext) Return the groups which a user belongs to.static io.deephaven.shadow.core.io.grpc.ManagedChannelgetManagedChannel(String who, com.fishlib.io.logger.Logger log) static io.deephaven.shadow.core.io.grpc.ManagedChannelgetManagedChannel(String who, com.fishlib.io.logger.Logger log, String resolver) static io.deephaven.shadow.core.io.grpc.ManagedChannelgetManagedChannelForEnvoy(String who, com.fishlib.io.logger.Logger log) getPersistentQueryConfiguration(long configSerial) getPersistentQueryConfiguration(long configSerial, String owner, String name) getPersistentQueryConfiguration(String owner, String name) getScriptBody(boolean relative, long configSerial, String scriptPath, String scriptLoaderStateJson) Get a script by path for a specific serial ID and a specific state.getScriptBody(boolean relative, String scriptPath, String scriptLoaderStateJson) Get a script by path and state.getScriptBodyByOwner(boolean relative, String scriptPath, String ownerName, String scriptLoaderStateJson) Get a script by path for a specific owner and state.getScriptDisplayPaths(long configSerial, String scriptLoaderState) Get all display paths available to a specific PersistentQuery serial ID and a specific state.getScriptDisplayPaths(String scriptLoaderStateJson) Get all available display paths for a specific state.getScriptDisplayPathsByOwner(String ownerName, String scriptLoaderStateJson) Get all display paths available to a specific owner and state.getScriptRelativePaths(String scriptLoaderStateJson) Get all available relative paths for a specific state.getScriptRelativePathsByOwner(String ownerName, String scriptLoaderStateJson) Get all relative paths available to a specific owner and state.Gets the server configuration from the controller.String[]getUsersForGroup(String group) Return the users which belong to a group.booleanisAclEditor(UserContext userContext) Returns true if the effective user is an ACL editorbooleanCheck if this client can communicate with the server.booleanisQueryManager(UserContext userContext) Returns true if the effective user is an Query ManagerbooleanisSchemaManager(UserContext userContext) Returns true if the effective user is a Schema managerbooleanisSuperUser(UserContext userContext) Returns true if the effective user is a superuser.voidModifies a configuration in the controller's hash table, and restart the query if it was running.voidmodifyQueryConfiguration(PersistentQueryConfiguration config, boolean restartIfRunning) Modifies a configuration in the controller's hash table.voidpublishTemporaryQueries(com.fishlib.io.logger.Logger log, PersistentQueryConfiguration... configs) voidReloads the controller configuration.voidRemoves a configuration from the controller's hash table.voidremoveQueryConfigurationBySerial(long serialId) Removes a configuration from the controller's hash table by serial ID.voidvoidvoidrestartQueries(List<PersistentQueryConfiguration> configs) Restarts one or more persistent queries.voidrestartQueriesBySerial(long[] serialIds) Restarts one or more persistent queries.voidrestartQueriesBySerial(List<Long> serials) Restarts one or more persistent queries.voidRestart a persistent query.voidrestartReplicas(List<ReplicaSpecifier> replicas) selectionProviderAdmin(String command) Executes an admin command on the given server.Gets the information for the desired selection provider.voidSet the channel as ephemeral.voidshutdown()voidstopQueries(List<PersistentQueryConfiguration> configs) Stops one or more persistent queries.voidStops a persistent query.voidstopQueryBySerial(long[] serials) Stops one or more persistent query by serial id.voidstopQueryBySerial(List<Long> serials) voidSubscribe to the complete hash table.voidMethods inherited from class com.illumon.iris.controller.ControllerHashtable
addEventHandler, addEventHandlerAndGetData, clear, containsKey, containsValue, entrySet, get, getData, isEmpty, keySet, notifyHandlers, put, putAll, remove, removeEventHandler, size, valuesMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAllMethods inherited from interface com.illumon.iris.controller.PersistentQueryScriptSource
getScriptBody, getScriptBody, getScriptBody, getScriptBody, getScriptDisplayPaths, getScriptDisplayPaths, getScriptDisplayPaths, getScriptDisplayPathsMethods inherited from interface com.illumon.iris.controller.RemoteScriptSource
getScriptBody, getScriptBodyByOwner, getScriptDisplayPaths, getScriptDisplayPathsByOwner, getScriptRelativePaths, getScriptRelativePathsByOwner
-
Field Details
-
DEFAULT_HEARTBEAT_PERIOD_MILLIS
public static final long DEFAULT_HEARTBEAT_PERIOD_MILLIS -
DEFAULT_HEARTBEAT_TIMEOUT_MILLIS
public static final long DEFAULT_HEARTBEAT_TIMEOUT_MILLIS -
log
protected final com.fishlib.io.logger.Logger log -
grpcClient
-
-
Constructor Details
-
PersistentQueryControllerClient
public PersistentQueryControllerClient(@NotNull String who, @NotNull com.fishlib.io.logger.Logger log, @NotNull io.deephaven.shadow.core.io.grpc.ManagedChannel channel) -
PersistentQueryControllerClient
public PersistentQueryControllerClient(@NotNull String who, @NotNull com.fishlib.io.logger.Logger log, @NotNull io.deephaven.shadow.core.io.grpc.ManagedChannel channel, @NotNull ScheduledExecutorService executorService) -
PersistentQueryControllerClient
public PersistentQueryControllerClient(@NotNull String who, @NotNull com.fishlib.io.logger.Logger log, @NotNull io.deephaven.shadow.core.io.grpc.ManagedChannel channel, @NotNull ScheduledExecutorService executorService, long heartBeatPeriodMillis, long heartBeatTimeoutMillis) -
PersistentQueryControllerClient
public PersistentQueryControllerClient(@NotNull String who, @NotNull com.fishlib.io.logger.Logger log, @NotNull io.deephaven.shadow.core.io.grpc.ManagedChannel channel, @NotNull ScheduledExecutorService executorService, @NotNull AuthenticationClient authClient) -
PersistentQueryControllerClient
public PersistentQueryControllerClient(@NotNull String who, @NotNull com.fishlib.io.logger.Logger log, @NotNull io.deephaven.shadow.core.io.grpc.ManagedChannel channel, @NotNull ScheduledExecutorService executorService, @NotNull AuthenticationClient authClient, long heartBeatPeriodMillis, long heartBeatTimeoutMillis) -
PersistentQueryControllerClient
public PersistentQueryControllerClient(@NotNull String who, @NotNull com.fishlib.io.logger.Logger log, @NotNull io.deephaven.shadow.core.io.grpc.ManagedChannel channel, @NotNull TokenFactoryFactory.TokenFactory tokenFactory) -
PersistentQueryControllerClient
public PersistentQueryControllerClient(@NotNull String who, @NotNull com.fishlib.io.logger.Logger log, @NotNull io.deephaven.shadow.core.io.grpc.ManagedChannel channel, @NotNull ScheduledExecutorService executorService, @NotNull TokenFactoryFactory.TokenFactory tokenFactory) -
PersistentQueryControllerClient
public PersistentQueryControllerClient(@NotNull String who, @NotNull com.fishlib.io.logger.Logger log, @NotNull io.deephaven.shadow.core.io.grpc.ManagedChannel channel, @NotNull ScheduledExecutorService executorService, @NotNull TokenFactoryFactory.TokenFactory tokenFactory, long heartBeatPeriodMillis, long heartBeatTimeoutMillis)
-
-
Method Details
-
addQueryConfiguration
Adds a configuration to the controller's hash table.- Parameters:
config- the configuration to add- Returns:
- the serial number of the added configuration
-
determineDispatcher
public PersistentQueryDbServerConfig determineDispatcher(@NotNull PersistentQueryDbServerConfig serverConfig, int heapSizeMB, String workerKind) -
determineDispatcher
public PersistentQueryDbServerConfig determineDispatcher(@NotNull String serverConfigName, int heapSizeMB, String workerKind) -
modifyQueryConfiguration
Modifies a configuration in the controller's hash table, and restart the query if it was running.- Parameters:
config- the updated configuration
-
modifyQueryConfiguration
public void modifyQueryConfiguration(@NotNull PersistentQueryConfiguration config, boolean restartIfRunning) Modifies a configuration in the controller's hash table.- Parameters:
config- the updated configurationrestartIfRunning- restart the query when it is running if set to true
-
removeQueryConfiguration
Removes a configuration from the controller's hash table.- Parameters:
config- the configuration to remove
-
removeQueryConfigurationBySerial
public void removeQueryConfigurationBySerial(long serialId) Removes a configuration from the controller's hash table by serial ID.- Parameters:
serialId- the serial ID of configuration to remove
-
restartQuery
Restart a persistent query. This implementation delegates torestartQueries(List))}.- Parameters:
config- the persistent query configuration to be restarted.
-
restartQueries
Restarts one or more persistent queries.- Parameters:
configs- the persistent query configurations to be restarted
-
restartReplicas
-
restartQueriesBySerial
public void restartQueriesBySerial(@NotNull long[] serialIds) Restarts one or more persistent queries.- Parameters:
serialIds- an array of serial ids to restart
-
restartQueriesBySerial
Restarts one or more persistent queries.- Parameters:
serials- a list of serial ids to restart
-
stopQuery
Stops a persistent query.- Parameters:
config- the persistent query configuration to be stopped.
-
stopQueries
Stops one or more persistent queries.- Parameters:
configs- the persistent query configurations to be stopped
-
stopQueryBySerial
public void stopQueryBySerial(@NotNull long[] serials) Stops one or more persistent query by serial id.- Parameters:
serials- the serial ids of the persistent query configurations to be stopped
-
stopQueryBySerial
-
reloadConfiguration
public void reloadConfiguration()Reloads the controller configuration.
This function causes the PersistentQueryController to reload parts of its configuration without requiring a controller restart. The controller will broadcast the updated configuration to all connected clients.
Note that not all properties or configuration parameters may be reloaded. -
selectionProviderStatus
Gets the information for the desired selection provider. -
selectionProviderAdmin
Executes an admin command on the given server. -
getServerConfiguration
Gets the server configuration from the controller.- Returns:
- the currently loaded controller configuration
-
getScriptDisplayPathsByOwner
public Set<String> getScriptDisplayPathsByOwner(@NotNull String ownerName, @Nullable String scriptLoaderStateJson) Description copied from interface:RemoteScriptSourceGet all display paths available to a specific owner and state.- Specified by:
getScriptDisplayPathsByOwnerin interfaceRemoteScriptSource- Parameters:
ownerName- A specific user.scriptLoaderStateJson- The JSON encoded state produced byScriptPathLoaderState.encodeJSON()to get paths from or null to get the latest version.- Returns:
- The paths available to ownerName.
-
getScriptDisplayPaths
Description copied from interface:RemoteScriptSourceGet all available display paths for a specific state.- Specified by:
getScriptDisplayPathsin interfaceRemoteScriptSource- Parameters:
scriptLoaderStateJson- The JSON encoded state produced byScriptPathLoaderState.encodeJSON()to get paths from or null to get the latest version.- Returns:
- All display paths.
-
getScriptDisplayPaths
@NotNull public Set<String> getScriptDisplayPaths(long configSerial, @Nullable String scriptLoaderState) Description copied from interface:PersistentQueryScriptSourceGet all display paths available to a specific PersistentQuery serial ID and a specific state.- Specified by:
getScriptDisplayPathsin interfacePersistentQueryScriptSource- Parameters:
configSerial- the query serialscriptLoaderState- an optional loader state- Returns:
- The paths available to the serial ID.
-
getScriptRelativePaths
Description copied from interface:RemoteScriptSourceGet all available relative paths for a specific state.- Specified by:
getScriptRelativePathsin interfaceRemoteScriptSource- Parameters:
scriptLoaderStateJson- The JSON encoded state produced byScriptPathLoaderState.encodeJSON()to get paths from or null to get the latest version.- Returns:
- All relative paths.
-
getScriptRelativePathsByOwner
public Set<String> getScriptRelativePathsByOwner(@NotNull String ownerName, @Nullable String scriptLoaderStateJson) Description copied from interface:RemoteScriptSourceGet all relative paths available to a specific owner and state.- Specified by:
getScriptRelativePathsByOwnerin interfaceRemoteScriptSource- Parameters:
ownerName- A specific user.scriptLoaderStateJson- The JSON encoded state produced byScriptPathLoaderState.encodeJSON()to get paths from or null to get the latest version.- Returns:
- The paths available to ownerName.
-
getScriptBody
public String getScriptBody(boolean relative, @NotNull String scriptPath, @Nullable String scriptLoaderStateJson) Description copied from interface:RemoteScriptSourceGet a script by path and state.- Specified by:
getScriptBodyin interfaceRemoteScriptSource- Parameters:
relative- Is the path a relative path?scriptPath- The path string.scriptLoaderStateJson- The JSON encoded state produced byScriptPathLoaderState.encodeJSON()to get the script from or null to get the latest version.- Returns:
- The contents of the script.
-
getScriptBody
@Nullable public String getScriptBody(boolean relative, long configSerial, @NotNull String scriptPath, @Nullable String scriptLoaderStateJson) Description copied from interface:PersistentQueryScriptSourceGet a script by path for a specific serial ID and a specific state.- Specified by:
getScriptBodyin interfacePersistentQueryScriptSource- Parameters:
relative- Is the path a relative path?configSerial- The Serial ID.scriptPath- The path string.scriptLoaderStateJson- A specific state to retrieve scripts from orScriptPathLoaderState.NONEto get the latest version.- Returns:
- The contents of the script.
-
getScriptBodyByOwner
public String getScriptBodyByOwner(boolean relative, @NotNull String scriptPath, @NotNull String ownerName, @Nullable String scriptLoaderStateJson) Description copied from interface:RemoteScriptSourceGet a script by path for a specific owner and state.- Specified by:
getScriptBodyByOwnerin interfaceRemoteScriptSource- Parameters:
relative- Is the path a relative path?scriptPath- The path string.ownerName- The owner.scriptLoaderStateJson- The JSON encoded state produced byScriptPathLoaderState.encodeJSON()to get script from or null to get the latest version.- Returns:
- The contents of the script.
-
getGroupsForUser
Return the groups which a user belongs to.- Parameters:
userContext- the userContext to get membership for- Returns:
- an array of group names that the effective user belongs to
-
getUsersForGroup
Return the users which belong to a group.- Parameters:
group- the group to get membership for- Returns:
- an array of user names that belong to the group
-
isSuperUser
Returns true if the effective user is a superuser.- Parameters:
userContext- the usercontext to query- Returns:
- true if the user is a member of the iris-superusers group.
-
isAclEditor
Returns true if the effective user is an ACL editor- Parameters:
userContext- the usercontext to query- Returns:
- true if the user is a member of the iris-acleditors group.
-
isSchemaManager
Returns true if the effective user is a Schema manager- Parameters:
userContext- the usercontext to query- Returns:
- true if the user is a member of the iris-schemamanagers group.
-
isQueryManager
Returns true if the effective user is an Query Manager- Parameters:
userContext- the usercontext to query- Returns:
- true if the user is a member of the iris-querymanagers group.
-
getAllGroups
Returns the list of all groups.- Returns:
- an array of all group names
-
getAllUsers
Returns the list of all users.- Returns:
- an array of all user names
-
getPersistentQueryConfiguration
-
getPersistentQueryConfiguration
public PersistentQueryConfiguration getPersistentQueryConfiguration(@NotNull String owner, @NotNull String name) -
getPersistentQueryConfiguration
public PersistentQueryConfiguration getPersistentQueryConfiguration(long configSerial, @Nullable String owner, @Nullable String name) -
publishTemporaryQueries
public void publishTemporaryQueries(@NotNull com.fishlib.io.logger.Logger log, @NotNull PersistentQueryConfiguration... configs) -
updateQueryStatus
- Throws:
IOException
-
getControllerClient
@NotNull public static PersistentQueryControllerClient getControllerClient(@NotNull com.fishlib.io.logger.Logger log) -
getControllerClient
@NotNull public static PersistentQueryControllerClient getControllerClient(@NotNull com.fishlib.io.logger.Logger log, boolean doSubscription) -
getControllerClient
@NotNull public static PersistentQueryControllerClient getControllerClient(@NotNull String who, @NotNull com.fishlib.io.logger.Logger log) -
getControllerClient
@NotNull public static PersistentQueryControllerClient getControllerClient(@NotNull String who, @NotNull com.fishlib.io.logger.Logger log, boolean doSubscription) -
getControllerClient
@NotNull public static PersistentQueryControllerClient getControllerClient(@NotNull String who, @NotNull com.fishlib.io.logger.Logger log, boolean doSubscription, @NotNull TokenFactoryFactory tokenFactoryFactory) -
getManagedChannel
public static io.deephaven.shadow.core.io.grpc.ManagedChannel getManagedChannel(@NotNull String who, @NotNull com.fishlib.io.logger.Logger log) -
getManagedChannel
-
getManagedChannelForEnvoy
public static io.deephaven.shadow.core.io.grpc.ManagedChannel getManagedChannelForEnvoy(@NotNull String who, @NotNull com.fishlib.io.logger.Logger log) -
addServiceStatusListener
Add a status listener. If the service is already available, the listener will be invoked immediately on the thread pool.- Parameters:
listener- the listener to add
-
removeServiceStatusListener
-
addReloadConfigurationListener
public void addReloadConfigurationListener(Consumer<PersistentQueryControllerConfiguration> reloadListener) -
removeReloadConfigurationListener
public void removeReloadConfigurationListener(@NotNull Consumer<PersistentQueryControllerConfiguration> reloadListener) -
isConnected
public boolean isConnected()Check if this client can communicate with the server.- Returns:
- true if it can
-
authenticate
Use the specified auth token to authenticate this client to the hashtable server.- Parameters:
token- the token for authentication- Returns:
- true if authentication was successful.
-
subscribeToAll
public void subscribeToAll()Subscribe to the complete hash table. -
shutdown
- Throws:
IOException
-
setEphemeral
public void setEphemeral()Set the channel as ephemeral. In this mode when a heartbeat is missed, the client halts further heartbeats, ends any active grpc stream, and generates no further connection events.
-