-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21483/
-----------------------------------------------------------

(Updated May 20, 2014, 11:46 a.m.)


Review request for qpid, Alan Conway, Andrew Stitcher, and Pavel Moravec.


Changes
-------

Made SharedState a pure abstract class, with SharedStateImpl as an 
implementation of that. SharedState now extends Encoding, rather than the other 
way round (which was 'convenient' but logically incorrect). Modified Optional 
template to use scoped_ptr. Removed methods from Message that modify shared 
state, requiring the shared state to be obtained explicitly to make the impact 
clearer (there are only three contexts that require access to this - would 
eventually be nice to avoid the need altogether).


Repository: qpid


Description
-------

Previous releases (e.g. 0.18) used to shared almost all message state. This was 
not correct and the current codebase only shares the incoming message as read 
off the wire. However, this leads to higher memory consumption in the fanout 
case.

There are some optimisations we could make to that. Two different changes are 
included in this patch for review and comment. With these both in place, 1000 
messages shared between 500 queues dropped from taking around 81k to taking 
around 43k as compared with the 0.18 release which took around 27k.

The two changes are:

(1) share some of the immutable items that don't arrive over the wire but don't 
need to be changed per queue, e.g. expiration and publisher

(2) make the annotations map (which seems to take a large amount of memory even 
when empty) optional using a custom template (the boost optional template 
doesn't save any memory).


Diffs (updated)
-----

  /trunk/qpid/cpp/src/qpid/broker/Message.h 1594633 
  /trunk/qpid/cpp/src/qpid/broker/Message.cpp 1594633 
  /trunk/qpid/cpp/src/qpid/broker/PagedQueue.cpp 1594633 
  /trunk/qpid/cpp/src/qpid/broker/RecoveryManagerImpl.cpp 1594633 
  /trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp 1594633 
  /trunk/qpid/cpp/src/qpid/broker/SessionState.cpp 1594633 
  /trunk/qpid/cpp/src/qpid/broker/amqp/Incoming.cpp 1594633 
  /trunk/qpid/cpp/src/qpid/broker/amqp/Message.h 1594633 
  /trunk/qpid/cpp/src/qpid/broker/amqp_0_10/MessageTransfer.h 1594633 
  /trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp 1594633 
  /trunk/qpid/cpp/src/tests/MessageUtils.h 1594633 
  /trunk/qpid/cpp/src/tests/QueueTest.cpp 1594633 

Diff: https://reviews.apache.org/r/21483/diff/


Testing
-------

make test passes


Thanks,

Gordon Sim

Reply via email to