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 long
waitTimeout
timeout 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 void
abort(Executor executor)
Abort current connectionvoid
close()
Close clientvoid
closePrepare(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.Context
getContext()
Get connection contextExceptionFactory
getExceptionFactory()
Get connection exception factoryHostAddress
getHostAddress()
Get connection hostint
getSocketTimeout()
get socket timeoutboolean
isPrimary()
is current client writer or read-onlyvoid
readStreamingResults(List<org.mariadb.jdbc.client.Completion> completions, int fetchSize, long maxRows, int resultSetConcurrency, int resultSetType, boolean closeOnCompletion)
Read resultsprotected org.mariadb.jdbc.client.Client
reConnect()
Reconnect connection, trying to continue transparently if possible.void
reset()
Reset connectionvoid
setReadOnly(boolean readOnly)
Switch to a writer/read-only connection, no effet on mono-connectionvoid
setSocketTimeout(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 SQLException
Reconnect 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:
reConnect
in 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.Client
Send client message and read result- Specified by:
execute
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
execute
in 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.Client
Send client messages pipelining and read result- Specified by:
executePipeline
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
executePipeline
in 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.Client
Read results- Specified by:
readStreamingResults
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
readStreamingResults
in 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.Client
Close prepare command- Specified by:
closePrepare
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
closePrepare
in 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.Client
Abort current connection- Specified by:
abort
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
abort
in classMultiPrimaryClient
- Parameters:
executor
- executor- Throws:
SQLException
- if any error occurs
-
close
public void close() throws SQLException
Description copied from interface:org.mariadb.jdbc.client.Client
Close client- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
close
in classMultiPrimaryClient
- Throws:
SQLException
- if any error occurs
-
setReadOnly
public void setReadOnly(boolean readOnly) throws SQLException
Description copied from interface:org.mariadb.jdbc.client.Client
Switch to a writer/read-only connection, no effet on mono-connection- Specified by:
setReadOnly
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
setReadOnly
in 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.Client
get socket timeout- Specified by:
getSocketTimeout
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
getSocketTimeout
in classMultiPrimaryClient
- Returns:
- socket timeout
-
setSocketTimeout
public void setSocketTimeout(int milliseconds) throws SQLException
Description copied from interface:org.mariadb.jdbc.client.Client
Set socket timeout- Specified by:
setSocketTimeout
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
setSocketTimeout
in 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.Client
Get connection context- Specified by:
getContext
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
getContext
in classMultiPrimaryClient
- Returns:
- connection context
-
getExceptionFactory
public ExceptionFactory getExceptionFactory()
Description copied from interface:org.mariadb.jdbc.client.Client
Get connection exception factory- Specified by:
getExceptionFactory
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
getExceptionFactory
in classMultiPrimaryClient
- Returns:
- connection exception factory
-
getHostAddress
public HostAddress getHostAddress()
Description copied from interface:org.mariadb.jdbc.client.Client
Get connection host- Specified by:
getHostAddress
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
getHostAddress
in classMultiPrimaryClient
- Returns:
- connection host
-
isPrimary
public boolean isPrimary()
Description copied from interface:org.mariadb.jdbc.client.Client
is current client writer or read-only- Specified by:
isPrimary
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
isPrimary
in classMultiPrimaryClient
- Returns:
- is primary
-
reset
public void reset()
Description copied from interface:org.mariadb.jdbc.client.Client
Reset connection- Specified by:
reset
in interfaceorg.mariadb.jdbc.client.Client
- Overrides:
reset
in classMultiPrimaryClient
-
-