cshannon commented on PR #1851:
URL: https://github.com/apache/activemq/pull/1851#issuecomment-4146024497

   I started looking at this briefly and the optimization is necessary to avoid 
OOM and because wasting twice as much memory is not great when there are a 
large amount of messages in memory. The optimization was added because when 
there are a lot of messages in cache in the broker you can easily have an OOM 
error. The problem is the memory usage tracking isn't aware that the data is 
stored twice so you can blow past the configured memory limits. We could 
account for both copies for memory tracking which would fix OOM but then still 
the issue of wasting a ton of space.
   
   As you pointed out, the general idea is to operate on independent copies so 
the broker is _supposed_ to make copies so 2 threads are not touching the same 
message, which is the 3rd solution you mentioned and has been preferred. So we 
may ultimately want to go the copy option.
   
   Other ideas include creating broker specific versions of the message classes 
that were thread safe but that might be a huge pain to do or maybe we could 
just only store the text as bytes (and never text) but then there is the 
conversion penalty each time you called getText()
   
   @arnoudja - can you better explain what you mean that synchronization 
wouldn't solve the issues? We have avoided it so far of course but it should be 
possible to add a lock internally to prevent two threads interfering. I am 
still hesitant to do this and if we did we'd probably need to add sync to all 
the classes but I am going to explore the option at least when looking at this 
more.


-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to