org.mariadb.jdbc.internal.failover

## Class AbstractMastersSlavesListener

- java.lang.Object
- - org.mariadb.jdbc.internal.failover.AbstractMastersListener
  - - org.mariadb.jdbc.internal.failover.AbstractMastersSlavesListener

All Implemented Interfaces:
  Listener

Direct Known Subclasses:
  MastersSlavesListener

    public abstract class AbstractMastersSlavesListener
    extends AbstractMastersListener

### Field Summary

Fields
`protected AtomicReference<Protocol>` `waitNewMasterProtocol`
`protected AtomicReference<Protocol>` `waitNewSecondaryProtocol`

### Fields inherited from class org.mariadb.jdbc.internal.failover.AbstractMastersListener

`currentConnectionAttempts, currentProtocol, currentReadOnlyAsked, explicitClosed, globalInfo, lastQueryNanos, lastRetry, proxy, urlParser`

### Constructor Summary

Constructors
`protected` `AbstractMastersSlavesListener(UrlParser urlParser, GlobalStateInfo globalInfo)`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`abstract void` `foundActiveSecondary(Protocol newSecondaryProtocol)`
`SearchFilter` `getFilterForFailedHost()`
`long` `getSecondaryHostFailNanos()`
`HandleErrorResult` `handleFailover(SQLException qe, Method method, Object[] args, Protocol protocol)` Handle failover on master or slave connection.
`boolean` `hasHostFail()`
`boolean` `isMasterHostFailReconnect()`
`boolean` `isSecondaryHostFail()`
`boolean` `isSecondaryHostFailReconnect()`
`protected void` `resetMasterFailoverData()`
`protected void` `resetSecondaryFailoverData()`
`abstract HandleErrorResult` `secondaryFail(Method method, Object[] args, boolean killCmd)`
`boolean` `setSecondaryHostFail()` Set slave connection lost variables.

### Methods inherited from class org.mariadb.jdbc.internal.failover.AbstractMastersListener

`abortConnection, addToBlacklist, canRetryFailLoop, checkMasterStatus, clearBlacklist, closeConnection, getBlacklistKeys, getCatalog, getCurrentProtocol, getLastQueryNanos, getMajorServerVersion, getMasterHostFailNanos, getProxy, getRetriesAllDown, getTimeout, getUrlParser, handleFailLoop, initializeConnection, invoke, invoke, isAutoReconnect, isClosed, isExplicitClosed, isMasterConnection, isMasterHostFail, isQueryRelaunchable, isReadOnly, isValid, noBackslashEscapes, pingMasterProtocol, preAutoReconnect, preClose, preExecute, primaryFail, prolog, reconnect, reconnectFailedConnection, relaunchOperation, removeFromBlacklist, removeListenerFromSchedulers, resetOldsBlackListHosts, sessionStateAware, setMasterHostFail, setProxy, setSessionReadOnly, switchReadOnlyConnection, syncConnection, throwFailoverMessage, versionGreaterOrEqual`

### Methods inherited from class java.lang.Object

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

### Methods inherited from interface org.mariadb.jdbc.internal.failover.Listener

`foundActiveMaster, getServerThreadId, isMasterConnected, preAbort, rePrepareOnSlave, reset`

### Field Detail

#### waitNewSecondaryProtocol

    protected final AtomicReference<Protocol> waitNewSecondaryProtocol

#### waitNewMasterProtocol

    protected final AtomicReference<Protocol> waitNewMasterProtocol

### Constructor Detail

#### AbstractMastersSlavesListener

    protected AbstractMastersSlavesListener(UrlParser urlParser,
                                            GlobalStateInfo globalInfo)

### Method Detail

#### handleFailover

    public HandleErrorResult handleFailover(SQLException qe,
                                            Method method,
                                            Object[] args,
                                            Protocol protocol)
                                     throws Throwable

Handle failover on master or slave connection.

Specified by:
  `handleFailover` in interface `Listener`
Overrides:
  `handleFailover` in class `AbstractMastersListener`
Parameters:
  `method` - called method
  `args` - methods parameters
  `protocol` - current protocol
Returns:
  HandleErrorResult object to indicate if query has finally been relaunched or exception if not.
Throws:
  `Throwable` - if method with parameters doesn't exist

#### resetMasterFailoverData

    protected void resetMasterFailoverData()

Overrides:
  `resetMasterFailoverData` in class `AbstractMastersListener`

#### resetSecondaryFailoverData

    protected void resetSecondaryFailoverData()

#### getSecondaryHostFailNanos

    public long getSecondaryHostFailNanos()

#### setSecondaryHostFail

    public boolean setSecondaryHostFail()

Set slave connection lost variables.

Returns:
  true if fail wasn't seen before

#### isSecondaryHostFail

    public boolean isSecondaryHostFail()

#### isSecondaryHostFailReconnect

    public boolean isSecondaryHostFailReconnect()

#### isMasterHostFailReconnect

    public boolean isMasterHostFailReconnect()

#### hasHostFail

    public boolean hasHostFail()

Specified by:
  `hasHostFail` in interface `Listener`
Overrides:
  `hasHostFail` in class `AbstractMastersListener`

#### getFilterForFailedHost

    public SearchFilter getFilterForFailedHost()

Specified by:
  `getFilterForFailedHost` in interface `Listener`
Overrides:
  `getFilterForFailedHost` in class `AbstractMastersListener`

#### secondaryFail

    public abstract HandleErrorResult secondaryFail(Method method,
                                                    Object[] args,
                                                    boolean killCmd)
                                             throws Throwable

Throws:
  `Throwable`

#### foundActiveSecondary

    public abstract void foundActiveSecondary(Protocol newSecondaryProtocol)
                                       throws SQLException

Throws:
  `SQLException`