Class AgentRoutingServiceCuratorDiscoveryImpl

java.lang.Object
com.netflix.genie.web.agent.services.impl.AgentRoutingServiceCuratorDiscoveryImpl
All Implemented Interfaces:
AgentRoutingService

public class AgentRoutingServiceCuratorDiscoveryImpl extends Object implements AgentRoutingService
Implementation of AgentRoutingService that relies on Curator's Discovery extension. Rather than the traditional use of this recipe (register a service for the node itself, this class registers one service instance for each agent locally connected.
Since:
4.0.0
  • Constructor Details

    • AgentRoutingServiceCuratorDiscoveryImpl

      public AgentRoutingServiceCuratorDiscoveryImpl(GenieHostInfo genieHostInfo, org.apache.curator.x.discovery.ServiceDiscovery<AgentRoutingServiceCuratorDiscoveryImpl.Agent> serviceDiscovery, org.springframework.scheduling.TaskScheduler taskScheduler, org.apache.curator.framework.listen.Listenable<org.apache.curator.framework.state.ConnectionStateListener> listenableCuratorConnectionState, io.micrometer.core.instrument.MeterRegistry registry, AgentRoutingServiceProperties properties)
      Constructor.
      Parameters:
      genieHostInfo - The genie local host information
      serviceDiscovery - The service discovery client
      taskScheduler - The task scheduler
      listenableCuratorConnectionState - The listenable curator client connection status
      registry - The metrics registry
      properties - The service properties
  • Method Details

    • getHostnameForAgentConnection

      public Optional<String> getHostnameForAgentConnection(@NotBlank @NotBlank String jobId)
      Look up the hostname of the Genie node currently handling the agent connection for a given job.
      Specified by:
      getHostnameForAgentConnection in interface AgentRoutingService
      Parameters:
      jobId - the job id
      Returns:
      a boxed hostname string, empty if the connection for the given job id is not found
    • isAgentConnectionLocal

      public boolean isAgentConnectionLocal(@NotBlank @NotBlank String jobId)
      Tells whether the agent running a given job is connected to the local node.
      Specified by:
      isAgentConnectionLocal in interface AgentRoutingService
      Parameters:
      jobId - the job id
      Returns:
      true if the agent has an active connection to this node
    • handleClientConnected

      public void handleClientConnected(@NotBlank @NotBlank String jobId)
      Description copied from interface: AgentRoutingService
      Handle a new agent connection.
      Specified by:
      handleClientConnected in interface AgentRoutingService
      Parameters:
      jobId - the job id the connected agent is running
    • handleClientDisconnected

      public void handleClientDisconnected(@NotBlank @NotBlank String jobId)
      Description copied from interface: AgentRoutingService
      Handle connected agent disconnection.
      Specified by:
      handleClientDisconnected in interface AgentRoutingService
      Parameters:
      jobId - the job id the disconnected agent is running
    • isAgentConnected

      public boolean isAgentConnected(String jobId)
      Whether the agent executing a given job is currently connected.
      Specified by:
      isAgentConnected in interface AgentRoutingService
      Parameters:
      jobId - the job id
      Returns:
      true if an agent running the job is connected