Bug 890 - ServiceContextList optimization on connection retry broken
Summary: ServiceContextList optimization on connection retry broken
Status: RESOLVED FIXED
Alias: None
Product: TAO
Classification: Unclassified
Component: ORB (show other bugs)
Version: 1.1.14
Hardware: All All
: P3 major
Assignee: DOC Center Support List (internal)
URL:
Depends on: 1189 1190
Blocks:
  Show dependency tree
 
Reported: 2001-04-30 22:47 CDT by Ossama Othman
Modified: 2004-08-01 21:02 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 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