Package org.mariadb.jdbc.client.impl
Class MultiPrimaryReplicaClient
- java.lang.Object
-
- org.mariadb.jdbc.client.impl.MultiPrimaryClient
-
- org.mariadb.jdbc.client.impl.MultiPrimaryReplicaClient
-
- All Implemented Interfaces:
AutoCloseable,org.mariadb.jdbc.client.Client
public class MultiPrimaryReplicaClient extends MultiPrimaryClient
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
Fields Modifier and Type Field Description protected longwaitTimeouttimeout before retrying to reconnect failing host-
Fields inherited from class org.mariadb.jdbc.client.impl.MultiPrimaryClient
closed, conf, currentClient, deniedListTimeout, denyList, lock
-
-
Constructor Summary
Constructors Constructor Description MultiPrimaryReplicaClient(Configuration conf, ReentrantLock lock)Constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidabort(Executor executor)Abort current connectionvoidclose()Close clientvoidclosePrepare(Prepare prepare)Close prepare commandList<org.mariadb.jdbc.client.Completion>execute(org.mariadb.jdbc.message.ClientMessage message, Statement stmt, int fetchSize, long maxRows, int resultSetConcurrency, int resultSetType, boolean closeOnCompletion, boolean canRedo)Send client message and read resultList<org.mariadb.jdbc.client.Completion>executePipeline(org.mariadb.jdbc.message.ClientMessage[] messages, Statement stmt, int fetchSize, long maxRows, int resultSetConcurrency, int resultSetType, boolean closeOnCompletion, boolean canRedo)Send client messages pipelining and read resultorg.mariadb.jdbc.client.ContextgetContext()Get connection contextExceptionFactorygetExceptionFactory()Get connection exception factoryHostAddressgetHostAddress()Get connection hostintgetSocketTimeout()get socket timeoutbooleanisPrimary()is current client writer or read-onlyvoidreadStreamingResults(List<org.mariadb.jdbc.client.Completion> completions, int fetchSize, long maxRows, int resultSetConcurrency, int resultSetType, boolean closeOnCompletion)Read resultsprotected org.mariadb.jdbc.client.ClientreConnect()Reconnect connection, trying to continue transparently if possible.voidreset()Reset connectionvoidsetReadOnly(boolean readOnly)Switch to a writer/read-only connection, no effet on mono-connectionvoidsetSocketTimeout(int milliseconds)Set socket timeout-
Methods inherited from class org.mariadb.jdbc.client.impl.MultiPrimaryClient
connectHost, execute, execute, executeTransactionReplay, isClosed, replayIfPossible, syncNewState
-
-
-
-
Constructor Detail
-
MultiPrimaryReplicaClient
public MultiPrimaryReplicaClient(Configuration conf, ReentrantLock lock) throws SQLException
Constructor- Parameters:
conf- configurationlock- thread locker- Throws:
SQLException- if any error occurs
-
-
Method Detail
-
reConnect
protected org.mariadb.jdbc.client.Client reConnect() throws SQLExceptionReconnect connection, trying to continue transparently if possible. Different possible cases : replica fails, then 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:
reConnectin classMultiPrimaryClient- Returns:
- client connection
- Throws:
SQLException- if exception
-
execute
public List<org.mariadb.jdbc.client.Completion> execute(org.mariadb.jdbc.message.ClientMessage message, Statement stmt, int fetchSize, long maxRows, int resultSetConcurrency, int resultSetType, boolean closeOnCompletion, boolean canRedo) throws SQLException
Description copied from interface:org.mariadb.jdbc.client.ClientSend client message and read result- Specified by:
executein interfaceorg.mariadb.jdbc.client.Client- Overrides:
executein classMultiPrimaryClient- Parameters:
message- client messagestmt- statementfetchSize- fetch sizemaxRows- maximum number of rows. 0 = allresultSetConcurrency- concurrencyresultSetType- result-set typecloseOnCompletion- close statement on completioncanRedo- can client message be redone in case of failover- Returns:
- results
- Throws:
SQLException- if any error occurs
-
executePipeline
public List<org.mariadb.jdbc.client.Completion> executePipeline(org.mariadb.jdbc.message.ClientMessage[] messages, Statement stmt, int fetchSize, long maxRows, int resultSetConcurrency, int resultSetType, boolean closeOnCompletion, boolean canRedo) throws SQLException
Description copied from interface:org.mariadb.jdbc.client.ClientSend client messages pipelining and read result- Specified by:
executePipelinein interfaceorg.mariadb.jdbc.client.Client- Overrides:
executePipelinein classMultiPrimaryClient- Parameters:
messages- client messagestmt- statementfetchSize- fetch sizemaxRows- maximum number of rows. 0 = allresultSetConcurrency- concurrencyresultSetType- result-set typecloseOnCompletion- close statement on completioncanRedo- can client message be redone in case of failover- Returns:
- results
- Throws:
SQLException- if any error occurs
-
readStreamingResults
public void readStreamingResults(List<org.mariadb.jdbc.client.Completion> completions, int fetchSize, long maxRows, int resultSetConcurrency, int resultSetType, boolean closeOnCompletion) throws SQLException
Description copied from interface:org.mariadb.jdbc.client.ClientRead results- Specified by:
readStreamingResultsin interfaceorg.mariadb.jdbc.client.Client- Overrides:
readStreamingResultsin classMultiPrimaryClient- Parameters:
completions- List that will have the new resultsfetchSize- fetch sizemaxRows- maximum number of rows. 0 = allresultSetConcurrency- concurrencyresultSetType- result-set typecloseOnCompletion- close statement on completion- Throws:
SQLException- if any error occurs
-
closePrepare
public void closePrepare(Prepare prepare) throws SQLException
Description copied from interface:org.mariadb.jdbc.client.ClientClose prepare command- Specified by:
closePreparein interfaceorg.mariadb.jdbc.client.Client- Overrides:
closePreparein classMultiPrimaryClient- Parameters:
prepare- prepare command- Throws:
SQLException- if any error occurs
-
abort
public void abort(Executor executor) throws SQLException
Description copied from interface:org.mariadb.jdbc.client.ClientAbort current connection- Specified by:
abortin interfaceorg.mariadb.jdbc.client.Client- Overrides:
abortin classMultiPrimaryClient- Parameters:
executor- executor- Throws:
SQLException- if any error occurs
-
close
public void close() throws SQLExceptionDescription copied from interface:org.mariadb.jdbc.client.ClientClose client- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceorg.mariadb.jdbc.client.Client- Overrides:
closein classMultiPrimaryClient- Throws:
SQLException- if any error occurs
-
setReadOnly
public void setReadOnly(boolean readOnly) throws SQLExceptionDescription copied from interface:org.mariadb.jdbc.client.ClientSwitch to a writer/read-only connection, no effet on mono-connection- Specified by:
setReadOnlyin interfaceorg.mariadb.jdbc.client.Client- Overrides:
setReadOnlyin classMultiPrimaryClient- Parameters:
readOnly- must use read-only connection- Throws:
SQLException- if any error occurs
-
getSocketTimeout
public int getSocketTimeout()
Description copied from interface:org.mariadb.jdbc.client.Clientget socket timeout- Specified by:
getSocketTimeoutin interfaceorg.mariadb.jdbc.client.Client- Overrides:
getSocketTimeoutin classMultiPrimaryClient- Returns:
- socket timeout
-
setSocketTimeout
public void setSocketTimeout(int milliseconds) throws SQLExceptionDescription copied from interface:org.mariadb.jdbc.client.ClientSet socket timeout- Specified by:
setSocketTimeoutin interfaceorg.mariadb.jdbc.client.Client- Overrides:
setSocketTimeoutin classMultiPrimaryClient- Parameters:
milliseconds- timeout- Throws:
SQLException- if any error occurs
-
getContext
public org.mariadb.jdbc.client.Context getContext()
Description copied from interface:org.mariadb.jdbc.client.ClientGet connection context- Specified by:
getContextin interfaceorg.mariadb.jdbc.client.Client- Overrides:
getContextin classMultiPrimaryClient- Returns:
- connection context
-
getExceptionFactory
public ExceptionFactory getExceptionFactory()
Description copied from interface:org.mariadb.jdbc.client.ClientGet connection exception factory- Specified by:
getExceptionFactoryin interfaceorg.mariadb.jdbc.client.Client- Overrides:
getExceptionFactoryin classMultiPrimaryClient- Returns:
- connection exception factory
-
getHostAddress
public HostAddress getHostAddress()
Description copied from interface:org.mariadb.jdbc.client.ClientGet connection host- Specified by:
getHostAddressin interfaceorg.mariadb.jdbc.client.Client- Overrides:
getHostAddressin classMultiPrimaryClient- Returns:
- connection host
-
isPrimary
public boolean isPrimary()
Description copied from interface:org.mariadb.jdbc.client.Clientis current client writer or read-only- Specified by:
isPrimaryin interfaceorg.mariadb.jdbc.client.Client- Overrides:
isPrimaryin classMultiPrimaryClient- Returns:
- is primary
-
reset
public void reset()
Description copied from interface:org.mariadb.jdbc.client.ClientReset connection- Specified by:
resetin interfaceorg.mariadb.jdbc.client.Client- Overrides:
resetin classMultiPrimaryClient
-
-