Bug 890

Summary: ServiceContextList optimization on connection retry broken
Product: TAO Reporter: Ossama Othman <ossama.othman>
Component: ORBAssignee: DOC Center Support List (internal) <tao-support>
Status: RESOLVED FIXED    
Severity: major    
Priority: P3    
Version: 1.1.14   
Hardware: All   
OS: All   
Bug Depends on: 1189, 1190    
Bug Blocks:    

Description Ossama Othman 2001-04-30 22:47:05 CDT
The optimization(s) that prevents IOP::ServiceContexts from being added to the 
outgoing request IOP::ServiceContextList upon a connection retry (e.g. 
LOCATION_FORWARD or a transport retry) also prevents the 
PortableInterceptor::ClientRequestInfo::add_request_service_context() method 
from working properly.

That method may potentially attempt to add a IOP::ServiceContext during each 
connection retry.  However, the optimization in question prevents the 
IOP::ServiceContextList from being reset.  As such, 
add_request_service_context) may fail due to the duplicate already in the 
service context list.

In my opinion, we should drop this optimization.  Besides, how often do 
LOCATION_FORWARDs or transport retries occur compared to successful 
invocations?  I think that we can simply set the IOP::ServiceContextList length 
to zero.  That way, we can reset the contents of the request 
IOP::ServiceContextList without causing additional allocations due to service 
context list growth since the underlying buffer will not be deallocated when 
reducing the length of the list.
Comment 1 Ossama Othman 2001-05-10 12:11:08 CDT
Accepted.  We may or may not get to this before TAO 1.2 is released.
Comment 2 Nanbor Wang 2004-08-01 21:02:28 CDT
This has long been fixed when we did the stub refactoring