Class RemoteQueryProcessor
java.lang.Object
com.illumon.iris.db.tables.remotequery.RemoteQueryProcessor
- All Implemented Interfaces:
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 ClassesModifier and TypeClassDescriptionstatic class
static enum
static interface
static final class
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic ThreadLocal<String>
static final String
Environment Variable Names - these are used externallystatic final String
static final String
static final String
static final String
static final String
static final boolean
If set to true, then persistent queries that are shared without specifying table ACLs "fail open" making it simple to shared PQ work product with others.static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final long
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
void
addTerminationHandler
(Runnable terminationHandler) boolean
int
For testing, it can be convenient to nuke all the connections to other workers.static void
exit
(int status) static io.deephaven.enterprise.dispatcher.client.DispatcherClient
initializeDispatcherClient
(io.deephaven.enterprise.dispatcher.client.IDispatcherStatusListener listener, com.fishlib.io.logger.Logger log) static io.deephaven.enterprise.dispatcher.client.WorkerDetails
initializeWorkerDetails
(io.deephaven.enterprise.dispatcher.client.DispatcherClient dispatcherClientV2, com.fishlib.io.logger.Logger log) boolean
isDone()
void
logTableAccessAuditEvent
(io.deephaven.enterprise.auth.UserContext userContext, String remoteHost, int remotePort, String namespace, String table, String details) void
logWidgetAccessAuditEvent
(io.deephaven.enterprise.auth.UserContext userContext, String remoteHost, int remotePort, String namespace, String table, String details) static void
void
possiblyLogWorkerAuditRecord
(String clientHost, int clientPort, io.deephaven.enterprise.auth.UserContext userContext, int id, String status, String details) void
removeTerminationHandler
(Runnable terminationHandler) void
boolean
static boolean
void
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
void
start
(CompletableFuture<io.deephaven.enterprise.auth.UserContext> userContextCompletableFuture, FutureTask<PermissionFilterProvider> permissionFilterProviderFutureTask) void
stop()
-
Field Details
-
ENVIRONMENT_KEY_ARTIFACT_USER
Environment Variable Names - these are used externally- See Also:
-
ENVIRONMENT_KEY_AUTHENTICATED_USER
- See Also:
-
ENVIRONMENT_KEY_WORKER_NONCE
- See Also:
-
ENVIRONMENT_KEY_PROCESS_INFO_ID
- See Also:
-
ENVIRONMENT_KEY_DISPATCHER_NAME
- See Also:
-
PROP_WORKER_ID
- See Also:
-
PROP_PROCESS_INFO_ID
- See Also:
-
PROP_INVOKER
- See Also:
-
PROP_USER_NAME
- See Also:
-
WORKER_NAME
-
WORKER_PROCESS_INFO_ID
-
WORKER_START_TIME
public static final long WORKER_START_TIME -
LOG_PERFORMANCE_DATA_PROP
- See Also:
-
REMOTE_QUERY_PROCESSOR_PROPERTY_PREFIX
- See Also:
-
clientHost
-
OPEN_SHARING_DEFAULT
public static final boolean OPEN_SHARING_DEFAULTIf set to true, then persistent queries that are shared without specifying table ACLs "fail open" making it simple to shared PQ work product with others. If set to false, then they fail closed and ACLs must be added to permit any sharing. -
PREEMPTIVE_SUBSCRIBE
public static final int PREEMPTIVE_SUBSCRIBE- See Also:
-
PREEMPTIVE_UNSUBSCRIBE
public static final int PREEMPTIVE_UNSUBSCRIBE- See Also:
-
PREEMPTIVE_UPDATE_COLUMNS
public static final int PREEMPTIVE_UPDATE_COLUMNS- See Also:
-
PREEMPTIVE_VIEWPORT_SUBSCRIBE
public static final int PREEMPTIVE_VIEWPORT_SUBSCRIBE- See Also:
-
PREEMPTIVE_VIEWPORT_UNSUBSCRIBE
public static final int PREEMPTIVE_VIEWPORT_UNSUBSCRIBE- See Also:
-
PREEMPTIVE_UPDATE_VIEWPORT
public static final int PREEMPTIVE_UPDATE_VIEWPORT- See Also:
-
PREEMPTIVE_UPDATE_VIEWPORT_AND_COLUMNS
public static final int PREEMPTIVE_UPDATE_VIEWPORT_AND_COLUMNS- See Also:
-
-
Method Details
-
auditTableAccess
public boolean auditTableAccess() -
getQueryDescription
-
initializeDispatcherClient
public static io.deephaven.enterprise.dispatcher.client.DispatcherClient initializeDispatcherClient(io.deephaven.enterprise.dispatcher.client.IDispatcherStatusListener listener, com.fishlib.io.logger.Logger log) -
initializeWorkerDetails
public static io.deephaven.enterprise.dispatcher.client.WorkerDetails initializeWorkerDetails(io.deephaven.enterprise.dispatcher.client.DispatcherClient dispatcherClientV2, com.fishlib.io.logger.Logger log) throws IOException - Throws:
IOException
-
start
public void start(CompletableFuture<io.deephaven.enterprise.auth.UserContext> userContextCompletableFuture, FutureTask<PermissionFilterProvider> permissionFilterProviderFutureTask) -
addTerminationHandler
-
removeTerminationHandler
-
stop
public void stop() -
isDone
public boolean isDone() -
requireAclsToExport
public boolean requireAclsToExport() -
getAllowedViewers
-
setHasTableAcls
public void setHasTableAcls() -
setVisibility
-
getWeepsOwner
-
getAdminGroups
-
getIrisGroupProvider
-
disconnectNonPrimaryConnections
public int disconnectNonPrimaryConnections()For testing, it can be convenient to nuke all the connections to other workers. You should not call this outside of a controlled testing environment. In particular, the CART has logic related to disconnects that is otherwise very difficult to generate suitable test events.
- Returns:
- the number of disconnected clients
-
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
-
addAtExit
-
exit
public static void exit(int status)
-