db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dag H. Wanvik (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-2926) Replication: Add a log buffer for log records that should be shipped to the slave
Date Fri, 13 Jul 2007 17:15:04 GMT

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

Dag H. Wanvik commented on DERBY-2926:

> * It will be very easy to recycle the ReplicationLogRecord objects
>   that make up the linked list. Once the log-information in an object
>   has been shipped to the slave, the object could be put in a pool of
>   recycled objects. This would significantly reduce the number of
>   ReplicationLogRecord objects that must be created and garbage
>   collected, but may increase the memory usage since the objects in
>   the pool are not removed from memory. *Is recycling considered good
>   or bad practice?*

At this years Java One, the Sun JVM garbage collector people talked a
lot about how cheap object creation and garbage collection is iff:

    - objects are short-lived
    - objects are read-only (use final if possible!)
    - objects are short

(see http://developers.sun.com/learning/javaoneonline/2007/pdf/TS-2906.pdf)

So whether recycling will be good depends on the nature of the
objects. Perhaps a micro benchmark may be useful to determine
this. Another approach here would be to use a large circular byte buffer and
administer space in it yourself. 

How do you imagine flow control if the network gets slow?  Would you
block a transaction whose record would overflow the buffer?

> Replication: Add a log buffer for log records that should be shipped to the slave
> ---------------------------------------------------------------------------------
>                 Key: DERBY-2926
>                 URL: https://issues.apache.org/jira/browse/DERBY-2926
>             Project: Derby
>          Issue Type: Sub-task
>          Components: Store
>    Affects Versions:
>            Reporter: Jørgen Løland
>            Assignee: Jørgen Løland
> When a Derby instance has the master role for a database, log records are shipped to
the slave to keep it up to date. A buffer is needed because the log records should not be
shipped one at a time. Also, writing the log records to a buffer instead of sending them immediately
removes the network communication from the critical path for the transaction.

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

View raw message