MasterController
public interface MasterFactory
This is the interface for the replication master controller service. The master controller service is booted when this instance of Derby will have the replication master role for this database.
The replication master service is responsible for managing all replication related functionality on the master side of replication. This includes connecting to the slave, setting up a log buffer to temporarily store log records from the LogFactory, and to ship these log records to the slave.
The master controller currently only supports asynchronous
replication. This means that there are no guarantees that
transactions that have committed here (the master side) are also
reflected on the slave side. However, the slave version of the
database IS guaranteed to be transaction consistent. This implies
that:
Modifier and Type | Field | Description |
---|---|---|
static java.lang.String |
ASYNCHRONOUS_MODE |
Property value used to indicate that the service should be
booted in asynchronous replication mode.
|
static java.lang.String |
MODULE |
The name of the Master Factory, used to boot the service.
|
static java.lang.String |
REPLICATION_MODE |
Property key to specify replication mode
|
Modifier and Type | Method | Description |
---|---|---|
void |
appendLog(long greatestInstant,
byte[] log,
int logOffset,
int logLength) |
Append a chunk of log records to the log buffer.
|
void |
flushedTo(long instant) |
Used by the LogFactory to notify the replication master
controller that the log records up to this instant have been
flushed to disk.
|
void |
startFailover() |
Will perform all work needed to failover
|
void |
startMaster(RawStoreFactory rawStore,
DataFactory dataFac,
LogFactory logFac,
java.lang.String slavehost,
int slaveport,
java.lang.String dbname) |
Will perform all the work that is needed to set up replication
|
void |
stopMaster() |
Will perform all work that is needed to shut down replication.
|
void |
workToDo() |
Used to notify the log shipper that a log buffer element is full.
|
static final java.lang.String MODULE
static final java.lang.String REPLICATION_MODE
static final java.lang.String ASYNCHRONOUS_MODE
void startMaster(RawStoreFactory rawStore, DataFactory dataFac, LogFactory logFac, java.lang.String slavehost, int slaveport, java.lang.String dbname) throws StandardException
rawStore
- The RawStoreFactory for the databasedataFac
- The DataFactory for this databaselogFac
- The LogFactory ensuring recoverability for this databaseslavehost
- The hostname for the slaveslaveport
- The port the slave is listening ondbname
- The master database that is being replicated.StandardException
- Standard Derby exception policy,
thrown on replication startup error.void stopMaster() throws StandardException
StandardException
- If the replication master has been stopped
already.void startFailover() throws StandardException
StandardException
- 1) If the failover succeeds, an exception is
thrown to indicate that the master database
was shutdown after a successful failover
2) If a failure occurs during network
communication with slave.void appendLog(long greatestInstant, byte[] log, int logOffset, int logLength)
greatestInstant
- the instant of the log record that was
added last to this chunk of loglog
- the chunk of log recordslogOffset
- offset in log to start copy fromlogLength
- number of bytes to copy, starting
from logOffsetvoid flushedTo(long instant)
instant
- The highest log instant that has been flushed to
diskLogFactory.flush(org.apache.derby.iapi.store.raw.log.LogInstant)
void workToDo()
Apache Derby V10.14 Internals - Copyright © 2004,2018 The Apache Software Foundation. All Rights Reserved.