diff options
Diffstat (limited to 'TAO/docs/releasenotes/orbcore.html')
-rw-r--r-- | TAO/docs/releasenotes/orbcore.html | 439 |
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 & 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("<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<->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> |