Bug 2805 - Collocated AMI calls show parameter corruption
Summary: Collocated AMI calls show parameter corruption
Status: RESOLVED FIXED
Alias: None
Product: TAO
Classification: Unclassified
Component: AMI (show other bugs)
Version: 1.5.6
Hardware: All All
: P3 normal
Assignee: Johnny Willemsen
URL:
Depends on: 2806
Blocks: 2351
  Show dependency tree
 
Reported: 2007-02-13 11:52 CST by hans.utz
Modified: 2007-04-23 07:25 CDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description hans.utz 2007-02-13 11:52:41 CST
On invocation of a collocated AMI method, in-parameters become corrupted.
A test-case is added to the test/AMI/client.cpp, that demonstrates the problem.
Comment 1 Johnny Willemsen 2007-02-13 13:58:01 CST
accept, regression is in svn
Comment 2 Johnny Willemsen 2007-04-09 03:14:25 CDT
mine
Comment 3 Johnny Willemsen 2007-04-11 08:32:35 CDT
Wed Apr 11 13:32:12 UTC 2007  Johnny Willemsen  <jwillemsen@remedy.nl>

        * tests/AMI/ami_test_i.cpp:
          Fixed small bug in this test code that could lead to an
          incorrect return value when the parameters are checked.
Comment 4 Johnny Willemsen 2007-04-15 01:21:38 CDT
Sun Apr 15 06:18:56 UTC 2007 Johnny Willemsen  <jwillemsen@remedy.nl>

        * tests/AMI/client.cpp:
        * tests/AMI/AMI.mpc:
        * tests/AMI/run_test.pl:
        * tests/Bug_2805_Regression/*:
          Moved test for bug 2805 to its own regression, now the AMI
          test should succeed again, but 2805 is failing
Comment 5 Johnny Willemsen 2007-04-20 03:09:05 CDT
Fri Apr 20 08:05:12 UTC 2007 Johnny Willemsen  <jwillemsen@remedy.nl>

        * tao/PortableServer/Collocated_Arguments_Converter.cpp:
        * tao/PortableServer/Collocated_Arguments_Converter.h:
        * tao/PortableServer/DII_Arguments_Converter.cpp:
        * tao/PortableServer/DII_Arguments_Converter.h:
          Refactored the DII argument to a generic collocated argument
          converter. The issue that was solved for DII is also valid
          for AMI. Also made a method for converting the request and
          one for the reply, converting the reply is now not done yet but
          we do know that also fails.

        * tao/PortableServer/Upcall_Wrapper.cpp:
          Changed how the argument converter is retrieved. Instead of retrieving
          it using service configurator we put a pointer in the operation details
          which is set or not.

        * tao/DynamicInterface/DII_Arguments_Converter_Impl.cpp:
        * tao/DynamicInterface/DII_Arguments_Converter_Impl.h:
          Updated because the DII base class is renamed:

        * tao/DynamicInterface/DII_Invocation_Adapter.cpp:
        * tao/DynamicInterface/DII_Invocation_Adapter.h:
          Added new adapter for oneway DII calls so that this adapter can
          set the DII Argument Converter for DII oneway calls.

        * tao/DynamicInterface/Request.cpp:
          Use false instead of 0, layout changes, use new DII Oneway adapter.

        * tao/DynamicInterface/Request.h:
        * tao/Protocol_Factory.cpp:
        * tao/IIOP_Profile.cpp:
        * tao/PI/PolicyFactoryC.cpp:
          Layout changes

        * tao/DynamicInterface/Request.inl:
          Use false instead of 0

        * tao/DynamicInterface/Server_Request.inl:
          Use static_cast instead of c-style cast

        * tao/IIOP_Connector.cpp:
          Fixed an inconsistent debug statement

        * tao/Invocation_Adapter.cpp:
        * tao/Invocation_Adapter.h:
        * tao/Invocation_Adapter.inl:
          Layout changes and no need to have a member whether we are
          a DII invocation or not

        * tao/Makefile.am:
          Updated for new files

        * tao/Messaging/AMI_Arguments_Converter_Impl.cpp:
        * tao/Messaging/AMI_Arguments_Converter_Impl.h:
          New AMI argument converter

        * tao/Messaging/Asynch_Invocation_Adapter.cpp:
          Use the new AMI argument converter which fixes bugzilla 2805. Also
          use the

        * tao/Messaging/Messaging_Loader.cpp:
          Added include of the AMI Argument converter

        * tao/operation_details.cpp:
        * tao/operation_details.h:
        * tao/operation_details.inl:
          Instead of storing whether we have a DII call or not, we store
          a pointer to a collocated argument converter that is set or not set

        * tao/ORB_Core.cpp:
        * tao/ORB_Core.h:
        * tao/params.cpp:
        * tao/params.h:
        * tao/params.inl:
          Added a new -ORBAMICollication which is default yes. If this is no,
          then when a collocated AMI invocation is made, the call is converted
          to a remote call so that another thread can handle the servant. Also
          the problems with argument corruption are then gone. This is for
          bugzilla 2351.

        * tao/Profile.h:
          Documentation fix

        * tao/Profile_Transport_Resolver.cpp:
        * tao/Profile_Transport_Resolver.h:
        * tao/PortableServer/POAManager.h:
        * tao/PortableServer/POAManagerFactory.cpp:
          Layout changes

        * tao/Stub.inl:
        * tao/TAO_Server_Request.cpp:
        * tao/TAO_Server_Request.h:
        * tao/TAO_Server_Request.inl:
          Bool changes

        * tao/TkResource/TkResource_Factory.h:
        * tao/QtResource/QtResource_Factory.h:
          Removed not used mutex

        * tao/Valuetype/AbstractBase.cpp:
          Bool change

        * docs/Options.html:
          Document new ORBAMICollocation option, this is default yes which
          means that when a collocated AMI call is made the servant is invoked
          using the client thread. When this option is no, when a collocated AMI
          call is made, this is converted to a remote call so that a different
          thread can be used to invoke the servant.
Comment 6 Steve Totten 2007-04-23 07:21:05 CDT
Johnny Willemsen  23-April-2007 12:46 AM US Central wrote:

> The regression for 2805 is failing because 2806 is not fixed yet. I am
> working on that but it will take probably until next week until I have made
> all changes for fixing that bug.

Reopened Bug 2805, which is now blocked by Bug 2806.
Comment 7 Johnny Willemsen 2007-04-23 07:25:35 CDT
this one is fixed. 2806 itself is not fixed, but the problem with parameter corruption is, so closing this one