diff options
| author | Kim van der Riet <kpvdr@apache.org> | 2012-12-05 16:29:59 +0000 |
|---|---|---|
| committer | Kim van der Riet <kpvdr@apache.org> | 2012-12-05 16:29:59 +0000 |
| commit | 7db4e98602cef8e085d160a0a5aa52a464a2f3e8 (patch) | |
| tree | 86d493934770fd329283daaab060e73c0f72f92e /cpp | |
| parent | f35392c6d3b62363145f8445aa5c55d2ccdcffa5 (diff) | |
| download | qpid-python-7db4e98602cef8e085d160a0a5aa52a464a2f3e8.tar.gz | |
QPID-4490: Durable mesages with TTL do not expire after broker recovery (c++ store) - fix
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1417511 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
| -rw-r--r-- | cpp/src/qpid/broker/RecoverableMessage.h | 2 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/RecoverableMessageImpl.h | 1 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/RecoveryManagerImpl.cpp | 5 |
3 files changed, 8 insertions, 0 deletions
diff --git a/cpp/src/qpid/broker/RecoverableMessage.h b/cpp/src/qpid/broker/RecoverableMessage.h index c98857ceb0..e0159bed7b 100644 --- a/cpp/src/qpid/broker/RecoverableMessage.h +++ b/cpp/src/qpid/broker/RecoverableMessage.h @@ -28,6 +28,7 @@ namespace qpid { namespace broker { +class ExpiryPolicy; /** * The interface through which messages are reloaded on recovery. @@ -38,6 +39,7 @@ public: typedef boost::shared_ptr<RecoverableMessage> shared_ptr; virtual void setPersistenceId(uint64_t id) = 0; virtual void setRedelivered() = 0; + virtual void computeExpiration(const boost::intrusive_ptr<ExpiryPolicy>& e) = 0; /** * Used by store to determine whether to load content on recovery * or let message load its own content as and when it requires it. diff --git a/cpp/src/qpid/broker/RecoverableMessageImpl.h b/cpp/src/qpid/broker/RecoverableMessageImpl.h index f3ead261c1..a46f5a3676 100644 --- a/cpp/src/qpid/broker/RecoverableMessageImpl.h +++ b/cpp/src/qpid/broker/RecoverableMessageImpl.h @@ -37,6 +37,7 @@ public: ~RecoverableMessageImpl() {}; void setPersistenceId(uint64_t id); void setRedelivered(); + void computeExpiration(const boost::intrusive_ptr<ExpiryPolicy>& ep); bool loadContent(uint64_t available); void decodeContent(framing::Buffer& buffer); void recover(boost::shared_ptr<Queue> queue); diff --git a/cpp/src/qpid/broker/RecoveryManagerImpl.cpp b/cpp/src/qpid/broker/RecoveryManagerImpl.cpp index 6d831563e2..ab89a46a46 100644 --- a/cpp/src/qpid/broker/RecoveryManagerImpl.cpp +++ b/cpp/src/qpid/broker/RecoveryManagerImpl.cpp @@ -186,6 +186,11 @@ void RecoverableMessageImpl::setRedelivered() msg.deliver();//increment delivery count (but at present that isn't recorded durably) } +void RecoverableMessageImpl::computeExpiration(const boost::intrusive_ptr<ExpiryPolicy>& ep) +{ + msg.computeExpiration(ep); +} + void RecoverableQueueImpl::recover(RecoverableMessage::shared_ptr msg) { dynamic_pointer_cast<RecoverableMessageImpl>(msg)->recover(queue); |
