Package org.mariadb.jdbc.client
Class MultiPrimaryReplicaClient
java.lang.Object
org.mariadb.jdbc.client.MultiPrimaryClient
org.mariadb.jdbc.client.MultiPrimaryReplicaClient
- All Implemented Interfaces:
AutoCloseable
,Client
Handling connection failing automatic reconnection transparently when possible for replication
Topology.
remark: would have been better using proxy, but for AOT compilation, avoiding to using not supported proxy class.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Logger
private long
private long
private Client
private Client
private boolean
protected long
Fields inherited from class org.mariadb.jdbc.client.MultiPrimaryClient
closed, conf, currentClient, deniedListTimeout, denyList, lock
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
void
close()
void
closePrepare
(PrepareResultPacket prepare) execute
(ClientMessage message, Statement stmt, int fetchSize, long maxRows, int resultSetConcurrency, int resultSetType, boolean closeOnCompletion) executePipeline
(ClientMessage[] messages, Statement stmt, int fetchSize, long maxRows, int resultSetConcurrency, int resultSetType, boolean closeOnCompletion) int
boolean
void
readStreamingResults
(List<Completion> completions, int fetchSize, long maxRows, int resultSetConcurrency, int resultSetType, boolean closeOnCompletion) protected void
Reconnect connection, trying to continue transparently if possible.private void
void
reset()
void
setReadOnly
(boolean readOnly) void
setSocketTimeout
(int milliseconds) Methods inherited from class org.mariadb.jdbc.client.MultiPrimaryClient
connectHost, execute, execute, executeTransactionReplay, getWaitTimeout, isClosed, syncNewState
-
Field Details
-
logger
-
waitTimeout
protected long waitTimeout -
replicaClient
-
-
requestReadOnly
private boolean requestReadOnly -
nextTryReplica
private long nextTryReplica -
nextTryPrimary
private long nextTryPrimary
-
-
Constructor Details
-
MultiPrimaryReplicaClient
- Throws:
SQLException
-
-
Method Details
-
reconnectIfNeeded
private void reconnectIfNeeded() -
reConnect
Reconnect connection, trying to continue transparently if possible. Different cases. * replica fails => reconnect to replica or to master if no replica availableif reconnect succeed on replica / use master, no problem, continuing without interruption // if reconnect primary, then replay transaction / throw exception if was in transaction.
- Overrides:
reConnect
in classMultiPrimaryClient
- Throws:
SQLException
- if exception
-
execute
public List<Completion> execute(ClientMessage message, Statement stmt, int fetchSize, long maxRows, int resultSetConcurrency, int resultSetType, boolean closeOnCompletion) throws SQLException - Specified by:
execute
in interfaceClient
- Overrides:
execute
in classMultiPrimaryClient
- Throws:
SQLException
-
executePipeline
public List<Completion> executePipeline(ClientMessage[] messages, Statement stmt, int fetchSize, long maxRows, int resultSetConcurrency, int resultSetType, boolean closeOnCompletion) throws SQLException - Specified by:
executePipeline
in interfaceClient
- Overrides:
executePipeline
in classMultiPrimaryClient
- Throws:
SQLException
-
readStreamingResults
public void readStreamingResults(List<Completion> completions, int fetchSize, long maxRows, int resultSetConcurrency, int resultSetType, boolean closeOnCompletion) throws SQLException - Specified by:
readStreamingResults
in interfaceClient
- Overrides:
readStreamingResults
in classMultiPrimaryClient
- Throws:
SQLException
-
closePrepare
- Specified by:
closePrepare
in interfaceClient
- Overrides:
closePrepare
in classMultiPrimaryClient
- Throws:
SQLException
-
abort
- Specified by:
abort
in interfaceClient
- Overrides:
abort
in classMultiPrimaryClient
- Throws:
SQLException
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceClient
- Overrides:
close
in classMultiPrimaryClient
-
setReadOnly
- Specified by:
setReadOnly
in interfaceClient
- Overrides:
setReadOnly
in classMultiPrimaryClient
- Throws:
SQLException
-
getSocketTimeout
public int getSocketTimeout()- Specified by:
getSocketTimeout
in interfaceClient
- Overrides:
getSocketTimeout
in classMultiPrimaryClient
-
setSocketTimeout
- Specified by:
setSocketTimeout
in interfaceClient
- Overrides:
setSocketTimeout
in classMultiPrimaryClient
- Throws:
SQLException
-
getContext
- Specified by:
getContext
in interfaceClient
- Overrides:
getContext
in classMultiPrimaryClient
-
getExceptionFactory
- Specified by:
getExceptionFactory
in interfaceClient
- Overrides:
getExceptionFactory
in classMultiPrimaryClient
-
getHostAddress
- Specified by:
getHostAddress
in interfaceClient
- Overrides:
getHostAddress
in classMultiPrimaryClient
-
isPrimary
public boolean isPrimary()- Specified by:
isPrimary
in interfaceClient
- Overrides:
isPrimary
in classMultiPrimaryClient
-
reset
public void reset()- Specified by:
reset
in interfaceClient
- Overrides:
reset
in classMultiPrimaryClient
-