db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "V.Narayanan (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-3064) Implement the LogShipper that will enable the shipping of Log records from the master to the slave
Date Mon, 24 Sep 2007 01:25:50 GMT

    [ https://issues.apache.org/jira/browse/DERBY-3064?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12529772
] 

V.Narayanan commented on DERBY-3064:
------------------------------------

In keeping with the design diagrams introduced in Derby-2872 I have modified the
LogShipper design. Pls find below a basic description of the changes that will be
introduced in this issue.

LogShipper Design
-----------------

As part of this work the following changes are required

The AsynchronousLogShipper that enables periodic and force flushing of the Log Buffer
is needed. 

The MasterController is modified to start up the LogShipping module
and to call a flush on the buffer when the LogBufferFullException is thrown.

AsynchronousLogShipper
----------------------

* Handles periodic shipping of log chunks from the log buffer to the
  slave

* Allows for force flushing of the log Buffer by the MasterController
  when the MasterController gets a LogBufferFullException from the
  LogBuffer.

Design of the class
-------------------

Implements interfaces - Serviceable, LogShipper

Constructor
-----------

Accepts the ReplicationLogBuffer, shippingDaemon and the transmitInterval.

Subscribes to the ShippingDaemon.


Methods
-------

shipALogChunk
-------------

Checks to see if a log record chunk is available in the logBuffer for transmission

If yes removes this log record chunk and transmits it to the slave.

updates the lastTransmitTime to reflect the current time at which the transmit was done.


flushedInstance
---------------

LogShipper interface method.

Used to update the latest instance of the log record that has been flushed to the disk.

This method will not have any implementation.

forceFlush
----------

Forces a chunk of the log record from the log buffer to be sent to the
slave, freeing space in the log buffer.

calls shipALogChunk to ship the log chunk from the buffer.

serviceASAP
-----------

Serviceable interface method. Returns false.

serviceImmediately
------------------

Serviceable interface method. Returns false.

performWork
-----------

Gets the current time and subtracts the lastTransmitTime from it to get the time interval
between transmissions.

Checks to see if the time interval calculate above is greater than or equal to the
transmitInterval. If yes calls shipALogChunk. If no the method returns without doing anything.


Changes to the MasterController class
-------------------------------------

startMaster
-----------

The LogShipper is initialized here.

appendLogRecord
---------------

when a LogBufferFullException is thrown we call
AsynchronousLogShipper.forceFlush

> Implement the LogShipper that will enable the shipping of Log records from the master
to the slave
> --------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3064
>                 URL: https://issues.apache.org/jira/browse/DERBY-3064
>             Project: Derby
>          Issue Type: Sub-task
>            Reporter: V.Narayanan
>            Assignee: V.Narayanan
>         Attachments: LogShipperImpl_v1.diff, LogShipperImpl_v1.stat
>
>


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message