You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Radek Kraus (JIRA)" <ji...@apache.org> on 2018/03/12 14:22:00 UTC
[jira] [Created] (AMQ-6925) JDBC Store - received messages from
durable topic is not removed after unsubscribe
Radek Kraus created AMQ-6925:
--------------------------------
Summary: JDBC Store - received messages from durable topic is not removed after unsubscribe
Key: AMQ-6925
URL: https://issues.apache.org/jira/browse/AMQ-6925
Project: ActiveMQ
Issue Type: Bug
Components: JDBC
Affects Versions: 5.15.3
Reporter: Radek Kraus
Attachments: JdbcStoreDurableTopicDeleteReceivedMessagesTest.java
It seems, that received messages from durable subscriber is not removed from JDBC persistence layer ({{ACTIVEMQ_MSGS}}), when {{unsubscribe}} operation is invoked.
Let suppose following scenario:
* create (register) durable topic subscriber
* close durable topic subscriber, but leave it "subscribed"
* send 10 messages to topic
* check count messages in JDBC store (10 is expected)
* create (open) durable topic subscriber again and receive 10 messages (no next messages is prepared)
* "unsubscribe" durable topic subscriber ({{session.unsubscribe(...)}})
* check count of messages in JDBC store (0 is expected, but 10 is a reality)
IMHO there is a problem, that {{session.unsubscribe()}} only removes entry from {{ACTIVEMQ_ACKS}} table ({{topicStore.deleteSubscription(...)}}). It means that messages, which are currently present in {{ACTIVEMQ_MSGS}} table are never removed, because the delete statement in {{JDBCPersistenceAdapter.cleanup()}} method joins {{ACTIVEMQ_ACKS}} table (but subscription was already removed).
The "Removing inactive subscribers" has no effect to this test case, because durable subscription is removed from {{TopicRegion.durableSubscriptions}} field, when {{session.unsubscribe(...)}} method is invoked.
Very simple test case is attached.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)