Bug 693721

Summary: Session names longer than 256 bytes cause errors when encoding session management objects
Product: Red Hat Enterprise MRG Reporter: Gordon Sim <gsim>
Component: qpid-cppAssignee: Ernie <eallen>
Status: CLOSED ERRATA QA Contact: Petra Svobodová <psvobodo>
Severity: unspecified Docs Contact:
Priority: medium    
Version: 1.3CC: eallen, fweimer, gsim, jross, psvobodo
Target Milestone: 3.1Keywords: Patch
Target Release: ---Flags: jmorgan: needinfo-
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qpid-cpp-0.30-2 Doc Type: Bug Fix
Doc Text:
AMQP 0-10 allowed session names to be up to 2^16 bytes long. The QMF management schema for the broker defined the name of a session object as being up to 2^8 bytes long. If a session was created with a name greater than 256 bytes, the broker could not send out management objects for the session, and periodic processing failed. Changes to the QMF management tools now support long-named sessions, which fixes the originally reported issue.
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-04-14 13:46:01 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 825141    
Attachments:
Description Flags
Adds "fullName" field and trucates existing "name" field in needed
none
Fixes problem with qpid-stat -u
none
Makes new field optional and fixes qpid-tool display
none
Fixed patch none

Description Gordon Sim 2011-04-05 12:21:36 UTC
Description of problem:

AMQP 0-10 allows session names to be up to 2^16 bytes long; the QMF management schema for the broker however defines the name of a session object as being up to 2^8 bytes long. If a session is created with a name greater than 256 bytes, the broker cannot send out management objects for it i.e. periodic processing fails.

Version-Release number of selected component (if applicable):

1.3

How reproducible:

Readily

Steps to Reproduce:
1. run the following python code against a broker:

  from qpid.messaging import *

  session = Connection.establish("localhost:5672").session(name="a"*1024)
  session.sync()

2. sometimes need to run several times or wait for a bit...
  
Actual results:

Broker crashes (before fix for bug 693407) or logs error in which case management stats for such sessions are not sent out and there may be other failures in sending/processing management data.

Expected results:

No error. Either the management object supports the full length of session name or it accurately truncates it (or the broker rejects such names to begin with).

Additional info:

See bug 693407

Comment 4 Ernie 2014-06-11 18:42:19 UTC
A two part solution is proposed:
1. Truncate the session name when it is stored in the management object.
   A uuid would be prepended to the supplied session name to guarantee uniqueness. 

2. Add a new field in the management schema that handles the full length name. Management tools will need to be updated to use the new field.

Comment 5 Ernie 2014-06-26 13:11:00 UTC
Created attachment 912417 [details]
Adds "fullName" field and trucates existing "name" field in needed

Patch was reviewed and accepted

Comment 8 Ernie 2014-07-11 19:15:23 UTC
Created attachment 917427 [details]
Fixes problem with qpid-stat -u

Modified management schema to name new "fullName" field optional and RO. This allows then new schema to work with existing brokers. 
Modified the SessionState and ManagedSession code to set the new field.

Comment 9 Ernie 2014-07-11 21:18:31 UTC
Created attachment 917432 [details]
Makes new field optional and fixes qpid-tool display

Changes the new "fullName" field to optional. Addresses the qpid-tool formatting by truncating the table header separator to 256 characters.

Comment 12 Ernie 2014-07-16 13:37:29 UTC
Created attachment 918411 [details]
Fixed patch

Fixed previous patch. managemnet-schema.xml is in the correct location now and patch was generated cleanly and not edited.

Comment 14 Gordon Sim 2014-07-16 14:16:07 UTC
Patch applied upstream: http://svn.apache.org/r1611016

Comment 16 Petra Svobodová 2015-01-05 16:13:18 UTC
The long named session are fully supported by QMF management tools now, no exception is raised on the broker side.

Verified on Rhel6-i686 and x86_64 with packages:
qpid-proton-c-devel-0.7-4
qpid-cpp-debuginfo-0.30-4
qpid-cpp-server-devel-0.30-4
qpid-cpp-server-xml-0.30-4
qpid-jca-0.22-2
qpid-java-client-0.30-3
python-qpid-qmf-0.30-2
ruby-qpid-qmf-0.30-2
qpid-java-example-0.30-3
qpid-cpp-client-0.30-4
qpid-cpp-client-devel-0.30-4
qpid-tests-0.30-1
qpid-cpp-server-linearstore-0.30-4
qpid-proton-debuginfo-0.7-4
qpid-proton-c-0.7-4
python-qpid-0.30-2
qpid-qmf-debuginfo-0.30-2
qpid-cpp-server-0.30-4
qpid-cpp-client-rdma-0.30-4
qpid-tools-0.30-3
qpid-cpp-server-ha-0.30-4
ruby-qpid-0.7.946106-2
qpid-jca-zip-0.22-2
qpid-java-common-0.30-3
qpid-qmf-0.30-2
qpid-cpp-server-rdma-0.30-4
qpid-jca-xarecovery-0.22-2
qpid-cpp-client-devel-docs-0.30-4
qpid-qmf-devel-0.30-2

--> VERIFIED

Comment 20 errata-xmlrpc 2015-04-14 13:46:01 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHEA-2015-0805.html