Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 0.18
    • Fix Version/s: 0.19
    • Component/s: C++ Broker
    • Labels:
      None

      Description

      On recovery of a durable link, the broker calls MessageStore::create() for the recovered link which causes a hang and prevents recovery completing.

        Issue Links

          Activity

          Hide
          Gordon Sim added a comment -
          Show
          Gordon Sim added a comment - This is a regression caused by http://svn.apache.org/viewvc?view=revision&revision=1334138
          Hide
          Gordon Sim added a comment -

          A possible simple fix (against 0.18, but would apply equally to trunk):

          Index: src/qpid/broker/Broker.cpp
          ===================================================================
          --- src/qpid/broker/Broker.cpp	(revision 1382034)
          +++ src/qpid/broker/Broker.cpp	(working copy)
          @@ -285,6 +285,7 @@
                   if (getRecovery()) {
                       RecoveryManagerImpl recoverer(queues, exchanges, links, dtxManager);
                       store->recover(recoverer);
          +            links.setStore(store.get());
                   }
                   else {
                       QPID_LOG(notice, "Cluster recovery: recovered journal data discarded and journal files pushed down");
          @@ -390,7 +391,6 @@
           void Broker::setStore () {
               queues.setStore     (store.get());
               dtxManager.setStore (store.get());
          -    links.setStore      (store.get());
           }
           
           void Broker::run() {
          
          Show
          Gordon Sim added a comment - A possible simple fix (against 0.18, but would apply equally to trunk): Index: src/qpid/broker/Broker.cpp =================================================================== --- src/qpid/broker/Broker.cpp (revision 1382034) +++ src/qpid/broker/Broker.cpp (working copy) @@ -285,6 +285,7 @@ if (getRecovery()) { RecoveryManagerImpl recoverer(queues, exchanges, links, dtxManager); store->recover(recoverer); + links.setStore(store.get()); } else { QPID_LOG(notice, "Cluster recovery: recovered journal data discarded and journal files pushed down"); @@ -390,7 +391,6 @@ void Broker::setStore () { queues.setStore (store.get()); dtxManager.setStore (store.get()); - links.setStore (store.get()); } void Broker::run() {
          Hide
          Ken Giusti added a comment -

          Proposed test case that would test recovery of Links and Bridges.

          Show
          Ken Giusti added a comment - Proposed test case that would test recovery of Links and Bridges.
          Show
          Ken Giusti added a comment - Committed fix: http://svn.apache.org/viewvc?view=revision&revision=1393479

            People

            • Assignee:
              Ken Giusti
              Reporter:
              Gordon Sim
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development