public abstract class AbstractMastersListener extends java.lang.Object implements Listener
Modifier and Type | Field and Description |
---|---|
private static java.util.concurrent.ConcurrentMap<HostAddress,java.lang.Long> |
blacklist
List the recent failedConnection.
|
private static ConnectionValidator |
connectionValidationLoop |
protected java.util.concurrent.atomic.AtomicInteger |
currentConnectionAttempts |
protected Protocol |
currentProtocol |
protected boolean |
currentReadOnlyAsked |
protected java.util.concurrent.atomic.AtomicBoolean |
explicitClosed |
protected long |
lastQueryNanos |
protected long |
lastRetry |
private static Logger |
logger |
private java.util.concurrent.atomic.AtomicBoolean |
masterHostFail |
private long |
masterHostFailNanos |
protected FailoverProxy |
proxy |
UrlParser |
urlParser |
Modifier | Constructor and Description |
---|---|
protected |
AbstractMastersListener(UrlParser urlParser) |
Modifier and Type | Method and Description |
---|---|
void |
addToBlacklist(HostAddress hostAddress)
After a failover, put the hostAddress in a static list so the other connection will not take this host in account for a time.
|
boolean |
canRetryFailLoop() |
abstract boolean |
checkMasterStatus(SearchFilter searchFilter) |
static void |
clearBlacklist()
Clear blacklist data.
|
void |
closeConnection(Protocol protocol)
Utility to close existing connection.
|
java.util.Set<HostAddress> |
getBlacklistKeys() |
Protocol |
getCurrentProtocol() |
SearchFilter |
getFilterForFailedHost() |
long |
getLastQueryNanos() |
long |
getMasterHostFailNanos() |
FailoverProxy |
getProxy() |
int |
getRetriesAllDown() |
UrlParser |
getUrlParser() |
abstract void |
handleFailLoop() |
HandleErrorResult |
handleFailover(java.sql.SQLException qe,
java.lang.reflect.Method method,
java.lang.Object[] args,
Protocol protocol)
Call when a failover is detected on master connection.
|
boolean |
hasHostFail() |
void |
initializeConnection()
Initialize Listener.
|
java.lang.Object |
invoke(java.lang.reflect.Method method,
java.lang.Object[] args) |
java.lang.Object |
invoke(java.lang.reflect.Method method,
java.lang.Object[] args,
Protocol specificProtocol) |
boolean |
isAutoReconnect() |
boolean |
isClosed() |
boolean |
isExplicitClosed() |
boolean |
isMasterHostFail() |
boolean |
isQueryRelaunchable(java.lang.reflect.Method method,
java.lang.Object[] args)
Check if query can be re-executed.
|
boolean |
isReadOnly() |
protected boolean |
pingMasterProtocol(Protocol protocol) |
protected void |
preAutoReconnect() |
abstract void |
preClose() |
abstract void |
preExecute() |
abstract HandleErrorResult |
primaryFail(java.lang.reflect.Method method,
java.lang.Object[] args) |
abstract void |
reconnect() |
abstract void |
reconnectFailedConnection(SearchFilter filter) |
HandleErrorResult |
relaunchOperation(java.lang.reflect.Method method,
java.lang.Object[] args)
After a failover that has bean done, relaunch the operation that was in progress.
|
void |
removeFromBlacklist(HostAddress hostAddress)
After a successfull connection, permit to remove a hostAddress from blacklist.
|
protected void |
removeListenerFromSchedulers() |
protected void |
resetMasterFailoverData() |
void |
resetOldsBlackListHosts()
Permit to remove Host to blacklist after loadBalanceBlacklistTimeout seconds.
|
boolean |
setMasterHostFail()
Set master fail variables.
|
void |
setProxy(FailoverProxy proxy) |
protected void |
setSessionReadOnly(boolean readOnly,
Protocol protocol) |
abstract void |
switchReadOnlyConnection(java.lang.Boolean readonly) |
void |
syncConnection(Protocol from,
Protocol to)
When switching between 2 connections, report existing connection parameter to the new used connection.
|
void |
throwFailoverMessage(HostAddress failHostAddress,
boolean wasMaster,
java.sql.SQLException queryException,
boolean reconnected)
Throw a human readable message after a failoverException.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
foundActiveMaster, isMasterConnected, rePrepareOnSlave
private static final java.util.concurrent.ConcurrentMap<HostAddress,java.lang.Long> blacklist
private static final ConnectionValidator connectionValidationLoop
private static Logger logger
public final UrlParser urlParser
protected java.util.concurrent.atomic.AtomicInteger currentConnectionAttempts
protected volatile boolean currentReadOnlyAsked
protected Protocol currentProtocol
protected FailoverProxy proxy
protected long lastRetry
protected java.util.concurrent.atomic.AtomicBoolean explicitClosed
protected long lastQueryNanos
private volatile long masterHostFailNanos
private java.util.concurrent.atomic.AtomicBoolean masterHostFail
protected AbstractMastersListener(UrlParser urlParser)
public static void clearBlacklist()
public void initializeConnection() throws java.sql.SQLException
initializeConnection
in interface Listener
java.sql.SQLException
- if any exception occur.protected void removeListenerFromSchedulers()
protected void preAutoReconnect() throws java.sql.SQLException
java.sql.SQLException
public FailoverProxy getProxy()
public void setProxy(FailoverProxy proxy)
public java.util.Set<HostAddress> getBlacklistKeys()
getBlacklistKeys
in interface Listener
public HandleErrorResult handleFailover(java.sql.SQLException qe, java.lang.reflect.Method method, java.lang.Object[] args, Protocol protocol) throws java.lang.Throwable
handleFailover
in interface Listener
method
- called methodargs
- methods parametersprotocol
- current protocoljava.lang.Throwable
- when method and parameters does not exist.public void addToBlacklist(HostAddress hostAddress)
addToBlacklist
in interface Listener
hostAddress
- the HostAddress to add to blacklistpublic void removeFromBlacklist(HostAddress hostAddress)
removeFromBlacklist
in interface Listener
hostAddress
- the host address tho be remove of blacklistpublic void resetOldsBlackListHosts()
protected void resetMasterFailoverData()
protected void setSessionReadOnly(boolean readOnly, Protocol protocol) throws java.sql.SQLException
java.sql.SQLException
public abstract void handleFailLoop()
public Protocol getCurrentProtocol()
getCurrentProtocol
in interface Listener
public long getMasterHostFailNanos()
public boolean setMasterHostFail()
setMasterHostFail
in interface Listener
public boolean isMasterHostFail()
isMasterHostFail
in interface Listener
public boolean hasHostFail()
hasHostFail
in interface Listener
public SearchFilter getFilterForFailedHost()
getFilterForFailedHost
in interface Listener
public HandleErrorResult relaunchOperation(java.lang.reflect.Method method, java.lang.Object[] args) throws java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException
method
- the methode accessedargs
- the parametersjava.lang.IllegalAccessException
- if the initial call is not permitjava.lang.reflect.InvocationTargetException
- if there is any error relaunching initial methodpublic boolean isQueryRelaunchable(java.lang.reflect.Method method, java.lang.Object[] args)
method
- invoke methodargs
- invoke argumentspublic java.lang.Object invoke(java.lang.reflect.Method method, java.lang.Object[] args, Protocol specificProtocol) throws java.lang.Throwable
public java.lang.Object invoke(java.lang.reflect.Method method, java.lang.Object[] args) throws java.lang.Throwable
public void syncConnection(Protocol from, Protocol to) throws java.sql.SQLException
syncConnection
in interface Listener
from
- used connectionto
- will-be-current connectionjava.sql.SQLException
- if catalog cannot be setpublic boolean isReadOnly()
isReadOnly
in interface Listener
public boolean isExplicitClosed()
isExplicitClosed
in interface Listener
public int getRetriesAllDown()
getRetriesAllDown
in interface Listener
public boolean isAutoReconnect()
isAutoReconnect
in interface Listener
public UrlParser getUrlParser()
getUrlParser
in interface Listener
public abstract void preExecute() throws java.sql.SQLException
preExecute
in interface Listener
java.sql.SQLException
public abstract void preClose() throws java.sql.SQLException
public abstract void reconnectFailedConnection(SearchFilter filter) throws java.sql.SQLException
reconnectFailedConnection
in interface Listener
java.sql.SQLException
public abstract void switchReadOnlyConnection(java.lang.Boolean readonly) throws java.sql.SQLException
switchReadOnlyConnection
in interface Listener
java.sql.SQLException
public abstract HandleErrorResult primaryFail(java.lang.reflect.Method method, java.lang.Object[] args) throws java.lang.Throwable
primaryFail
in interface Listener
java.lang.Throwable
public void throwFailoverMessage(HostAddress failHostAddress, boolean wasMaster, java.sql.SQLException queryException, boolean reconnected) throws java.sql.SQLException
throwFailoverMessage
in interface Listener
failHostAddress
- failedHostAddresswasMaster
- was failed connection masterqueryException
- internal errorreconnected
- connection statusjava.sql.SQLException
- error with failover informationpublic boolean canRetryFailLoop()
canRetryFailLoop
in interface Listener
public abstract void reconnect() throws java.sql.SQLException
public abstract boolean checkMasterStatus(SearchFilter searchFilter)
checkMasterStatus
in interface Listener
public long getLastQueryNanos()
getLastQueryNanos
in interface Listener
protected boolean pingMasterProtocol(Protocol protocol)
public void closeConnection(Protocol protocol)
protocol
- connection to close.