You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by mi...@apache.org on 2019/01/18 22:42:42 UTC
[activemq-artemis] branch master updated: NO-JIRA fix
writableBuffer so that its only visible after sub statements
This is an automated email from the ASF dual-hosted git repository.
michaelpearce pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/master by this push:
new 39ff9f4 NO-JIRA fix writableBuffer so that its only visible after sub statements
new de90d8c This closes #2508
39ff9f4 is described below
commit 39ff9f43b263ca9778b7a156c8ac7ff9b595e6fe
Author: Michael André Pearce <mi...@me.com>
AuthorDate: Fri Jan 18 22:41:17 2019 +0000
NO-JIRA fix writableBuffer so that its only visible after sub statements
Potential race condition. This assignment to writableBuffer is visible to other threads before the subsequent statements are executed.
---
.../org/apache/activemq/artemis/core/message/impl/CoreMessage.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessage.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessage.java
index 7c2ea58..a53c4f2 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessage.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessage.java
@@ -386,11 +386,12 @@ public class CoreMessage extends RefCountMessage implements ICoreMessage {
if (writableBuffer == null) {
synchronized (this) {
if (writableBuffer == null) {
- writableBuffer = new ResetLimitWrappedActiveMQBuffer(BODY_OFFSET, buffer.duplicate(), this);
+ ResetLimitWrappedActiveMQBuffer writableBuffer = new ResetLimitWrappedActiveMQBuffer(BODY_OFFSET, buffer.duplicate(), this);
if (endOfBodyPosition > 0) {
writableBuffer.byteBuf().setIndex(BODY_OFFSET, endOfBodyPosition - BUFFER_HEADER_SPACE + BODY_OFFSET);
writableBuffer.resetReaderIndex();
}
+ this.writableBuffer = writableBuffer;
}
}
}