Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
qpid-java-broker-7.0.0
-
None
Description
We are seeing a slowdown in the Java Broker for the 0-10 protocol since February 2017. Investigation with JProfiler is pointing to the introduction of the ring queue feature as being a possible cause. The performance drop is most apparent with on the transient profiles, where the drop is around ~2-3%.
The problem is the new call to MessageMetaData_0_10#getStorableSize made from AbstractQueueEntryList#updateStatsOnEnqueue. On the 0-10 path, this causes the header delivery properties/message properties/non standard delivery properties to be encoded in order to compute the store size. This encoding step is separate to the encoding step that takes place when the message is sent to a consumer. The up shot is that the headers for a transient message that is not flown to disk are now encoded twice rather than once.