mirror of https://github.com/apache/activemq.git
https://issues.apache.org/jira/browse/AMQ-4297 -resolve intermittent hang/fail of stomp tests
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1442688 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
4650f998db
commit
37ad85e3bd
|
@ -107,20 +107,26 @@ public class StompSubscription {
|
|||
unconsumedMessage.clear();
|
||||
}
|
||||
|
||||
synchronized void onStompCommit(TransactionId transactionId) {
|
||||
for (Iterator<?> iter = dispatchedMessage.entrySet().iterator(); iter.hasNext();) {
|
||||
@SuppressWarnings("rawtypes")
|
||||
Map.Entry entry = (Entry)iter.next();
|
||||
MessageDispatch msg = (MessageDispatch)entry.getValue();
|
||||
if (unconsumedMessage.contains(msg)) {
|
||||
iter.remove();
|
||||
void onStompCommit(TransactionId transactionId) {
|
||||
MessageAck ack = null;
|
||||
synchronized (this) {
|
||||
for (Iterator<?> iter = dispatchedMessage.entrySet().iterator(); iter.hasNext();) {
|
||||
@SuppressWarnings("rawtypes")
|
||||
Map.Entry entry = (Entry)iter.next();
|
||||
MessageDispatch msg = (MessageDispatch)entry.getValue();
|
||||
if (unconsumedMessage.contains(msg)) {
|
||||
iter.remove();
|
||||
}
|
||||
}
|
||||
|
||||
if (!unconsumedMessage.isEmpty()) {
|
||||
ack = new MessageAck(unconsumedMessage.getLast(), MessageAck.STANDARD_ACK_TYPE, unconsumedMessage.size());
|
||||
unconsumedMessage.clear();
|
||||
}
|
||||
}
|
||||
|
||||
if (!unconsumedMessage.isEmpty()) {
|
||||
MessageAck ack = new MessageAck(unconsumedMessage.getLast(), MessageAck.STANDARD_ACK_TYPE, unconsumedMessage.size());
|
||||
// avoid contention with onMessageDispatch
|
||||
if (ack != null) {
|
||||
protocolConverter.getStompTransport().sendToActiveMQ(ack);
|
||||
unconsumedMessage.clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue