Bug 784192 - qpid libraries API compatibility issue with qpid::types::Variant::fromString() and qpid::types::from_string<>()
Summary: qpid libraries API compatibility issue with qpid::types::Variant::fromString(...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp
Version: 2.1
Hardware: Unspecified
OS: Unspecified
high
high
Target Milestone: 2.1.2
: ---
Assignee: Justin Ross
QA Contact: Frantisek Reznicek
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-01-24 08:27 UTC by Frantisek Reznicek
Modified: 2015-11-16 01:13 UTC (History)
2 users (show)

Fixed In Version: qpid-cpp-mrg-0.14-5
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed:
Target Upstream Version:


Attachments (Terms of Use)

Description Frantisek Reznicek 2012-01-24 08:27:59 UTC
Description of problem:

The API compatibility checker highlighted following issues:

  [A]
  Short API check summary between libqpidtypes.qpid-cpp-mrg-debuginfo-0.10-8.el5.i386.current and libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-4.el5.i386: (199 matching, 0 new and 1 missing symbols)
  .following symbols are MISSING: (cnt:1, cnt before exclusion:1)
    qpid::types::Variant::fromString(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
  [13:38:00] .ERROR:failed! (ecode:1)
  

  [B]
  [13:38:00] Comparing library libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-4.el5.i386 vs. libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-22/28/34.el5.i386.current
  Short API check summary between libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-22/28/34.el5.i386.current and libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-4.el5.i386: (197 matching, 2 new and 4 missing symbols)
  .following symbols are MISSING: (cnt:3, cnt before exclusion:4)
    qpid::types::Variant::fromString(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    bool qpid::types::from_string<int>(int&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    bool qpid::types::from_string<double>(double&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
  [13:38:00] .ERROR:failed! (ecode:3)


The API changed and if we want to guarantee backward compatibility we need to add above missing symbols.


Version-Release number of selected component (if applicable):
libqpidtypes.qpid-cpp-mrg-debuginfo-0.14*

How reproducible:
100%

Steps to Reproduce:
1. nm or readelf on libqpidtypes on versions 0.7.946106-* / 0.10-* /0.14-*
2. compare
  
Actual results:
Some public exports from libqpidtypes are missing.

Expected results:
No public exports from libqpidtypes should be missing.

Additional info:

Comment 1 Frantisek Reznicek 2012-01-24 11:58:47 UTC
The API changed and if we want to guarantee backward compatibility we need to
add above missing symbols.

The decision has to be made.

Raising NEEDINFO for Justin.

Comment 2 Justin Ross 2012-01-24 16:52:56 UTC
AFAIK, we plan to maintain compatibility until for this item until a major version change.  I'll ensure it goes into our patch.

Comment 4 Frantisek Reznicek 2012-02-20 09:24:51 UTC
The above patch was applied, but there are still two problems on following builds:
  qpid-cpp-mrg-0.14-5.el5
  qpid-cpp-0.14-6.el6.x86_64

Linked test still highlights that following symbols (from B] case) are missing:

  [12:51:55] Comparing library libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-5.el5.i386 vs. libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-22.el5.i386.current
  Short API check summary between libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-22.el5.i386.current and libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-5.el5.i386: (198 matching, 2 new and 3 missing symbols)
  .following symbols are MISSING: (cnt:2, cnt before exclusion:3)
    bool qpid::types::from_string<int>(int&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    bool qpid::types::from_string<double>(double&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
  [12:51:55] .ERROR:failed! (ecode:2)
  [12:51:55] Comparing library libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-5.el5.i386 vs. libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-28.el5.i386.current
  Short API check summary between libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-28.el5.i386.current and libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-5.el5.i386: (198 matching, 2 new and 3 missing symbols)
  .following symbols are MISSING: (cnt:2, cnt before exclusion:3)
    bool qpid::types::from_string<int>(int&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    bool qpid::types::from_string<double>(double&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
  [12:51:55] .ERROR:failed! (ecode:2)
  [12:51:55] Comparing library libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-5.el5.i386 vs. libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-34.el5.i386.current
  Short API check summary between libqpidtypes.qpid-cpp-mrg-debuginfo-0.7.946106-34.el5.i386.current and libqpidtypes.qpid-cpp-mrg-debuginfo-0.14-5.el5.i386: (198 matching, 2 new and 3 missing symbols)
  .following symbols are MISSING: (cnt:2, cnt before exclusion:3)
    bool qpid::types::from_string<int>(int&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    bool qpid::types::from_string<double>(double&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)



The patch fixes just part of the issues (not all template ool qpid::types::from_string<> methods are available).


-> ASSIGNED

Comment 5 Justin Ross 2012-02-25 20:33:42 UTC
Case B is not a regression in 0.14 but in 0.10.  It's also not a practical difficulty; therefore, we'll proceed without repairing this for 2.1.2/0.14-mrg.  Case A is fixed, so I'm moving this to modified.

Comment 6 Frantisek Reznicek 2012-02-29 13:55:30 UTC
Thanks for check. Retested.

The issue has been partially fixed and partially waived. Tested on RHEL 5.7 / 6.2 i[36]86 / x86_64 on packages:
  python-qpid-0.14-4.el5
  python-qpid-qmf-0.14-3.el5
  qpid-cpp-client-0.14-7.el5
  qpid-cpp-client-devel-0.14-7.el5
  qpid-cpp-client-devel-docs-0.14-7.el5
  qpid-cpp-client-rdma-0.14-7.el5
  qpid-cpp-client-ssl-0.14-7.el5
  qpid-cpp-mrg-debuginfo-0.14-7.el5
  qpid-cpp-server-0.14-7.el5
  qpid-cpp-server-cluster-0.14-7.el5
  qpid-cpp-server-devel-0.14-7.el5
  qpid-cpp-server-rdma-0.14-7.el5
  qpid-cpp-server-ssl-0.14-7.el5
  qpid-cpp-server-store-0.14-7.el5
  qpid-cpp-server-xml-0.14-7.el5
  qpid-java-client-0.14-3.el5
  qpid-java-common-0.14-3.el5
  qpid-java-example-0.14-3.el5
  qpid-qmf-0.14-3.el5
  qpid-qmf-debuginfo-0.14-3.el5
  qpid-qmf-devel-0.14-3.el5
  qpid-tests-0.14-1.el5
  qpid-tools-0.14-1.el5
  rh-qpid-cpp-tests-0.14-7.el5
  ruby-qpid-qmf-0.14-3.el5

-> VERIFIED


Note You need to log in before you can comment on or make changes to this bug.