Top Description Fields Constructors Methods
org.apache.derby.impl.store.replication.net

public Class ReplicationMessage

extends Object
implements Externalizable
Class Inheritance
All Implemented Interfaces
java.io.Externalizable, java.io.Serializable
Imports
java.io.Externalizable, .IOException, .ObjectInput, .ObjectOutput

This message is used for the communication between the master and the slave during Replication. The message is composed of a type flag and corresponding object. Each type flag indicating the type of the content bundled inside the message.

Field Summary

Modifier and TypeField and Description
private Object
message

This is the content of the replication message.

public static final long
serialVersionUID

The version number is determined based on the database version of the current database.

private int
type

The valid values for the type of the content of the message are listed below.

public static final int
TYPE_ACK

This flag is used to send an acknowledgment of successful completion of a requested operation.

public static final int
TYPE_ERROR

Indicates that the requested operation was not able to be completed successfully.

public static final int
TYPE_FAILOVER

Used to signal the slave that it must failover.

public static final int
TYPE_INITIATE_INSTANT

Used during the intial handshake between the master and the slave.

public static final int
TYPE_INITIATE_VERSION

used during the intial handshake between the master and the slave.

public static final int
TYPE_LOG

This flag will be used for all messages that carry log records.

public static final int
TYPE_PING

A message used to check if the replication network is working.

public static final int
TYPE_PONG

A message sent as a response to a TYPE_PING message.

public static final int
TYPE_STOP

Used to send a stop replication signal to the slave.

Constructor Summary

AccessConstructor and Description
public
ReplicationMessage()

public No args constructor required with Externalizable.

public
ReplicationMessage(int
The type of this message. Must be one of the message type constants of this class (TYPE_LOG, TYPE_ACK, TYPE_ERROR, TYPE_INITIATE).
type
,
Object
The message to be transmitted.
message
)

Constructor used to set the type and message.

Method Summary

Modifier and TypeMethod and Description
public Object

Returns:

The object contained in the message
getMessage
()

Used to get the actual message that is wrapped inside the ReplicationMessage object.

public int

Returns:

The type of the message.
getType
()

Used to get the type of this ReplicationMessage.

public void
readExternal(ObjectInput
the stream to read data from in order to restore the object.
in
)

Implements java.io.Externalizable.readExternal.

Used to restore the contents of this object.

public void
writeExternal(ObjectOutput
the stream to write the object to.
out
)

Implements java.io.Externalizable.writeExternal.

Used to save the contents of this Object.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

messageback to summary
private Object message

This is the content of the replication message.

serialVersionUIDback to summary
public static final long serialVersionUID

The version number is determined based on the database version of the current database. This would help to establish if the master and the slave in replication are at compatible database versions.

typeback to summary
private int type

The valid values for the type of the content of the message are listed below.

TYPE_ACKback to summary
public static final int TYPE_ACK

This flag is used to send an acknowledgment of successful completion of a requested operation. It will however not be used to signify reception for every message transmission. The object this message type contains will be a String. The SQLState of the error message can be used here.

TYPE_ERRORback to summary
public static final int TYPE_ERROR

Indicates that the requested operation was not able to be completed successfully. The object this message type contains will be a String[] where the first length-1 fields are used as arguments to create the exception and the last field contains the SQLState. The SQLState is the last element in the Array, because this means that the whole Array can be used as input to the StandardException creator. The SQLState will be ignored by the exception creator because there is one argument too many. This way we don't have to make a copy of the received Array, containing all elements except the SQLState element.

TYPE_FAILOVERback to summary
public static final int TYPE_FAILOVER

Used to signal the slave that it must failover. The object associated with this message will be null.

TYPE_INITIATE_INSTANTback to summary
public static final int TYPE_INITIATE_INSTANT

Used during the intial handshake between the master and the slave. Messages of this type are used to ensure that master and slave have identical log files by checking that they will insert the next log record on the same byte position in the log. The object this message contains will be a Long.

TYPE_INITIATE_VERSIONback to summary
public static final int TYPE_INITIATE_VERSION

used during the intial handshake between the master and the slave. The initial handshake helps to negotiate the message UIDs and send a appropriate error or acknowledgment. The object this message contains will be a Long.

Important Note

This constant must not be changed in future versions since we need it to decide slave/master version mismatch

TYPE_LOGback to summary
public static final int TYPE_LOG

This flag will be used for all messages that carry log records. The Object this message type contains will be a byte array. The content of the byte array is the log records in the binary form.

TYPE_PINGback to summary
public static final int TYPE_PING

A message used to check if the replication network is working. This message type has no object

TYPE_PONGback to summary
public static final int TYPE_PONG

A message sent as a response to a TYPE_PING message. This message type has no object

TYPE_STOPback to summary
public static final int TYPE_STOP

Used to send a stop replication signal to the slave. Since this is a control signal the object this message contains will be null.

Constructor Detail

ReplicationMessageback to summary
public ReplicationMessage()

public No args constructor required with Externalizable.

ReplicationMessageback to summary
public ReplicationMessage(int type, Object message)

Constructor used to set the type and message. This is used while creating messages for sending while readExternal is used on the receiving end.

Parameters
type:int

The type of this message. Must be one of the message type constants of this class (TYPE_LOG, TYPE_ACK, TYPE_ERROR, TYPE_INITIATE).

message:Object

The message to be transmitted.

Method Detail

getMessageback to summary
public Object getMessage()

Used to get the actual message that is wrapped inside the ReplicationMessage object.

Returns:Object

The object contained in the message

getTypeback to summary
public int getType()

Used to get the type of this ReplicationMessage.

Returns:int

The type of the message.

readExternalback to summary
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException

Implements java.io.Externalizable.readExternal.

Used to restore the contents of this object.

Parameters
in:ObjectInput

the stream to read data from in order to restore the object.

Exceptions
IOException:
If an exception occurs while reading from the InputStream.
ClassNotFoundException:
Class of a serialized object cannot be found.
writeExternalback to summary
public void writeExternal(ObjectOutput out) throws IOException

Implements java.io.Externalizable.writeExternal.

Used to save the contents of this Object.

Parameters
out:ObjectOutput

the stream to write the object to.

Exceptions
IOException:
if an exception occurs while writing to the OutputStream.