Please report new issues athttps://github.com/DOCGroup
Using service "TAO_OBJID_IORMANIPULATION" to merge IORs, the new IOR contains shallow copies of original profiles. Now, manipulating the merged IOR has side-effects on profiles of original IORs, eg. adding FT-primary-property to merged IOR to achieve GroupObject, this property also shows up in one of original IORs. In consequence, executing the following code twice (same IORs as input both times) the second time TAO_IOP::Duplicate is raised by operation set_primary(). Workarround: merging IORs should be based on deep copies, using the pattern string_to_object(object_to_string(orig_ior)): // Get an object reference for the ORBs IORManipultion object! CORBA::Object_var IORM = orb->resolve_initial_references (TAO_OBJID_IORMANIPULATION, 0 ACE_ENV_ARG_PARAMETER); ACE_CHECK; TAO_IOP::TAO_IOR_Manipulation_var iorm = TAO_IOP::TAO_IOR_Manipulation::_narrow (IORM.in() ACE_ENV_ARG_PARAMETER); ACE_CHECK; TAO_IOP::TAO_IOR_Manipulation::IORList iors (2); iors.length(2); iors [0] = CORBA::Object::_duplicate (obj0); iors [1] = CORBA::Object::_duplicate (obj1); // Create a new IOR CORBA::Object_var merged = iorm->merge_iors (iors ACE_ENV_ARG_PARAMETER); // Construct the IOGR Property class TAO_FT_IOGR_Property iogr_prop (ft_tag_component); // Set the property for object 1 CORBA::Boolean ft_tag = iorm->set_property (&iogr_prop, merged.in (), ACE_ENV_ARG_PARAMETER); ACE_CHECK; if (ft_tag) { retval = iorm->set_primary (&iogr_prop, obj0, merged.in () ACE_ENV_ARG_PARAMETER); ACE_CHECK; } else
Created attachment 476 [details] tar.gz contains modified IOGRManagement test, testing for side effects
Calling run_test.pl the test should fail with "side-effect error message".
taking
Simon, any ETA on integration of this test and possible fix?
Still valid
Any update?