Please report new issues athttps://github.com/DOCGroup
Just that. Support this feature soon.
This doesn't need to be done, LOCATION_FORWARD_PERM has been deprecated before we implemented it ;-) Issue 1486: LOCATE_FORWARD_PERM and hash() (interop) Click here for this issue's archive. Nature: Uncategorized Issue Severity: Summary: Summary: With GIOP 1.2, we added LOCATE_FORWARD_PERM to the protocol, which permanently replaces an IOR with a different one. I believe we shouldn"t have done this because it creates an internal inconsistency. The Object::hash() operation requires that the hash value for a reference must be immutable during its life time. (Unfortunately, "life time" isn"t well-defined.) Discussion: At the final meeting of the Interop2000 rtf, it was agreed that unless fixes to the identified problems could be found, use of locate forward perm should be depricated. Resolution: Since these fixes have not arrived, the resolution proposed is to depricated use of LOCATE_FORWARD_PERM Proposed Revised Text: Add the following statement to 13.4.3.2 at the end of the bullet list containing the explanation for LOCATE_FORWARD_PERM: " Note: Usage of LOCATE_FORWARD_PERM is now depricated, due to problems it causes with the semantics of the Object::hash() operation. LOCATE_FORWARD_PERM features will be removed from future GIOP versions. " Add the following statement to 13.4.6.1 at the end of the bullet list containing the explanation for OBJECT_FORWARD_PERM: " Note: Usage of OBJECT_FORWARD_PERM is now depricated, due to problems it causes with the semantics of the Object::hash() operation. OBJECT_FORWARD_PERM features will be removed from future GIOP versions. " In 15.6, immediately after the paragraph beginning "For GIOP version 1.2, the usage of LOCATION_FORWARD_PERM (OBJECT_FORWARD_PERM) behaves like ...", add the following " Note: Usage of LOCATE_FORWARD_PERM and OBJECT_FORWARD_PERM is now depricated, due to problems it causes with the semantics of the Object::hash() operation. LOCATE_FORWARD_PERM and OBJECT_FORWARD_PERM will be removed from future GIOP versions. Actions taken: June 3, 1998: received issue
Hi Johnny, I'm not sure this is as straight forward as all that. See "23.2.5 - Accessing Server Object Groups". It states: "As object replicas fail and are replaced by new replicas, a stage may be reached at which all of the original replicas, cited in the original interoperable object group reference for the object, are inaccessible. Continued use of the original reference will cause system failure. The LOCATION_FORWARD_PERM exception allows such a reference to be replaced by an updated reference that contains profiles for the new replacement replicas. Thus, the LOCATION_FORWARD_PERM exception is not deprecated when it is used to return an interoperable object group reference. The use of the LOCATION_FORWARD_PERM exception to return a reference that is not an interoperable object group reference continues to be deprecated." To be fully fault tolerant TAO should be able to take the appropriate and distinct action when it receives one.
You are right, did miss the FT part, reopen
Created attachment 510 [details] tar-gz containing patch and tests
The tar-gz, attached 03/28/06, contains the feature patch for LOCATION_FORWARD_PERM, and unit tests, to test the feature. To use this feature, the applications must be linked against libraries "pi_server" and "ftorb", for example see test application TAO/orbsvcs/tests/FaultTolerance/GroupRef_Manipulation. The LOCATION_FORWARD_PERM will be sent by server instead of normal LOCATION_FORWARD, if two conditions are given: * the incoming request message has a FT-service-context attached. * the forward-location object which shall be returned to client contains FT-TaggedComponents in first profile (index 0), for details see FT_Service_Callbacks::is_permanent_forward_condition(). The receiving side will receive the LOCATION_FORWARD_PERM target and handles it similar to normal LOCATION_FORWARD, the only difference is that TAO_Stub::add_forward_object() will be called with flag indicating it should be handled as permanent forward. Due to the fact that the "base_profiles" within each TAO_Stub must be constant for hashing purpose and not protected against concurrent access the "base_profiles" are not replaced by new permanent target. Instead following design has been choosen, using the thread-safe "forward_profiles" stack. In case the client receives a LOCATION_FORWARD_PERM in object's TAO_Stub the complete forward_profiles_ stack will be reset and the permanent target will be pushed onto. A new TAO_Stub member-attribute will mark the new "permanent" target; more non-permanent forward locations can be handled and are pushed onto the stack. Non-permanent forward targets can be popped from stack if not reachable anymore, until the "permanent" targets (MProfile) at bottom are reached. This feature of TAO_Stub is tested with TAO/tests/Permanent_Forward. As before, hashvalues of objects references are computed based on TAO_Stub::base_profiles_. No difference with IOGRs, here the hashvalue is computed based on group-id encoded in base_profiles. Therefore for IOGR, it does not make a difference calculating hash-values based on base_profiles or the new permanent target profiles after LOCATION_FORWARD_PERM. Marshaling object references, the new permanent-targets on bottom of "forward_profiles" stack take precedence, otherwise the "base_profiles" are marshaled into stream. This has the following consequence, if object-references are initialized from corbalocs, and permanently forwarded later to IOGR object reference, identity is not retained after transformation to stringified representation and back. This is due to the fact that corbalocs do not feature FT-Groups. If identity is required, FT-objects must be initilized from stringified or binary IOGR. NICE-TO_Have for future releases: introduce service-configuration to enable/disable the LOCATION_FORWARD_PERM feature.
patch has been committed: Commit authorized, you are a member of the release team Checking in TAO/orbsvcs/orbsvcs/FaultTolerance/FT_Service_Callbacks.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_Service_Callbacks.cpp,v <-- FT_Service_Callbacks.cpp new revision: 1.36; previous revision: 1.35 done Checking in TAO/orbsvcs/orbsvcs/FaultTolerance/FT_Service_Callbacks.h; /project/cvs-repository/ACE_wrappers-repository/TAO/orbsvcs/orbsvcs/FaultTolerance/FT_Service_Callbacks.h,v <-- FT_Service_Callbacks.h new revision: 1.26; previous revision: 1.25 done Checking in TAO/orbsvcs/tests/FaultTolerance/GroupRef_Manipulation/Server_Request_Interceptor.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/orbsvcs/tests/FaultTolerance/GroupRef_Manipulation/Server_Request_Interceptor.cpp,v <-- Server_Request_Interceptor.cpp new revision: 1.17; previous revision: 1.16 done Checking in TAO/orbsvcs/tests/FaultTolerance/GroupRef_Manipulation/Server_Request_Interceptor.h; /project/cvs-repository/ACE_wrappers-repository/TAO/orbsvcs/tests/FaultTolerance/GroupRef_Manipulation/Server_Request_Interceptor.h,v <-- Server_Request_Interceptor.h new revision: 1.3; previous revision: 1.2 done Checking in TAO/orbsvcs/tests/FaultTolerance/GroupRef_Manipulation/client.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/orbsvcs/tests/FaultTolerance/GroupRef_Manipulation/client.cpp,v <-- client.cpp new revision: 1.5; previous revision: 1.4 done Checking in TAO/orbsvcs/tests/FaultTolerance/GroupRef_Manipulation/test.idl; /project/cvs-repository/ACE_wrappers-repository/TAO/orbsvcs/tests/FaultTolerance/GroupRef_Manipulation/test.idl,v <-- test.idl new revision: 1.4; previous revision: 1.3 done Checking in TAO/tao/GIOP_Message_Base.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/GIOP_Message_Base.cpp,v <-- GIOP_Message_Base.cpp new revision: 1.119; previous revision: 1.118 /home/frehberger/dead.letter... Saved message in /home/frehberger/dead.letter /home/frehberger/dead.letter... Saved message in /home/frehberger/dead.letter done Checking in TAO/tao/GIOP_Message_Generator_Parser.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/GIOP_Message_Generator_Parser.cpp,v <-- GIOP_Message_Generator_Parser.cpp new revision: 1.16; previous revision: 1.15 done Checking in TAO/tao/Invocation_Adapter.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Invocation_Adapter.cpp,v <-- Invocation_Adapter.cpp new revision: 1.25; previous revision: 1.24 done Checking in TAO/tao/Invocation_Adapter.h; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Invocation_Adapter.h,v <-- Invocation_Adapter.h new revision: 1.20; previous revision: 1.19 done Checking in TAO/tao/ORB_Core.h; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/ORB_Core.h,v <-- ORB_Core.h new revision: 1.301; previous revision: 1.300 done Checking in TAO/tao/ORB_Core.i; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/ORB_Core.i,v <-- ORB_Core.i new revision: 1.161; previous revision: 1.160 done Checking in TAO/tao/Object.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Object.cpp,v <-- Object.cpp new revision: 1.175; previous revision: 1.174 /home/frehberger/dead.letter... Saved message in /home/frehberger/dead.letter done Checking in TAO/tao/Service_Callbacks.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Service_Callbacks.cpp,v <-- Service_Callbacks.cpp new revision: 1.17; previous revision: 1.16 done Checking in TAO/tao/Service_Callbacks.h; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Service_Callbacks.h,v <-- Service_Callbacks.h new revision: 1.19; previous revision: 1.18 done Checking in TAO/tao/Stub.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Stub.cpp,v <-- Stub.cpp new revision: 1.172; previous revision: 1.171 /home/frehberger/dead.letter... Saved message in /home/frehberger/dead.letter done Checking in TAO/tao/Stub.h; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Stub.h,v <-- Stub.h new revision: 1.113; previous revision: 1.112 done Checking in TAO/tao/Stub.i; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Stub.i,v <-- Stub.i new revision: 1.54; previous revision: 1.53 done Checking in TAO/tao/Synch_Invocation.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Synch_Invocation.cpp,v <-- Synch_Invocation.cpp new revision: 1.34; previous revision: 1.33 done Checking in TAO/tao/TAO_Server_Request.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/TAO_Server_Request.cpp,v <-- TAO_Server_Request.cpp new revision: 1.50; previous revision: 1.49 done Checking in TAO/tao/DynamicInterface/DII_Invocation_Adapter.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/DynamicInterface/DII_Invocation_Adapter.cpp,v <-- DII_Invocation_Adapter.cpp new revision: 1.13; previous revision: 1.12 /home/frehberger/dead.letter... Saved message in /home/frehberger/dead.letter done Checking in TAO/tao/DynamicInterface/Request.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/DynamicInterface/Request.cpp,v <-- Request.cpp new revision: 1.42; previous revision: 1.41 done Checking in TAO/tao/Messaging/Asynch_Invocation_Adapter.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Messaging/Asynch_Invocation_Adapter.cpp,v <-- Asynch_Invocation_Adapter.cpp new revision: 1.20; previous revision: 1.19 done Checking in TAO/tao/Messaging/Asynch_Reply_Dispatcher.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Messaging/Asynch_Reply_Dispatcher.cpp,v <-- Asynch_Reply_Dispatcher.cpp new revision: 1.23; previous revision: 1.22 done Checking in bin/tao_orb_tests.lst; /project/cvs-repository/ACE_wrappers-repository/bin/tao_orb_tests.lst,v <-- tao_orb_tests.lst new revision: 1.98; previous revision: 1.97 done /home/frehberger/dead.letter... Saved message in /home/frehberger/dead.letter Checking in ChangeLog; /project/cvs-repository/ACE_wrappers-repository/ChangeLog,v <-- ChangeLog /home/frehberger/dead.letter... Saved message in /home/frehberger/dead.letter new revision: 4.10077; previous revision: 4.10076 /home/frehberger/dead.letter... Saved message in /home/frehberger/dead.letter done RCS file: /project/cvs-repository/ACE_wrappers-repository/TAO/tests/Permanent_Forward/Permanent_Forward.mpc,v done Checking in TAO/tests/Permanent_Forward/Permanent_Forward.mpc; /project/cvs-repository/ACE_wrappers-repository/TAO/tests/Permanent_Forward/Permanent_Forward.mpc,v <-- Permanent_Forward.mpc initial revision: 1.1 done RCS file: /project/cvs-repository/ACE_wrappers-repository/TAO/tests/Permanent_Forward/run_test.pl,v done Checking in TAO/tests/Permanent_Forward/run_test.pl; /project/cvs-repository/ACE_wrappers-repository/TAO/tests/Permanent_Forward/run_test.pl,v <-- run_test.pl initial revision: 1.1 done RCS file: /project/cvs-repository/ACE_wrappers-repository/TAO/tests/Permanent_Forward/StubTest.cpp,v done Checking in TAO/tests/Permanent_Forward/StubTest.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tests/Permanent_Forward/StubTest.cpp,v <-- StubTest.cpp initial revision: 1.1 done RCS file: /project/cvs-repository/ACE_wrappers-repository/TAO/tests/Permanent_Forward/README,v done Checking in TAO/tests/Permanent_Forward/README; /project/cvs-repository/ACE_wrappers-repository/TAO/tests/Permanent_Forward/README,v <-- README initial revision: 1.1 done
I don't see a changelog entry
Wed Mar 29 17:15:00 UTC 2006 Frank Rehberger <frehberger@prismtech.com> Guard reply_status() operation with if-else-endif macro for MINIMUM builds. Checking in ChangeLog; /project/cvs-repository/ACE_wrappers-repository/TAO/ChangeLog,v <-- ChangeLog new revision: 1.7746; previous revision: 1.7745 done Checking in ./tao/DynamicInterface/DII_Invocation_Adapter.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/DynamicInterface/DII_Invocation_Adapter.cpp,v <-- DII_Invocation_Adapter.cpp new revision: 1.14; previous revision: 1.13 done Checking in ./tao/Messaging/Asynch_Invocation_Adapter.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Messaging/Asynch_Invocation_Adapter.cpp,v <-- Asynch_Invocation_Adapter.cpp new revision: 1.21; previous revision: 1.20 done Checking in ./tao/Invocation_Adapter.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Invocation_Adapter.cpp,v <-- Invocation_Adapter.cpp new revision: 1.26; previous revision: 1.25 done
Sorry, the ChangeLog entry slipped thru, has been comitted a bit later: ChangeLogTag: Tue Mar 28 23:59:00 UTC 2006 Frank Rehberger <frehberger@prismtech.com> /project/cvs-repository/ACE_wrappers-repository/TAO/ChangeLog,v <-- ChangeLog new revision: 1.7742; previous revision: 1.7741
ChangeLogTag: Thu Mar 30 03:30:00 UTC 2006 Frank Rehberger <frehberger@prismtech.com> * TAO/tao/Stub.i: add missing call to orb_core->reinitialize_object (this), to optimize for colocal case. * TAO/tests/Permanent_Forward/StubTest.cpp: Removed code at end of test, which caused error messages even if the test run thru all test-cases successfully. Checking in ChangeLog; /project/cvs-repository/ACE_wrappers-repository/TAO/ChangeLog,v <-- ChangeLog new revision: 1.7749; previous revision: 1.7748 done Checking in tao/Stub.i; /project/cvs-repository/ACE_wrappers-repository/TAO/tao/Stub.i,v <-- Stub.i new revision: 1.55; previous revision: 1.54 done Checking in tests/Permanent_Forward/StubTest.cpp; /project/cvs-repository/ACE_wrappers-repository/TAO/tests/Permanent_Forward/StubTest.cpp,v <-- StubTest.cpp new revision: 1.2; previous revision: 1.1 done
Colocal LOCATION_FORWARD(_PERM) case currently not supported, due to bug reported in 2301
Setting to fixed.