## Table of Contents

- Current Status
- Known Issues
- Ongoing work
- Future Work
- Completed Work

# ORB & ORB Core

Point of contact: Balchandran Natarajan

Last Update: 2002/08/15 22:23:42

### Current status:

- We are compliant with OMG's CORBA 2.6 specification.

Back to TOC

### Known issues:

- TAO's support for wstring as per GIOP 1.2 rules are not perfect. There have been reported interoperability problems.

- There is a known race condition with the TP_Reactor. It kicks up when a client running multiple threads, sees a remote server crash or do an abnormal exit . The details of this bug are documented here.

- The multi-profile parsing code in TAO hasnt been tested well and we have been able to identify some issues with it. The details are documented in our bug tracking system under id's 1237, 1238and1239

- Applications using the distributed callback paradigm could see crashes if they use multiple nested upcalls. The nested upcalls sets of a stack growth and crashes when it runs out of stack space. This happens when an upcall as a part of the request leads to another request. The client thread waiting for the reply in the reactor could in turn process yet another request to build up the stack. The unbounded growth on the stack leads to crash failures.

Back to TOC

### Ongoing Work:

- Work is on to write a new reactor framework for TAO which overcomes some of the problems associated with the new reactor

- Support new concurrency models, e.g., Thread-per-Request, etc..

- Improvement to connection cache on the acceptor side so that it will purge old connections when there are no more slots or sockets are available. The connection cache does good job of purging things on the connector side

- Prevent unbounded stack growth that leads to a failure in situations explained in known issues.

Back to TOC

### Future work:

- Performance bottlenecks:

1. Need to identify performance bottlenecks. Looks like TAO has slowed down a bit over the past two betas. Need to identify the bottlenecks before improving the performance.

2. Its a known fact that thread-per-connection is faster than the reactive model, even for single threaded cases. Need to identify portions of the reactor that slows down things and fix them or create a fast path in the ORB just using plain vanilla select for the server.

3. In the output data path, the CDR creates the message block and all other associted things on TSS. If we could change the CDR to first create them on the stack and then move the data to TSS we could achieve better performance for small messages.

- Features:

1. Implement DP-CORBA specification

2. Implement TII specification.

Back to TOC

### Completed Work:

- Implemented a connection timeout policy in the ORB. This is useful for applications to set a timeout value associated with connection establishment. The name of the policy is `TAO::CONNECTION_TIMEOUT_POLICY_TYPE` and is proprietary to TAO. It comes as a prt of the TAO_Messaging library. Please see `$TAO_ROOT/tests/Connection_Timeout` for an example of how to use this feature.

- Implemented non-blocking connects with three different strategies for connection establishment. The details of the strategies and the related documentation can be found here.

- Deprecated the option -ORBConnectionCachingStrategy. The option -ORBConnectionPurgingStrategy fills in the role of the deprecated strategy.

- Deprecated the option -ORBResources.

- The connectors have been moved to the lanes.

- Fixed stack recursion problems that occurs, when a thread flushing a reply by entering the reactor starts processing incoming requests.

- Fixed connection handling and connection closing problems, when a write call to a remote host fails.

- Moved the allocators used for allocating memory for the incoming data path to the lanes. Only allocators on the incoming data path are moved into the lanes. Allocators on the outgoing data path are still on a per-orb basis. Since the outgoing data path uses memory from the TSS, moving them to the lanes is not necessary.

- Added an option, -ORBSingleReadOptimization that allows users to turn on or turn off the single read optimization. This is useful for RTCORBA server threads to avoid priority inversions. Buffering messages and sending notifications to the reactor, that does not know or honour priority could lead to priority inversions.

Back to TOC