Class RequestHandler

java.lang.Object
com.couchbase.client.core.RequestHandler
All Implemented Interfaces:
com.lmax.disruptor.EventHandler<RequestEvent>

public class RequestHandler
extends Object
implements com.lmax.disruptor.EventHandler<RequestEvent>
The RequestHandler is responsible for adding and removing Nodes as well as dispatching Service management operations. Its main purpose though is to receive incoming CouchbaseRequests and dispatch them to the appropriate Nodes.
Since:
1.0
Author:
Michael Nitschinger
  • Constructor Details

  • Method Details

    • onEvent

      public void onEvent​(RequestEvent event, long sequence, boolean endOfBatch) throws Exception
      Specified by:
      onEvent in interface com.lmax.disruptor.EventHandler<RequestEvent>
      Throws:
      Exception
    • checkFeaturesForRequest

      protected void checkFeaturesForRequest​(CouchbaseRequest request, BucketConfig config)
      Checks, for a sub-set of CouchbaseRequest, if the current environment has the necessary feature activated. If not, throws an ServiceNotAvailableException.
      Parameters:
      request - the request to check.
      Throws:
      ServiceNotAvailableException - if the request type needs a particular feature which isn't activated.
    • addNode

      public rx.Observable<LifecycleState> addNode​(String hostname, String alternate)
      Add a Node identified by its hostname.
      Parameters:
      hostname - the hostname of the node.
      Returns:
      the states of the node (most probably LifecycleState.CONNECTED).
    • removeNode

      public rx.Observable<LifecycleState> removeNode​(String hostname)
      Remove a Node identified by its hostname.
      Parameters:
      hostname - the hostname of the node.
      Returns:
      the states of the node (most probably LifecycleState.DISCONNECTED).
    • addService

      public rx.Observable<Service> addService​(AddServiceRequest request)
      Add the service to the node.
      Parameters:
      request - the request which contains infos about the service and node to add.
      Returns:
      an observable which contains the newly created service.
    • removeService

      public rx.Observable<Service> removeService​(RemoveServiceRequest request)
      Remove a service from a node.
      Parameters:
      request - the request which contains infos about the service and node to remove.
      Returns:
      an observable which contains the removed service.
    • nodeBy

      public Node nodeBy​(String hostname)
      Returns the node by its hostname.
      Parameters:
      hostname - the hostname of the node.
      Returns:
      the node or null if no hostname for that ip address.
    • locator

      protected Locator locator​(CouchbaseRequest request)
      Helper method to detect the correct locator for the given request type.
      Returns:
      the locator for the given request type.
    • diagnostics

      public rx.Observable<DiagnosticsResponse> diagnostics​(String id)
      Performs the logistics of collecting and assembling the individual health check information on a per-service basis.
      Returns:
      an observable with the response once ready.
    • reconfigure

      public rx.Observable<ClusterConfig> reconfigure​(ClusterConfig config)
      Helper method which grabs the current configuration and checks if the node setup is out of sync. This method is always called when a new configuration arrives and it will try to sync the actual node and service setup with the one proposed by the configuration.