# Class LearnerZooKeeperServer

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

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

Direct Known Subclasses:
  `FollowerZooKeeperServer, ObserverZooKeeperServer`

public abstract class LearnerZooKeeperServer extends QuorumZooKeeperServer
Parent class for all ZooKeeperServers for Learners

## Nested Class Summary

### Nested classes/interfaces inherited from class ZooKeeperServer

`ZooKeeperServer.MissingSessionException, ZooKeeperServer.State`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected CommitProcessor`
`commitProcessor`
`protected SyncRequestProcessor`
`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, LOG, 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`

## Constructor Summary

Constructors
Constructor
Description
`LearnerZooKeeperServer(FileTxnSnapLog logFactory, int tickTime, int minSessionTimeout, int maxSessionTimeout, int listenBacklog, ZKDatabase zkDb, QuorumPeer self)`

## Method Summary

Modifier and Type
Method
Description
`void`
`createSessionTracker()`
`abstract Learner`
`getLearner()`
Abstract method to return the learner associated with this server.
`long`
`getServerId()`
Returns the id of the associated QuorumPeer, which will do for a unique id of this server.
`protected Map<Long,Integer>`
`getTouchSnapshot()`
Returns the current state of the session tracker.
`protected void`
`registerJMX()`
`void`
`registerJMX(ZooKeeperServerBean serverBean, LocalPeerBean localPeerBean)`
`protected void`
`revalidateSession(ServerCnxn cnxn, long sessionId, int sessionTimeout)`
`protected void`
`shutdownComponents()`
`protected void`
`unregisterJMX()`
`protected void`
`unregisterJMX(Learner peer)`

### Methods inherited from class QuorumZooKeeperServer

`checkUpgradeSession, dumpConf, dumpMonitorValues, 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, getState, 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, setupRequestProcessors, 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`

## Field Details

### commitProcessor

protected CommitProcessor commitProcessor

### syncProcessor

protected SyncRequestProcessor syncProcessor

## Constructor Details

### LearnerZooKeeperServer

public LearnerZooKeeperServer(FileTxnSnapLog logFactory, int tickTime, int minSessionTimeout, int maxSessionTimeout, int listenBacklog, ZKDatabase zkDb, QuorumPeer self) throws IOException

Throws:
  `IOException`

## Method Details

### getLearner

public abstract Learner getLearner()
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.

### getTouchSnapshot

protected Map<Long,Integer> getTouchSnapshot()
Returns the current state of the session tracker. This is only currently used by a Learner to build a ping response packet.

### getServerId

public long getServerId()
Returns the id of the associated QuorumPeer, which will do for a unique id of this server.

Specified by:
  `getServerId` in interface `SessionTracker.SessionExpirer`
Overrides:
  `getServerId` in class `ZooKeeperServer`

### createSessionTracker

public void createSessionTracker()

Overrides:
  `createSessionTracker` in class `ZooKeeperServer`

### revalidateSession

protected void revalidateSession(ServerCnxn cnxn, long sessionId, int sessionTimeout) throws IOException

Overrides:
  `revalidateSession` in class `ZooKeeperServer`
Throws:
  `IOException`

### registerJMX

protected void registerJMX()

Overrides:
  `registerJMX` in class `ZooKeeperServer`

### registerJMX

public void registerJMX(ZooKeeperServerBean serverBean, LocalPeerBean localPeerBean)

### unregisterJMX

protected void unregisterJMX()

Overrides:
  `unregisterJMX` in class `ZooKeeperServer`

### unregisterJMX

protected void unregisterJMX(Learner peer)

### shutdownComponents

protected void shutdownComponents()

Overrides:
  `shutdownComponents` in class `ZooKeeperServer`