[
https://issues.apache.org/jira/browse/ARTEMIS-3285?focusedWorklogId=598000&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-598000
]
ASF GitHub Bot logged work on ARTEMIS-3285:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 17/May/21 18:22
Start Date: 17/May/21 18:22
Worklog Time Spent: 10m
Work Description: jbertram commented on a change in pull request #3583:
URL: https://github.com/apache/activemq-artemis/pull/3583#discussion_r633554319
##########
File path:
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/LastValueQueue.java
##########
@@ -259,6 +251,8 @@ public QueueConfiguration getQueueConfiguration() {
private void replaceLVQMessage(MessageReference ref, HolderReference hr) {
MessageReference oldRef = hr.getReference();
+// logger.info("Replacing " + oldRef + " with " + ref);
Review comment:
fixed
##########
File path:
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
##########
@@ -133,7 +133,7 @@
protected static final int CRITICAL_CONSUMER = 3;
protected static final int CRITICAL_CHECK_DEPAGE = 4;
- private static final Logger logger = Logger.getLogger(QueueImpl.class);
+ protected static final Logger logger = Logger.getLogger(QueueImpl.class);
Review comment:
fixed
##########
File path: tests/config/logging.properties
##########
@@ -68,4 +68,5 @@ handler.TEST.formatter=PATTERN
# Formatter pattern configuration
formatter.PATTERN=org.jboss.logmanager.formatters.PatternFormatter
formatter.PATTERN.properties=pattern
-formatter.PATTERN.pattern=[%t] %d{HH:mm:ss,SSS} %-5p [%c] %s%E%n
+#formatter.PATTERN.pattern=[%t] %d{HH:mm:ss,SSS} %-5p [%c] %s%E%n
+formatter.PATTERN.pattern=%d{HH:mm:ss,SSS} %-5p %s%E%n
Review comment:
No. I just fixed it.
##########
File path:
tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/JMSNonDestructiveTest.java
##########
@@ -588,4 +599,87 @@ private void sendLVQTombstone(ConnectionSupplier
producerConnectionSupplier, Str
producer.send(message1, javax.jms.Message.DEFAULT_DELIVERY_MODE,
javax.jms.Message.DEFAULT_PRIORITY, tombstoneTimeToLive);
}
}
+
+ @Test
+ public void testMultipleLastValuesCore() throws Exception {
+ testMultipleLastValues(CoreConnection);
+ }
+
+ @Test
+ public void testMultipleLastValuesAMQP() throws Exception {
+ testMultipleLastValues(AMQPConnection);
+ }
+
+ private void testMultipleLastValues(ConnectionSupplier connectionSupplier)
throws Exception {
+ HashMap<String, List<String>> results = new HashMap<>();
+ results.put("0", new ArrayList<>());
+ results.put("1", new ArrayList<>());
+ results.put("2", new ArrayList<>());
+ HashMap<String, Integer> dups = new HashMap<>();
+
+ try (Connection connection = connectionSupplier.createConnection();
+ Connection connection2 = connectionSupplier.createConnection()) {
+ Session session = connection.createSession(false,
Session.CLIENT_ACKNOWLEDGE);
+ Session session2 = connection2.createSession(false,
Session.CLIENT_ACKNOWLEDGE);
+
+ Queue queue = session.createQueue(NON_DESTRUCTIVE_LVQ_QUEUE_NAME);
+
+ MessageProducer producer = session2.createProducer(queue);
+ MessageConsumer consumer = session.createConsumer(queue);
+ connection.start();
+
+ Thread t = new Thread(() -> {
+ for (int i = 0; i < 100; i++) {
+ String lastval = "" + (i % 3);
+ try {
+ TextMessage message = session2.createTextMessage();
+ message.setText("" + i);
+ message.setStringProperty("data", "" + i);
+ message.setStringProperty("lastval", lastval);
+
message.setStringProperty(Message.HDR_LAST_VALUE_NAME.toString(), lastval);
+ producer.send(message);
+ } catch (JMSException e) {
+ e.printStackTrace();
+ }
+ }
+ });
+
+ t.start();
+ while (true) {
+ TextMessage tm = (TextMessage) consumer.receive(500);
+ if (tm == null) {
+ break;
+ }
+ results.get(tm.getStringProperty("lastval")).add(tm.getText());
+ tm.acknowledge();
+ }
+ }
+ for (Map.Entry<String, List<String>> entry : results.entrySet()) {
+ StringBuilder message = new StringBuilder();
+ message.append("Messages received with lastval=" + entry.getKey() + "
(");
+ for (String s : entry.getValue()) {
+ int occurrences = Collections.frequency(entry.getValue(), s);
+ if (occurrences > 1 && !dups.containsValue(Integer.parseInt(s))) {
+ dups.put(s, occurrences);
+ }
+ message.append(s + ",");
+ }
+ logger.info(message + ")");
+
+ }
+ if (dups.size() > 0) {
+ StringBuffer sb = new StringBuffer();
+ for (Map.Entry<String, Integer> stringIntegerEntry : dups.entrySet())
{
+ sb.append(stringIntegerEntry.getKey() + "(" +
stringIntegerEntry.getValue() + "),");
+ }
+ Assert.fail("Duplicate messages received " + sb);
+ }
+
+ if (persistenceEnabled) {
+ Wait.assertTrue(() -> {
Review comment:
The test class is using `Parameterized` and if persistence is disabled
then `countJournal` throws a bunch of exceptions.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 598000)
Time Spent: 4h 20m (was: 4h 10m)
> Potential duplicate messages with LVQ + non-destructive
> -------------------------------------------------------
>
> Key: ARTEMIS-3285
> URL: https://issues.apache.org/jira/browse/ARTEMIS-3285
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Reporter: Justin Bertram
> Assignee: Justin Bertram
> Priority: Major
> Time Spent: 4h 20m
> Remaining Estimate: 0h
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)