Github user michaelandrepearce commented on a diff in the pull request:
https://github.com/apache/activemq-artemis/pull/1752#discussion_r160009754
--- Diff:
artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessage.java
---
@@ -528,8 +543,17 @@ public void decodeHeadersAndProperties(final ByteBuf
buffer) {
private void decodeHeadersAndProperties(final ByteBuf buffer, boolean
lazyProperties) {
messageIDPosition = buffer.readerIndex();
messageID = buffer.readLong();
-
- address = SimpleString.readNullableSimpleString(buffer);
+ int b = buffer.readByte();
+ if (b != DataConstants.NULL) {
+ final int length = buffer.readInt();
+ if (keysInterner != null) {
+ address = keysInterner.intern(buffer, length);
--- End diff --
If you are having separate pools of last seen SimpleStrings instead of
global interning for typed properties keys and values, you should probably pool
address's separate from those. Imagine the pool is size 32 default, very
quickly be used up and find typedproperty keys are invalidating address's in
that last seen pool
---