Qpid
  1. Qpid
  2. QPID-1764

Create Abstract base class to perform new reference counting for TransactionLog

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Blocker Blocker
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: 0.6
    • Component/s: None
    • Labels:
      None

      Description

      Summary:

      Summary the introduction of the new TransactionLog interface over the old MessageStore has resulted in each of the old Stores performing their own reference counting. As a result they all suffer from:
      a) Being different implementations
      b) Not being fully tested by existing test frameworks.

      By creating a single reference counting TransactionLog base class that delegates the simple storage and retreival tasks to the underlying Stores the stores can be simpler and the testing more complete.

      Current testing has already shown that performance has knocked 5% by the MemoryMessageStore's implementation of reference counting when it should not need to be doing any reference counting.

      This was brought up during the FtD Code review
      http://cwiki.apache.org/confluence/display/qpid/FtD+Code+Review+Notes

        Activity

        Hide
        Aidan Skinner added a comment -

        This has been backed out and is not really relevant anymore

        Show
        Aidan Skinner added a comment - This has been backed out and is not really relevant anymore
        Hide
        Martin Ritchie added a comment -

        Hi Aidan, can you review this change please.

        Show
        Martin Ritchie added a comment - Hi Aidan, can you review this change please.
        Hide
        Martin Ritchie added a comment -

        The changes committed do allow TestableMemoryMessageStore to function correctly, this class needs updated to access and record reference counts.

        The following tests need to be checked as the current TMMS returning an empty set for reference counts still allows the tests to succeed, the following tests use TMMS and so need to be checked:

        TxAckTest
        AMQQueueMBeanTest
        AckTest
        persistentMessageTest
        SimpleAMQQueueTest
        ACLManagerTest
        FirewallPluginTest
        TestReferenceCounting
        TestApplicationRegisty
        -Used by:
        ApplicationRegistryShutdownTest
        InternalBrokerBaseCase

        • Use By:
          AcknowledgeTest
          MessageStoreShutdownTest
          QueueBrowserUsesNoAckTest
        Show
        Martin Ritchie added a comment - The changes committed do allow TestableMemoryMessageStore to function correctly, this class needs updated to access and record reference counts. The following tests need to be checked as the current TMMS returning an empty set for reference counts still allows the tests to succeed, the following tests use TMMS and so need to be checked: TxAckTest AMQQueueMBeanTest AckTest persistentMessageTest SimpleAMQQueueTest ACLManagerTest FirewallPluginTest TestReferenceCounting TestApplicationRegisty -Used by: ApplicationRegistryShutdownTest InternalBrokerBaseCase Use By: AcknowledgeTest MessageStoreShutdownTest QueueBrowserUsesNoAckTest
        Hide
        Martin Ritchie added a comment -

        This change will encorporate the following FtD review notes:

        1 0.5 M Removal of old get* Methods from TransactionLog
        2 0.5 M Create Abstract BaseTransactionLog class to hold commonalities with existing TLogs
        3 0.5 M Refactor Ref Counting out into BaseTransactionLog
        31 0.5 M BDBMS : Enqueue has no rollback operation. [But it never had]
        32 0.5 BDBMS : StoreContext needs enqueue/dequeue added.
        29 0.5 BDBMS : _dequeueTxMap should move to StoreContext to remove synchronized
        28 BDBMS : linked list per message is not memory conserving
        4 0.6 StoreContext update, initially to include the dequeue messageIds as per BDBStore [also enqueues to fix rollback]

        Show
        Martin Ritchie added a comment - This change will encorporate the following FtD review notes: 1 0.5 M Removal of old get* Methods from TransactionLog 2 0.5 M Create Abstract BaseTransactionLog class to hold commonalities with existing TLogs 3 0.5 M Refactor Ref Counting out into BaseTransactionLog 31 0.5 M BDBMS : Enqueue has no rollback operation. [But it never had] 32 0.5 BDBMS : StoreContext needs enqueue/dequeue added. 29 0.5 BDBMS : _dequeueTxMap should move to StoreContext to remove synchronized 28 BDBMS : linked list per message is not memory conserving 4 0.6 StoreContext update, initially to include the dequeue messageIds as per BDBStore [also enqueues to fix rollback]
        Hide
        Martin Ritchie added a comment -

        Changed wrong JIRA to review state.

        Show
        Martin Ritchie added a comment - Changed wrong JIRA to review state.

          People

          • Assignee:
            Aidan Skinner
            Reporter:
            Martin Ritchie
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development