Class ServerCnxn

java.lang.Object
org.apache.zookeeper.server.ServerCnxn
All Implemented Interfaces:
ServerWatcher, Watcher
Direct Known Subclasses:
DumbWatcher, NettyServerCnxn, NIOServerCnxn

public abstract class ServerCnxn extends Object implements ServerWatcher
Interface to a Server connection - represents a connection from a client to the server.
  • Field Details

    • me

      public static final Object me
    • protocolManager

      public final ProtocolManager protocolManager
    • zooKeeperSaslServer

      protected ZooKeeperSaslServer zooKeeperSaslServer
    • established

      protected final Date established
    • packetsReceived

      protected final AtomicLong packetsReceived
    • packetsSent

      protected final AtomicLong packetsSent
    • minLatency

      protected long minLatency
    • maxLatency

      protected long maxLatency
    • lastOp

      protected String lastOp
    • lastCxid

      protected long lastCxid
    • lastZxid

      protected long lastZxid
    • lastResponseTime

      protected long lastResponseTime
    • lastLatency

      protected long lastLatency
    • count

      protected long count
    • totalLatency

      protected long totalLatency
    • disconnectReason

      protected ServerCnxn.DisconnectReason disconnectReason
  • Constructor Details

  • Method Details

    • incrOutstandingAndCheckThrottle

      public void incrOutstandingAndCheckThrottle(RequestHeader h)
    • decrOutstandingAndCheckThrottle

      public void decrOutstandingAndCheckThrottle(ReplyHeader h)
    • close

      public abstract void close(ServerCnxn.DisconnectReason reason)
    • sendResponse

      public abstract int sendResponse(ReplyHeader h, Record r, String tag, String cacheKey, Stat stat, int opCode) throws IOException
      Serializes a ZooKeeper response and enqueues it for sending. Serializes client response parts and enqueues them into outgoing queue. If both cache key and last modified zxid are provided, the serialized response is caсhed under the provided key, the last modified zxid is stored along with the value. A cache entry is invalidated if the provided last modified zxid is more recent than the stored one. Attention: this function is not thread safe, due to caching not being thread safe.
      Parameters:
      h - reply header
      r - reply payload, can be null
      tag - Jute serialization tag, can be null
      cacheKey - Key for caching the serialized payload. A null value prevents caching.
      stat - Stat information for the the reply payload, used for cache invalidation. A value of 0 prevents caching.
      opCode - The op code appertains to the corresponding request of the response, used to decide which cache (e.g. read response cache, list of children response cache, ...) object to look up to when applicable.
      Throws:
      IOException
    • sendResponse

      public int sendResponse(ReplyHeader h, Record r, String tag) throws IOException
      Throws:
      IOException
    • serializeRecord

      protected byte[] serializeRecord(Record record) throws IOException
      Throws:
      IOException
    • serialize

      protected ByteBuffer[] serialize(ReplyHeader h, Record r, String tag, String cacheKey, Stat stat, int opCode) throws IOException
      Throws:
      IOException
    • sendCloseSession

      public abstract void sendCloseSession()
    • process

      public void process(WatchedEvent event)
      Specified by:
      process in interface Watcher
    • process

      public abstract void process(WatchedEvent event, List<ACL> znodeAcl)
      Specified by:
      process in interface ServerWatcher
    • getSessionId

      public abstract long getSessionId()
    • getAuthInfo

      public List<Id> getAuthInfo()
      auth info for the cnxn, returns an unmodifyable list
    • addAuthInfo

      public void addAuthInfo(Id id)
    • removeAuthInfo

      public boolean removeAuthInfo(Id id)
    • isStale

      public boolean isStale()
    • setStale

      public void setStale()
    • isInvalid

      public boolean isInvalid()
    • setInvalid

      public void setInvalid()
    • packetReceived

      protected void packetReceived(long bytes)
    • packetSent

      protected void packetSent()
    • serverStats

      protected abstract ServerStats serverStats()
    • resetStats

      public void resetStats()
    • incrPacketsReceived

      protected long incrPacketsReceived()
    • incrPacketsSent

      protected long incrPacketsSent()
    • updateStatsForResponse

      protected void updateStatsForResponse(long cxid, long zxid, String op, long start, long end)
    • getEstablished

      public Date getEstablished()
    • getOutstandingRequests

      public long getOutstandingRequests()
    • getPacketsReceived

      public long getPacketsReceived()
    • getPacketsSent

      public long getPacketsSent()
    • getMinLatency

      public long getMinLatency()
    • getAvgLatency

      public long getAvgLatency()
    • getMaxLatency

      public long getMaxLatency()
    • getLastOperation

      public String getLastOperation()
    • getLastCxid

      public long getLastCxid()
    • getLastZxid

      public long getLastZxid()
    • getLastResponseTime

      public long getLastResponseTime()
    • getLastLatency

      public long getLastLatency()
    • toString

      public String toString()
      Prints detailed stats information for the connection.
      Overrides:
      toString in class Object
      See Also:
    • getRemoteSocketAddress

      public abstract InetSocketAddress getRemoteSocketAddress()
    • getInterestOps

      public abstract int getInterestOps()
    • isSecure

      public abstract boolean isSecure()
    • getClientCertificateChain

      public abstract Certificate[] getClientCertificateChain()
    • setClientCertificateChain

      public abstract void setClientCertificateChain(Certificate[] chain)
    • dumpConnectionInfo

      public void dumpConnectionInfo(PrintWriter pwriter, boolean brief)
      Print information about the connection.
      Parameters:
      brief - iff true prints brief details, otw full detail
    • getConnectionInfo

      public Map<String,Object> getConnectionInfo(boolean brief)
    • cleanupWriterSocket

      public void cleanupWriterSocket(PrintWriter pwriter)
      clean up the socket related to a command and also make sure we flush the data before we do that
      Parameters:
      pwriter - the pwriter for a command socket
    • isZKServerRunning

      public boolean isZKServerRunning()
      Returns:
      true if the server is running, false otherwise.
    • getHostAddress

      public String getHostAddress()
      Returns the IP address or empty string.
    • getSessionIdHex

      public String getSessionIdHex()
      Get session id in hexadecimal notation.