Class RemoteQueryProcessor
java.lang.Object
com.illumon.iris.db.tables.remotequery.RemoteQueryProcessor
- All Implemented Interfaces:
UpdateErrorReporter
public class RemoteQueryProcessor extends Object implements UpdateErrorReporter
RemoteQueryProcessor is the class that runs workers.
Note: RemoteQueryProcessor acts as a client (ConnectionStatusHandler interface) to RemoteQueryDispatcher,
and as a server (CommandHandler interface) to RemoteQueryClient.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
RemoteQueryProcessor.Envelope
static class
RemoteQueryProcessor.Invoker
static interface
RemoteQueryProcessor.QueryClassNameProvider
static class
RemoteQueryProcessor.RedirectableIDispatcherStatusListener
-
Field Summary
Fields Modifier and Type Field Description static ThreadLocal<String>
clientHost
static String
ENVIRONMENT_KEY_ARTIFACT_USER
Environment Variable Names - these are used externallystatic String
ENVIRONMENT_KEY_AUTHENTICATED_USER
static String
ENVIRONMENT_KEY_DISPATCHER_NAME
static String
ENVIRONMENT_KEY_PROCESS_INFO_ID
static String
ENVIRONMENT_KEY_WORKER_NONCE
static String
LOG_PERFORMANCE_DATA_PROP
static int
PREEMPTIVE_SUBSCRIBE
static int
PREEMPTIVE_UNSUBSCRIBE
static int
PREEMPTIVE_UPDATE_COLUMNS
static int
PREEMPTIVE_UPDATE_VIEWPORT
static int
PREEMPTIVE_UPDATE_VIEWPORT_AND_COLUMNS
static int
PREEMPTIVE_VIEWPORT_SUBSCRIBE
static int
PREEMPTIVE_VIEWPORT_UNSUBSCRIBE
static String
PROP_INVOKER
static String
PROP_PROCESS_INFO_ID
static String
PROP_USER_NAME
static String
PROP_WORKER_ID
static String
REMOTE_QUERY_PROCESSOR_PROPERTY_PREFIX
static String
WORKER_NAME
static String
WORKER_PROCESS_INFO_ID
static long
WORKER_START_TIME
-
Constructor Summary
Constructors Constructor Description RemoteQueryProcessor(String serverName, int clientConnectionPort, int websocketPort, OnDiskQueryDatabase database, File classCacheDirectory, File[] additionalClassCacheDirs, IrisLogCreator logCreator, com.fishlib.io.logger.LogBuffer logBuffer, QueryOperationPerformanceLogFormat3Logger queryOperationPerformanceLogLogger, QueryPerformanceLogFormat2Logger queryPerformanceLogLogger, com.fishlib.auth.UserContext initialUserContext, com.illumon.iris.db.tables.remotequery.ForwardingRegistry forwardingRegistry, io.deephaven.enterprise.dispatcher.client.DispatcherClient dispatcherClient, WorkerDetails workerDetails)
-
Method Summary
Modifier and Type Method Description void
addTerminationHandler(Runnable terminationHandler)
boolean
auditTableAccess()
Set<String>
getAdminGroups()
IrisGroupProvider
getIrisGroupProvider()
String
getQueryDescription()
String
getWeepsOwner()
boolean
hasTableAcls()
boolean
isDone()
void
logTableAccessAuditEvent(com.fishlib.auth.UserContext userContext, String remoteHost, int remotePort, String namespace, String table, String details)
void
logWidgetAccessAuditEvent(com.fishlib.auth.UserContext userContext, String remoteHost, int remotePort, String namespace, String table, String details)
static void
main(String... args)
void
possiblyLogWorkerAuditRecord(String clientHost, int clientPort, com.fishlib.auth.UserContext userContext, int id, String status, String details)
void
removeTerminationHandler(Runnable terminationHandler)
void
reportUpdateError(Throwable t)
static boolean
serializingClientResult()
void
setHasTableAcls()
static void
setSerializeClientResult(boolean flag)
This shouldn't be used by external clients, but for unit testing purposes, we want to cause our serialization to behave as if we were operating across the remote query processor connection.void
setVisibility(String owner, Set<String> allowedViewers, Set<String> adminGroups)
void
start(CompletableFuture<com.fishlib.auth.UserContext> userContextCompletableFuture, FutureTask<PermissionFilterProvider> permissionFilterProviderFutureTask)
void
stop()
-
Field Details
-
ENVIRONMENT_KEY_ARTIFACT_USER
Environment Variable Names - these are used externally- See Also:
- Constant Field Values
-
ENVIRONMENT_KEY_AUTHENTICATED_USER
- See Also:
- Constant Field Values
-
ENVIRONMENT_KEY_WORKER_NONCE
- See Also:
- Constant Field Values
-
ENVIRONMENT_KEY_PROCESS_INFO_ID
- See Also:
- Constant Field Values
-
ENVIRONMENT_KEY_DISPATCHER_NAME
- See Also:
- Constant Field Values
-
PROP_WORKER_ID
- See Also:
- Constant Field Values
-
PROP_PROCESS_INFO_ID
- See Also:
- Constant Field Values
-
PROP_INVOKER
- See Also:
- Constant Field Values
-
PROP_USER_NAME
- See Also:
- Constant Field Values
-
WORKER_NAME
-
WORKER_PROCESS_INFO_ID
-
WORKER_START_TIME
public static final long WORKER_START_TIME -
LOG_PERFORMANCE_DATA_PROP
- See Also:
- Constant Field Values
-
REMOTE_QUERY_PROCESSOR_PROPERTY_PREFIX
- See Also:
- Constant Field Values
-
clientHost
-
PREEMPTIVE_SUBSCRIBE
public static final int PREEMPTIVE_SUBSCRIBE- See Also:
- Constant Field Values
-
PREEMPTIVE_UNSUBSCRIBE
public static final int PREEMPTIVE_UNSUBSCRIBE- See Also:
- Constant Field Values
-
PREEMPTIVE_UPDATE_COLUMNS
public static final int PREEMPTIVE_UPDATE_COLUMNS- See Also:
- Constant Field Values
-
PREEMPTIVE_VIEWPORT_SUBSCRIBE
public static final int PREEMPTIVE_VIEWPORT_SUBSCRIBE- See Also:
- Constant Field Values
-
PREEMPTIVE_VIEWPORT_UNSUBSCRIBE
public static final int PREEMPTIVE_VIEWPORT_UNSUBSCRIBE- See Also:
- Constant Field Values
-
PREEMPTIVE_UPDATE_VIEWPORT
public static final int PREEMPTIVE_UPDATE_VIEWPORT- See Also:
- Constant Field Values
-
PREEMPTIVE_UPDATE_VIEWPORT_AND_COLUMNS
public static final int PREEMPTIVE_UPDATE_VIEWPORT_AND_COLUMNS- See Also:
- Constant Field Values
-
-
Constructor Details
-
RemoteQueryProcessor
public RemoteQueryProcessor(String serverName, int clientConnectionPort, int websocketPort, OnDiskQueryDatabase database, File classCacheDirectory, File[] additionalClassCacheDirs, IrisLogCreator logCreator, com.fishlib.io.logger.LogBuffer logBuffer, QueryOperationPerformanceLogFormat3Logger queryOperationPerformanceLogLogger, QueryPerformanceLogFormat2Logger queryPerformanceLogLogger, com.fishlib.auth.UserContext initialUserContext, com.illumon.iris.db.tables.remotequery.ForwardingRegistry forwardingRegistry, io.deephaven.enterprise.dispatcher.client.DispatcherClient dispatcherClient, WorkerDetails workerDetails) throws IOException- Throws:
IOException
-
-
Method Details
-
auditTableAccess
public boolean auditTableAccess() -
getQueryDescription
-
start
public void start(CompletableFuture<com.fishlib.auth.UserContext> userContextCompletableFuture, FutureTask<PermissionFilterProvider> permissionFilterProviderFutureTask) throws IOException- Throws:
IOException
-
addTerminationHandler
-
removeTerminationHandler
-
stop
public void stop() -
isDone
public boolean isDone() -
hasTableAcls
public boolean hasTableAcls() -
setHasTableAcls
public void setHasTableAcls() -
setVisibility
-
getWeepsOwner
-
getAdminGroups
-
getIrisGroupProvider
-
setSerializeClientResult
public static void setSerializeClientResult(boolean flag)This shouldn't be used by external clients, but for unit testing purposes, we want to cause our serialization to behave as if we were operating across the remote query processor connection. -
serializingClientResult
public static boolean serializingClientResult() -
reportUpdateError
- Specified by:
reportUpdateError
in interfaceUpdateErrorReporter
-
possiblyLogWorkerAuditRecord
-
logTableAccessAuditEvent
-
logWidgetAccessAuditEvent
-
main
-