summaryrefslogtreecommitdiff
path: root/TAO/docs/releasenotes/orbcore.html
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/docs/releasenotes/orbcore.html')
-rw-r--r--TAO/docs/releasenotes/orbcore.html439
1 files changed, 0 insertions, 439 deletions
diff --git a/TAO/docs/releasenotes/orbcore.html b/TAO/docs/releasenotes/orbcore.html
deleted file mode 100644
index fe09fb039d6..00000000000
--- a/TAO/docs/releasenotes/orbcore.html
+++ /dev/null
@@ -1,439 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-<title>ORB Core Status</title>
-<!-- $Id$ -->
-</head>
-<body text="#000000" bgcolor="#FFFFFF">
-
-<!-- *********************************** -->
-<a name="toc"><h2>Table of Contents</h2></a>
-<ul>
- <li><a href="#current">Current Status</a>
- <li><a href="#issues">Known Issues</a>
- <li><a href="#ongoing">Ongoing work</a>
- <li><a href="#future">Future Work</a>
- <li><a href="#completed">Completed Work</a>
-</ul>
-<!-- *********************************** -->
-
-<hr>
-<center>
-<h1> <a name="orb"></a>ORB &amp; ORB Core</h1>
-
-Point of contact: <a href="mailto: irfan@cs.wustl.edu">Irfan Pyarali</a>
-
-<p>Last Update: $Date$</p>
-</center>
-
-<!-- ============================================================ -->
-<a name="current"><h3>Current status:</h3></a>
-
-<ul>
- <li><p>Trying to figure out a better <em>resource</em> management
- scheme. <em>Resouces</em> here include ORB, POA, connections,
- profiles.... that provide services for CORBA invocations.
- </p>
- <P>[STATUS]: The current version keeps very few objects
- managed by the resource factory. Most are ORB specific. It
- seems like the correct implementation is to make the few
- remaining resources (such as the Reactor) a
- per-ORB-per-thread entity.
- </P>
- </li>
-</ul>
-
-<!-- --------------------- -->
-<a href="#toc">Back to TOC</a>
-<!-- --------------------- -->
-
-<!-- ============================================================ -->
-<a name="issues"><h3>Known issues:</h3></a>
-
-<ul>
- <li><p>When using the thread-per-connection concurrency model, if
- some client leave the socket connection open without sending any
- request, the server will crash on NT. This is because we are
- doing a blocking recv when a server connection handler acts as
- an active object, and the recv won't break out until the process
- gets kill by the OS. This is especially a problem on NT because
- on shutdown, NT close down the socket service, which cause the
- blocking recv to unblock at which point, these threads try to
- access the already destroyed ORB resources. A temporary
- workaround is to close the sockets when the ORB is shutting
- down. But this is not portable and only works on NT.</p>
- </li>
-
- <li><p>Object references for objects dynamically created within a
- server may not have proper host. When an object is dynamically
- created and its object reference returned, it simply has to
- "guess" at the host information that is returned in the IIOP
- Profile. Currently, it guesses using the host name, which is a
- reasonable guess in most cases. However, if there are multiple
- interfaces on a machine <em>and</em> they have different host
- names, it is possible that the desired effect will not be
- realized, i.e., the connection to that new object may use a
- different interface from the original object. Currently the only
- way to change this is to use the <A
- HREF="../Options.html#-ORBEndpoint"><b>-ORBEndpoint</b> option</a> to
- manually specify that dynamically-created objects bind to a
- specific interface so that their IIOP Profile has the desired
- hostname. A more desirable fix is being investigated.</p>
- </li>
-</ul>
-<!-- --------------------- -->
-<a href="#toc">Back to TOC</a>
-<!-- --------------------- -->
-
-<!-- ============================================================ -->
-<a name="ongoing"><h3>Ongoing Work:</h3></a>
-
-<ul>
- <li><p>ORB Core overhaul.</p>
- </li>
-
- <li><p>Support new concurrency models, e.g., Thread-per-Request,
- thread pool, etc..</p>
- </li>
-
- <li><p>Robustness improvements to connection cache so that it
- wont crash when there are no more slots or sockets.</p>
- </li>
-
-</ul>
-<!-- --------------------- -->
-<a href="#toc">Back to TOC</a>
-<!-- --------------------- -->
-
-<!-- ============================================================ -->
-<a name="future"><h3>Future work:</h3></a>
-
-<ul>
- <li>Performance optimizations, such as:</li>
- <ol>
- <li><p>Replace all uses of <code>new</code> and <code>delete</code>
- with allocators that can be put into TSS. The main
- motivation for this is to eliminate lock contention when
- multiple threads need to allocate/deallocate memory,
- however it might also be possible to substitute an
- allocator better-tuned to an application's specific
- usage.</p>
- </li>
- </ol>
-
- <li>New features:</li>
- <ol>
- <li><p>Implement <code>RT-CORBA</code> spec. once it passes
- OMG member vote.</p>
- </li>
-
- <li><p>Added support for CORBA Messaging Spec.</p>
- </li>
-
- <li><p>According to tentative CORBA 2.3a spec, once
- ORB::shutdown has been called, operation invocations on
- object references obtained from this ORB must throw an
- <code>BAD_INV_ORDER</code> exception.</p>
- </li>
- </ol>
-
- <li>Internal restructuring:</li>
- <ol>
- <li><p>Create some sort of internal "request" object which
- carries enough context to suport deferred method
- invocation such as one might find in the thread-pool
- approach or wherever queuing might occur.</p>
- </li>
- </ol>
-
- <li>Documentation:</li>
- <ol>
- <li><p>Writing up ORB restructuring notes.</p>
- </li>
- </ol>
-
- <li>Potential Optimizations:</li>
-
- <ol>
- <li><p>There is a certain amount of overhead introduced by the
- use of TSS Singletons. TSS singletons are very convenient
- as the variable does not have to be passed from function
- to function. Even though sort of access is generally
- acceptable, the overhead of this approach maybe too high
- when used in code which is executed frequently (e.g.,
- during an upcall). This critical code may have to be
- restructured not to use TSS Singletons because of the high
- overhead associated with it.</p>
- </li>
- </ol>
-</ul>
-<!-- --------------------- -->
-<a href="#toc">Back to TOC</a>
-<!-- --------------------- -->
-
-<!-- ============================================================ -->
-<a name="completed"><h3>Completed Work:</h3></a>
-
-<!-- ************************************************************ -->
-<!-- Please make sure you append new items at the end of the list -->
-<!-- ************************************************************ -->
-<ul>
- <li><p><code>TAO_ORB_Core_instance()</code> returns the orb core
- of the default orb (the first orb created by the user). This
- may not be the orb that the user is interested in. The better
- approach is <code>myorb->orb_core()</code>.</p>
- </li>
-
- <li><p>Added an optional argument to resolve_initial_references()
- that allows the user to specify a timeout (an upper bound
- on the time-to-wait for a response from the ORB's multicast
- "search" for a running server). If no timeout value is
- specified by the user,
- <code>TAO_DEFAULT_SERVICE_RESOLUTION_TIMEOUT</code> is
- used.</p>
- </li>
-
- <li><p><code>ORB::perform_work</code> and
- <code>ORB::work_pending</code> are now implemented.
- <code>ORB::work_pending</code> may need some additional work
- in the future (since it currently always returns true).</p>
- </li>
-
- <li><p>Provides dynamically linked wholesale assignment of ORB
- strategies for communication, concurrency, demultiplexing,
- scheduling, and dispatching using the ACE Service Configurator
- framework.</p>
- </li>
-
- <li><p>Supports several concurrency models out of the box: Reactive,
- Thread-per-Connection, and ORB-per-thread. The ORB-per-thread
- design is optimized for real-time I/O subsystems. (See: <A
- HREF="../configurations.html">Configuration Guide</a>.)</p>
- </li>
-
- <li><p>Supports <code>resolve_initial_references("&lt;CORBA
- Service>")</code> using ACE support for multicast. <em>(TAO
- proprietary.)</em></p>
- </li>
-
- <li><p>Support both native C++ exceptions and
- <code>CORBA::Environment</code> based exceptions handling.</p>
-
- <li><p>Support for TAO proprietary <code>-ORBgioplite</code>
- command-line option. When this option is enabled the ORB
- removes a few fields of the GIOP messages that are normally not
- used, such as the version numbers, the magic 'GIOP' string, the
- service context, the Principal object, etc. This option give us
- a slight performance improvement but it is important for
- extremely low-latency systems (such as avionics), that
- fortunately have tightly controlled environments so this kind of
- optimization is safe to use.</p>
- </li>
-
- <li><p>The buffers for outgoing CDR streams are allocated from TSS
- memory pools, reducing locking on the critical path.</p>
- </li>
-
- <li><p>Several optimizations on the critical path have been
- implemented, carefully removing excesive locking, memory
- allocations and data copying. In some cases special demarshaling
- and marshaling functions where written for the request
- headers.</p>
- </li>
-
- <li><p>Adding a new option into TAO_Resource_Factory to control the
- internal lock used by ORB's reacotr. With "<code>-ORBreactorlock
- null</code>" added into <code>svc.conf</code>, you can eliminate
- the token inside the Select_Reactor inside the ORB even on
- multi-threaded platforms. This eliminate some overheads caused
- by synchronizing access to the Select_Reactor. Usually, if you
- have TSS ORB and are using reactive concurrency startegy, the
- ORB are not accessed by multiple threads, then, you can safely
- turn the lock off.</p>
- </li>
-
- <li><p>Strategized the connection management scheme so that we don't
- always have to pay the price of a look up in the connection
- cache. Basically, we "hold" a service handler for a string of
- requests.</p>
- </li>
-
- <li><p>There is no need to call ORB::open if the port is 0. It will
- automatically be called when the first stub is created.</p>
- </li>
-
- <li><p>The ORB now handles nested upcalls correctly. See <a
- href="../leader_follower.html">this </a>for details on the
- design of the solution.</p>
- </li>
-
- <li><p>Added optimization for collocated objects. This optimization
- enables TAO to bypass communication layers and talks to
- collocated objects directly.</p>
- </li>
-
- <li><p>Making the collocation table configurable. We can either use
- a global collocation table to share objects among ORBs, or use
- the per-ORB collocation table.</p>
- </li>
-
- <li><p>Implement the inheritance mechanism in
- Default_Server_Connection_Handler to access the parent's
- POA. This is necessary when we are using thread-per-connection
- concurrency model.</p>
- </li>
-
- <li><p>It is often desireable for a server to start up and not have
- to specify the TCP port number on which the ORB will listen,
- i.e., let the OS decide. While this works properly (by
- providing an argument such as
- `<code>-ORBEndpoint iiop://localhost:0</code>'), the actual port
- number used by the server won't be available after the server
- starts listening. TAO now tries to bind the address when a port
- set to zero is issued so it can get the actual address to publish
- the IOR for clients' use.</p>
- </li>
-
- <li><p>Broke the tight coupling between <code>CORBA_Object</code>
- and <code>IIOP_Object</code> so that multiple
- <code>CORBA_Object</code>s can share a single
- <code>IIOP_Object</code>. This has a big win in
- <code>_narrow</code> operations.</p>
- </li>
-
- <li><p>The ORBs manipulation of object keys and object ids is now
- consistent. Canonically, everything is managed as an opaque
- sequence of octets. Conversion to/from strings is permitted,
- with non-printables turning into a trigraph <b>\hl</b> where
- <b>h</b> is the high nibble digit in hex, and <b>l</b> is the
- low nibble in hex.</p>
- </li>
-
- <li><p><code>CORBA::ORB::run()</code> should be able to be called
- multiply in the same execution path now.</p>
- </li>
-
- <li><p>Fixed the <b>LOCATION_FORWARD</b> capabilities to work as
- described in the CORBA 2.1 and the POA specification.</p>
- </li>
-
- <li><p>Support for <b><a
- href="../Options.html#-ORBSndSock">-ORBSndSock</a></b> and <b><a
- href="../Options.html#-ORBRcvSock">-ORBRcvSock</a></b> ORB
- options. See <a href="../Options.html">options documentation</a>
- for details.</p>
- </li>
-
- <li><p>Support for connections pre-establishment using the <b><a
- href="../Options.html#-ORBPreconnect">-ORBPreconnect</a></b>
- option. This allows connections to be established before any
- CORBA requests are made. See <a href="../Options.html">options
- documentation</a> for details.</p>
- </li>
-
- <li><p>Placed an optimization in IIOP::Profile that should speed up
- invocations on the client side rather substantially. This was
- done by caching an instance of <code>ACE_INET_Addr</code> in the
- private portion of <code>Profile</code> because the cost of
- constructing one for every invocation (in
- <code>TAO_GIOP_Invocation::start</code>) was simply
- enormous--the construction was something like 100 cycles on
- Solaris. This is all because deep down this ends up calling
- <code>gethostbyname()</code>, which can be very costly. Of
- course, this is platform-dependent, so the improvements may not
- be as great on a different platform.</p>
- </li>
-
- <li><p>Eliminated need for <code>CORBA::Object</code> to keep a
- pointer to its orb sitting around anywhere.</p>
- </li>
-
- <li><p>Tested <code>CORBA_ORB::shutdown()</code> as a manner in
- which a thread of control can request that
- <code>CORBA_ORB::run()</code> should return and no longer
- service requests. It only honors a <em>wait_for_completion</em>
- argument of <b>FALSE</b> right now because we haven't fully
- explored the issues which surround doing all the completion.</p>
- </li>
-
- <li><p>Implemented <code>CORBA_ORB::shutdown()</code> as a manner in
- which a thread of control can request that
- <code>CORBA_ORB::run()</code> should return and no longer
- service requests.</p>
- </li>
-
- <li><p>Support for the -ORBInitRef option. This allows run-time
- specification of an ObjectId&lt;-&gt;IOR mapping. It is used by
- resolve_initial_references() and overrides the ORB install-time
- defaults.</p>
- </li>
-
- <li><p>minimal support for CORBA Contexts. This is an inherently
- un-typesafe feature, and many believe it will disappear from
- CORBA eventually, but in order to make _create_request()
- compliant, we have added a CORBA_Context class. The only
- permissible value for a Context pointer passed as an argument to
- _create_request is 0. If a non-zero pointer is passed, a
- NO_IMPLEMENT exception is raised.</p>
- </li>
-
- <li><p>Support configuring TAO's component as both static and
- dynamic services. Improve robustness of setting default
- svc.conf entries. See <a
- href="../configurations.html#programming">Configuration
- Document</a> for details.</p>
- </li>
-
- <li><p>TAO now understands <a
- href="index.html#nservices">Interoperable Naming Service</a>'s
- <code>iioploc://</code> and <code>iiopname://</code>
- formats.</p>
- </li>
-
- <li><p>Added Vendor ID and TAO-specific information to
- the <code>CORBA_SystemException</code> minor status component.
- The TAO-specific information currently consists of location
- (in the TAO source code) and errno indications. See
- <a href="../tao/corbafwd.h"><code>tao/corbafwd.h</code></a>
- for values. <code>CORBA_SystemException::print_exception_tao_ ()</code>
- should be used to print system exceptions. If a known (expected)
- errno had been received, then it is printed. Otherwise, the low
- 7 bits of the errno are printed (in decimal). They can be a bit
- tricky to interpret, for example, because it might have been generated
- on the server. We only maintain the low 7 bits because of size
- restrictions on the minor status component.</p>
- </li>
-
- <li><p>The <CODE>CORBA::ORB_init()</CODE> function returns the same
- ORB if it is called twice with the same ORBid parameter or
- if the "-ORBid value" option is present in the argv-list.
- Please consult the CORBA specification for more details.
- </p>
- </li>
-
- <li><p>We implemented <CODE>GIOP 1.1</CODE>, including the support
- for tagged components in IIOP profiles.
- </p>
- </li>
-
- <li><p>Added CORBA compliant collocated stubs implementation. The new
- implementation now query POA for permission to proceed thus fixed
- many potentially subtle problems. The original collocation implementation
- is still supported using by specifying the -ORBCollocationStrategy direct
- command option (because the original scheme has slightly less method
- invocation overhead.)</p>
- </li>
-
- <li><p>
- Implemented CORBA::ORB::destroy() method. See the CORBA 2.3a
- specification for details about this method.
- </p>
- </li>
-
-</ul>
-<!-- --------------------- -->
-<a href="#toc">Back to TOC</a>
-<!-- --------------------- -->
-
-</BODY>
-</HTML>