# Class ObserverZooKeeperServer

java.lang.Object
org.apache.zookeeper.server.ZooKeeperServer
org.apache.zookeeper.server.quorum.QuorumZooKeeperServer
org.apache.zookeeper.server.quorum.LearnerZooKeeperServer
org.apache.zookeeper.server.quorum.ObserverZooKeeperServer

All Implemented Interfaces:
  `ServerStats.Provider, SessionTracker.SessionExpirer`

public class ObserverZooKeeperServer extends LearnerZooKeeperServer
A ZooKeeperServer for the Observer node type. Not much is different, but we anticipate specializing the request processors in the future.

## Nested Class Summary

### Nested classes/interfaces inherited from class ZooKeeperServer

`ZooKeeperServer.MissingSessionException, ZooKeeperServer.State`

## Field Summary

### Fields inherited from class LearnerZooKeeperServer

`commitProcessor, syncProcessor`

### Fields inherited from class QuorumZooKeeperServer

`self, upgradeableSessionTracker`

### Fields inherited from class ZooKeeperServer

`ALLOW_SASL_FAILED_CLIENTS, CLOSE_SESSION_TXN_ENABLED, DEFAULT_STARTING_BUFFER_SIZE, DEFAULT_THROTTLED_OP_WAIT_TIME, DEFAULT_TICK_TIME, ENABLE_EAGER_ACL_CHECK, ENFORCE_QUOTA, enforceQuota, firstProcessor, GET_CHILDREN_RESPONSE_CACHE_SIZE, GET_DATA_RESPONSE_CACHE_SIZE, GLOBAL_OUTSTANDING_LIMIT, initialConfig, INT_BUFFER_STARTING_SIZE_BYTES, intBufferStartingSizeBytes, jmxDataTreeBean, jmxServerBean, jvmPauseMonitor, listenBacklog, maxSessionTimeout, minSessionTimeout, ok, reconfigEnabled, SASL_SUPER_USER, secureServerCnxnFactory, serverCnxnFactory, sessionTracker, SKIP_ACL, SNAP_COUNT, state, throttledOpWaitTime, tickTime, ZOOKEEPER_DIGEST_ENABLED, ZOOKEEPER_SERIALIZE_LAST_PROCESSED_ZXID_ENABLED`

## Method Summary

Modifier and Type
Method
Description
`void`
`commitRequest(Request request)`
Unlike a Follower, which sees a full request only during the PROPOSAL phase, Observers get all the data required with the INFORM packet.
`void`
`dumpMonitorValues(BiConsumer<String,Object> response)`
Hook into admin server, useful to expose additional data that do not represent metrics.
`Learner`
`getLearner()`
Abstract method to return the learner associated with this server.
`Observer`
`getObserver()`
`String`
`getState()`
`protected void`
`setupRequestProcessors()`
Set up the request processors for an Observer: firstProcesor->commitProcessor->finalProcessor
`void`
`sync()`

### Methods inherited from class LearnerZooKeeperServer

`createSessionTracker, getServerId, getTouchSnapshot, registerJMX, registerJMX, revalidateSession, shutdownComponents, unregisterJMX, unregisterJMX`

### Methods inherited from class QuorumZooKeeperServer

`checkUpgradeSession, dumpConf, registerMetrics, setLocalSessionFlag, setState, startSessionTracker, unregisterMetrics, upgrade`

### Methods inherited from class ZooKeeperServer

`authWriteRequest, checkACL, checkPasswd, checkQuota, checkRequestSizeWhenReceivingMessage, closeSession, closeSession, connThrottle, createRequestThrottler, decInProcess, dumpEphemerals, enqueueRequest, expire, expire, finishSessionInit, getClientPort, getClientPortListenBacklog, getConf, getConnectionDropChance, getDataDirSize, getEphemerals, getGetChildrenResponseCache, getGlobalOutstandingLimit, getInflight, getInitialConfig, getInProcess, getLargeRequestBytes, getLargeRequestMaxBytes, getLargeRequestThreshold, getLastProcessedZxid, getLogDirSize, getMaxClientCnxnsPerHost, getMaxSessionTimeout, getMinSessionTimeout, getNumAliveConnections, getOutstandingHandshakeNum, getOutstandingRequests, getReadResponseCache, getRequestPathMetricsCollector, getSecureClientPort, getSecureServerCnxnFactory, getServerCnxnFactory, getSessionExpiryMap, getSessionTracker, getSnapCount, getSnapSizeInBytes, getThrottledOpWaitTime, getTickTime, getTxnLogElapsedSyncTime, getTxnLogFactory, getZKDatabase, getZkShutdownHandler, getZooKeeperServerListener, getZxid, incInProcess, isCloseSessionTxnEnabled, isDigestEnabled, isEnableEagerACLCheck, isReconfigEnabled, isResponseCachingEnabled, isRunning, isSerializeLastProcessedZxidEnabled, killSession, loadData, processConnectRequest, processPacket, processTxn, reopenSession, requestFinished, restoreFromSnapshot, serverStats, setClientPortListenBacklog, setCloseSessionTxnEnabled, setCreateSessionTrackerServerId, setDigestEnabled, setEnableEagerACLCheck, setLargeRequestMaxBytes, setLargeRequestThreshold, setMaxSessionTimeout, setMinSessionTimeout, setOwner, setResponseCachingEnabled, setSecureServerCnxnFactory, setSerializeLastProcessedZxidEnabled, setServerCnxnFactory, setThrottledOpWaitTime, setTickTime, setTxnLogFactory, setZKDatabase, setZxid, shouldForceWriteInitialSnapshotAfterLeaderElection, shouldThrottle, shutdown, shutdown, startdata, startJvmPauseMonitor, startRequestThrottler, startup, submitRequest, submitRequestNow, takeSnapshot, takeSnapshot, takeSnapshot, truncateLog, validateSession`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### getObserver

public Observer getObserver()

### getLearner

public Learner getLearner()
Description copied from class: `LearnerZooKeeperServer`
Abstract method to return the learner associated with this server. Since the Learner may change under our feet (when QuorumPeer reassigns it) we can't simply take a reference here. Instead, we need the subclasses to implement this.

Specified by:
  `getLearner` in class `LearnerZooKeeperServer`

### commitRequest

public void commitRequest(Request request)
Unlike a Follower, which sees a full request only during the PROPOSAL phase, Observers get all the data required with the INFORM packet. This method commits a request that has been unpacked by from an INFORM received from the Leader.

Parameters:
  `request` -

### setupRequestProcessors

protected void setupRequestProcessors()
Set up the request processors for an Observer: firstProcesor->commitProcessor->finalProcessor

Overrides:
  `setupRequestProcessors` in class `ZooKeeperServer`

### sync

public void sync()

### getState

public String getState()

Specified by:
  `getState` in interface `ServerStats.Provider`
Overrides:
  `getState` in class `ZooKeeperServer`

### dumpMonitorValues

public void dumpMonitorValues(BiConsumer<String,Object> response)
Description copied from class: `ZooKeeperServer`
Hook into admin server, useful to expose additional data that do not represent metrics.

Overrides:
  `dumpMonitorValues` in class `QuorumZooKeeperServer`
Parameters:
  `response` - a sink which collects the data.