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.
  • Field Details

    • ENVIRONMENT_KEY_ARTIFACT_USER

      public static final String ENVIRONMENT_KEY_ARTIFACT_USER
      Environment Variable Names - these are used externally
      See Also:
    • ENVIRONMENT_KEY_AUTHENTICATED_USER

      public static final String ENVIRONMENT_KEY_AUTHENTICATED_USER
      See Also:
    • ENVIRONMENT_KEY_WORKER_NONCE

      public static final String ENVIRONMENT_KEY_WORKER_NONCE
      See Also:
    • ENVIRONMENT_KEY_PROCESS_INFO_ID

      public static final String ENVIRONMENT_KEY_PROCESS_INFO_ID
      See Also:
    • ENVIRONMENT_KEY_DISPATCHER_NAME

      public static final String ENVIRONMENT_KEY_DISPATCHER_NAME
      See Also:
    • PROP_WORKER_ID

      public static final String PROP_WORKER_ID
      See Also:
    • PROP_PROCESS_INFO_ID

      public static final String PROP_PROCESS_INFO_ID
      See Also:
    • PROP_INVOKER

      public static final String PROP_INVOKER
      See Also:
    • PROP_USER_NAME

      public static final String PROP_USER_NAME
      See Also:
    • WORKER_NAME

      public static final String WORKER_NAME
    • WORKER_PROCESS_INFO_ID

      public static final String WORKER_PROCESS_INFO_ID
    • WORKER_START_TIME

      public static final long WORKER_START_TIME
    • LOG_PERFORMANCE_DATA_PROP

      public static final String LOG_PERFORMANCE_DATA_PROP
      See Also:
    • REMOTE_QUERY_PROCESSOR_PROPERTY_PREFIX

      public static final String REMOTE_QUERY_PROCESSOR_PROPERTY_PREFIX
      See Also:
    • clientHost

      public static ThreadLocal<String> clientHost
    • OPEN_SHARING_DEFAULT

      public static final boolean OPEN_SHARING_DEFAULT
      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. 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

      public String 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

      public void addTerminationHandler(Runnable terminationHandler)
    • removeTerminationHandler

      public void removeTerminationHandler(Runnable terminationHandler)
    • stop

      public void stop()
    • isDone

      public boolean isDone()
    • requireAclsToExport

      public boolean requireAclsToExport()
    • getAllowedViewers

      public Set<String> getAllowedViewers()
    • setHasTableAcls

      public void setHasTableAcls()
    • setVisibility

      public void setVisibility(String owner, Set<String> allowedViewers, Set<String> adminGroups)
    • getWeepsOwner

      public String getWeepsOwner()
    • getAdminGroups

      public Set<String> getAdminGroups()
    • getIrisGroupProvider

      public IrisGroupProvider 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

      public void reportUpdateError(Throwable t)
      Specified by:
      reportUpdateError in interface UpdateErrorReporter
    • possiblyLogWorkerAuditRecord

      public void possiblyLogWorkerAuditRecord(String clientHost, int clientPort, io.deephaven.enterprise.auth.UserContext userContext, int id, String status, String details)
    • logTableAccessAuditEvent

      public void logTableAccessAuditEvent(io.deephaven.enterprise.auth.UserContext userContext, String remoteHost, int remotePort, String namespace, String table, String details)
    • logWidgetAccessAuditEvent

      public void logWidgetAccessAuditEvent(io.deephaven.enterprise.auth.UserContext userContext, String remoteHost, int remotePort, String namespace, String table, String details)
    • main

      public static void main(String... args)
    • addAtExit

      public static void addAtExit(Runnable r)
    • exit

      public static void exit(int status)