Many important new features and bug fixes have been introduced in TAO 1.3a.
They are described briefly here. These and many other features of TAO 1.3a are
detailed in OCI's TAO
Developer's Guide, Version 1.3a, available separately.
-
Features added and bugs/fixes in TAO 1.3a_p15
-
Improved support for HP aCC compiler versions 3.57 and 3.60.
-
Added emulated support for timed semaphore acquire() on HP-UX.
-
Added a new dispatching strategy--Thread Per Consumer--to TAO's
RT Event Service. This strategy is similar to the MT dispatching
strategy in that it separates the thread that receives the push()
from a supplier from the thread that does the eventual push() to
the consumer(s), but it differs from MT in that MT has a pool of
threads pulling from a single queue and ultimately potentially
servicing every consumer, whereas TPC has a queue for *each*
consumer and, thus, a single thread is dedicated to pushing to that
consumer. This insures that a badly-behaved consumer CANNOT
have an adverse effect on the channel or supplier.
-
Added a means by which an application of the RT Event Service
can specify what the RTEC should do if the TAO_EC_Queue fills up.
This behavior is encapsulated in a derivation of an
ACE_Service_Object, called TAO_EC_Queue_Full_Service_Object.
The RTEC looks for a service object of a particular name (default
in macro TAO_EC_DEFAULT_QUEUE_FULL_SERVICE_OBJECT_NAME).
-
Features added and bugs/fixes in TAO 1.3a_p14
-
Fixed "zombie" thread problem in the Notification Service where, when using
-AllocateTaskPerProxy and a consumer terminates without properly
disconnecting, the thread (i.e., task) becomes a "zombie" because no other
thread does a proper join. This results in the appearance of allocated-but-not-recovered
resources until the thread ends.
-
Features added and bugs/fixes in TAO 1.3a_p13
-
Fixed a static initialization order dependency problem in ACE's Thread Specific
Storage support.
-
Added a
-x option to catior that works like -f
except that it reads the IOR from standard input rather than from a file. This
makes catior much more like the unix "cat" command, and enables it to be used
in a pipeline.
-
Changed the precedence rules for the
-ORBListenEndpoints (aka -ORBEndpoint )
so that the host identifier (either hostname or IP address) that appears in
IIOP profiles is determined thus:
-
value from
hostname_in_ior
(if specified);
-
setting of
-ORBDottedDecimalAddresses
option;
-
value for hostname in
-ORBListenEndpoints
specification;
-
whatever TAO magically comes up with based on system configuration
A new test (TAO/tests/IOR_Endpoint_Hostnames ) verifies the
operation of this feature.
-
Changed the way that Bidirectional endpoint processing happens when
-ORBDottedDecimalAddresses
1 is in effect. The previous behavior always used the setting of the
receiver, but that caused problems when the sender and receiver were not using
the same dotted decimal addresses setting. Bidirectional endpoint processing
now uses whatever the sender provides as the hostname since that's also what
will be in that sender's IORs. See ChangeLog entry fromWed May 25
12:10:40 2005 Chris Cleeland <cleeland@objectcomputing.com>
for more details.
-
Ported the -ORBPreferredInterfaces option from TAO 1.4 to allow specifying
which local interface to use when connecting to a specified remote interface.
-ORBPreferredInterfaces 192.168.*=127*,*.objectcomputing.com=132.*
The above command causes TAO to use the first interface starting with 127 (e.g.
127.0.0.1) when connecting to any address starting with 192.168.*, and to use
the first interface starting with "132." when connecting to any host that ends
in objectcomputing.com. T
The argument specified on the left side of the equals sign must match the
target host, which usually comes from an IOR. For example, if an IOR contains
test.theaceorb.com then this would not match either of the above directives,
even if test.theaceorb.com happens to be at 192.168.1.10.
-
The ACE Service Configurator now supports UTF-8, UTF-16 and UTF-32 encoding
schemes when ACE_HAS_WCHAR is defined in config.h.
-
Features added and bugs/fixes in TAO 1.3a_p12
-
The Service Configurator will now distinguish between the existence of and lack
of file permissions for the default service configurator file.
-
The SO Reduce application was modified to generated MPC files instead of
Makefiles.
-
The Visual Age 6 compiler configuration was changed to not use the #pragma
implementation for templates. Instead, template header files just include the
template cpp.
-
The IDL compiler now correctly handles UNC ("Universal Naming Convention")
paths, when Windows-based projects used them in -I command line parameters or
in #include statements.
-
Resolved and problem with tao_idl generated code for typedef-ed arrays, where
some of the utility methods were not static as the CORBA spec requires.
-
Resolved a problem with generating the values for floating point constants in
code generated by tao_idl
-
The gnuace MPC builds can now detect the presence of yacc(1) and/or lex(1) and
regenerate all related parser code, based on the lexical analyzer and the
grammar specifications ( idl.ll and idl.yy) On the platforms where these tools
are not available, the pre-generated versions are used.
-
The SSLIOP transport protocol factory now correctly interprets Windows-style
paths, which contain colon (':'), when pointing to the locations of keys and
certificates.
-
Corrected a bug in the gnuace template that did not ensure that generated
source files were created before attempting to generate the precompiled header
binary.
-
The gnuace project type allows users to set the 'targetoutdir' template
variable which determines where .obj, .shobj directories, binaries and
libraries go.
-
The SO Reduce application now outputs MPC files instead of Makefiles.
-
The Service Configurator now distinguishes between the existence of a
configurator file and the in-ability to open the configurator file.
-
Fixed a bug related to multicast federation of the RtEC. Removed the portion
of code that attempts to subscribe to an existing multicast socket. This allows
the ECG_MCast_EH to receive events on all supported platforms.
-
Improved interoperability with other ORBs with respect to use of Unicode based
wide strings.
-
Fixed an SSLIOP bug related to sending large data sets.
-
Fixed several TSS bugs (mostly affect Windows builds):
-
Comply with POSIX standard for replacing a TSS object.
-
Comply with POSIX standard for deleting a key while it is in use.
-
Rework the ACE_TSS_Cleanup instance support to make it even safer.
-
Automatically cleanup TSS for non-ACE threads that call ACE functions.
-
Fixed a problem affecting the ability of SSL-based TAO servers, which require
client authentication to work with JSSE-based Java clients (JacORB).
-
Added new service configuration options to the SSLIOP_Factory:
-
-SSLCAFile FMT:file - allows explicit specification of the the Trusted
Certificates location. The FMT is either "PEM" or "DER". Similar to verify(1)
-CAfile option.
-
-SSLCAPath directory - allows explicit specification of the directory, where
the Trusted Certificates are located. The directory must be in a particular
format - see openssl(1) fom more details on how to install additional CA
certificates. Similar to verify(1) -CApath option.
-
-SSLRand file1:file2:.. - allows specification of additional sources of
randomness (entropy). The option mimics the -rand option on genrsa(1), for
example.
-
Features added and bugs/fixes in TAO 1.3a_p11
-
Fixed a problem where an assertion would be thrown when a bi-directional POA
policy has been used and then a different ORB instance is created. Note,
however that the solution does not prevent some possible data race conditions
for applications with multiple ORB instances, multiple threads that create them
and using bi-directional POA policy.
-
Fixed a problem where, when using
-ORBConcurrency thread-per-connection ,
connections to clients that have gone away result in sockets sitting in CLOSE_WAIT
on the server side until the server exits.
-
A new ORB option was added, -ORBLingerTimeout, which only affects the IIOP
transport. If a linger timeout is specified, it will be applied to each TCP
socket prior to closing the connection.
-
Fixed a problem with premature connection closures on the server side, in cases
where large replies were being subjected to the TCP flow control mechanism.
-
Modified the tao_idl code to correctly deal with typedef'ed arrays. When
dealing with array's, detect if the array is typedef'ed. If it is typedef'ed
and the primitive base type is a string, then it will generate code as if the
array was typedef'ed to a string.
-
Added capability to use INS-style corbaloc references (e.g.,
orbaloc:ssliop:localhost:12345/NameService) to specify SSLIOP references. This
was motivated by a desire to access a naming service exclusively using SSLIOP,
but needing to specify its endpoint to clients via a corbaloc-style IOR. See
the new ssliop-corbaloc test in $TAO_ROOT/orbsvcs/tests/Security, which shows a
typical usage of the new feature.
-
Updated TAO core to support both legacy URL style generated corbaloc IOR's
(with escape character '\\') and OMG specified style (with escape character
'%'). This makes it backward compatible with pre 1.4 TAO as well as other ORB's
like JacORB etc.
-
Removed a bug workaround in ACE for 64-bit HP-UX. When specifying a base
address for ACE_MMAP_Memory_Pool_Options (which is used by the mmap Naming
Service persistence), it was previously ignored and a default value was used.
This is no longer necessary for aCC versions later than 3.10.
-
Added configurator options for the CosEvent Service to determine the relative
roundtrip timeout for both suppliers and consumers when pushing or pulling an
event. An additional option was added to determine the number of retries (when
pushing or pulling to or from an unresponsive consumer or supplier) before
removing it from the CosEvent Service.
-
When built using the MPC-generated make/project files, the following common TAO
utilities are now installed in the $ACE_ROOT/bin directory instead of the
directories in which they are built:
-
tao_imr
-
tao_ifr
-
nslist
-
nsadd
-
nsdel
-
NamingViewer
-
Fixed race conditions in calling destructors during Asynch Invocation by adding
reference counting.
-
Features added and bugs/fixes in TAO 1.3a_p10
-
Fixed a problem with codeset selection when the default wchar codeset is used
and this is UTF-16. Now the UTF-16 BOM translator is selected even when the
wchar codeset is defaulted.
-
Fixed memory leaks in the Notification Service that occurred when a Consumer
disconnected.
-
There was a problem in the Notification Service's support for Event-style Admin
and Proxy objects in addition to the one fixed in patch 9. This problem has
been fixed, and the $TAO_ROOT/orbsvcs/tests/Notify/Basic test has been extended
to further test support for Event-style objects.
-
The ORB distributed with the Java JDK 1.4.x has a defect in the code that
marshals wide character strings in sequences of structures. As a work-around,
TAO can now be forced to send all wide characters in big-endian order even on
platforms like Intel x86 for which little-endian ordering is the default. The
Byte Order Mark (BOM) is used as necessary to inform the peer ORB of the byte
order being used. This work-around can be enabled either at compile time or at
run time.
To configure it at compile time, define the symbol: TAO_USES_FORCE_UTF16BE.
To configure it at run time, use a new service configuration option:
static UTF16_BOM_Factory "-forceBE [0|1]"
Zero turns it off; one turns it on. If neither zero nor one is specified,
the state of the option is toggled.
There is a minor performance penalty for using this option so it should only be
used if interoperability with the JDK ORB is needed.
-
Features added and bugs/fixes in TAO 1.3a_p9
-
Fixed resource leak in Notification Service Connection Reliability (Topology)
persistence that occurred when the *.new file could not be opened.
-
The Notification Service is supposed to support Event Service-style channels,
but there was an error in the code that provided this support. The error
resulted in a failure (usually a SEGV) when the first event was pushed to the
old style channel. This has been corrected, and a test has been added to
orbsvcs/tests/Notify/Basic that would have detected the problem.
-
The Notification Service XML Topology saver and loader were using ostream to
save a CORBA::Long. This caused failures on some platforms, so the code was
changed to copy the CORBA::Long to a long before it is saved.
-
The test in orbsvcs/tests/Notify/XML_Persistence was not honoring -ORB command
line arguments.
-
The timeouts for the Basic and Reconnecting tests of the Notification Service
were increased to accommodate slow platforms.
-
Added a perl version of the shell script to run one of the Notification Service
performance tests (the graph 3-4 test). Also a usage message was added for this
test.
-
The file orbsvcs/PSS/Dump_Visitor.cpp has been changed from using std ostreams
to using ace/streams.h. The change was made to improve portability
(particularly on HP-UX). The change was originally made in the DOC group
repository.
-
Corrected several memory and resource leaks in the Naming Service, both in the
library and in the executable. The most significant leaks were encountered when
using flat file persistence (-u or
-r
options).
-
Corrected a minor memory leak in the core that would leak connection-related
resources on connection closure or on shutdown.
-
Corrected a problem in the Notification Service where, when a consumer
disappeared from the face of the earth, or at least the machine on which it was
running, the notification service queued up events to deliver at a future time
rather than considering the delivery to be a failure.
-
Fixed a linking problem (unresolved symbols) that affected gperf and other ACE
applications. The
libadm
system library was missing from the link command line.
-
Fixed a problem where shared libraries didn't have the correct internal
versioned name on platforms that support that (e.g., most Unix-like platforms).
-
Integrated a patch suggested in DOC Bugzilla #1542 that correctly deallocated
items dynamically allocated and held in Thread-Specific Storage (TSS). This
eliminates some long-standing pseudo-leaks such as the output_cdr_buffer, etc.
-
Corrected a problem in the NonBlocking_Conn_Test so that it works.
-
Updated the platform_sunos5_sunc++.GNU file so that applications, when linked,
will automatically look for libraries in $ACE_ROOT/lib.
-
Fixed a bug in the tao_idl compiler that caused link errors when array's were
declared in the global scope. Particular helper functions were not exported and
that doesn't work on Windows.
-
Added support for ACE_OS::fsync() under Windows, which calls FlushFileBuffers.
Windows-specific code in the Notification Service that did this was therefore
removed.
-
Added support for RedHat Advanced Server 3.0 running on the Opteron chip set.
-
Added support for an option in nsadd to add a new context, including the
automatic addition of intermediate contexts for any addition.
This added capability is working correctly. However, the new test added to
verify it has exposed a problem that has been in the Naming Service for a long
time. The problem occurs only on static builds and only on some platforms. It
is that only the first client can add a context, subsequent clients quietly
fail when trying to add contexts, but they can add objects to existing
contexts.
-
Improved support for Winsock 2 on MS Pocket PC 2003 (WinCE 4.0). Automatic
interface discovery now works correctly.
-
Added new test case for wide string interoperability, added procedure for
building $TAO_ROOT/interop-tests/wchar for Sun's Java ORB as well as JacORB.
-
Features added and bugs/fixes in TAO 1.3a_p8
-
A new wait strategy--Wait_On_LF_NoUpcalls, specified with
"-ORBClientConnectionHandler
mt_noupcall" --was added to allow a thread that's waiting for a reply
on an invocation to participate in the Leader-Follower interaction, but not
dispatch upcalls on that thread (other threads are permitted to dispatch
upcalls). This could be considered to be something between the two extremes of
Wait_On_Leader_Follower (the default) and Wait_On_Read (specified
with "-ORBClientConnectionHandler rw" ), and could be reasonable
alternative in many cases to Wait_On_Read.
-
The new Wait_On_LF_NoUpcalls
wait strategy required minor changes to some of the base class code used in
pluggable transports/pluggable protocols. The good news is that these changes
are simple, actually reducing code in the pluggable transport.
The changes are in TAO_Connection_Handler . Using TAO_IIOP_Connection_Handler
as an example (it's a pluggable transport just like anything else), the
following code:
// OLD handle_input
int
TAO_IIOP_Connection_Handler::handle_input (ACE_HANDLE h)
{
int result =
this->handle_input_eh (h, this);
if (result == -1)
{
this->close_connection ();
return 0;
}
return result;
}
turns into
// New and improved handle_input
int
TAO_IIOP_Connection_Handler::handle_input (ACE_HANDLE h)
{
return this->handle_input_eh (h, this);
}
The pluggable transport's handle_input
no longer needs to close the connection.
However, if your pluggable transport's handle_input doesn't
look like the old handle_input , you will need to look at TAO_Connection_Handler::handle_input_eh()
and integrate the code that appears at the beginning of that method, i.e.,
{
if (this->transport ()->acts_as_server () &&
this->orb_core_->get_tss_resources()->upcalls_temporarily_suspended_on_this_thread_)
{
if (TAO_debug_level > 6)
ACE_DEBUG ((LM_DEBUG,
"(%P|%t) Connection_Handler[%d] - not going to handle_input "
"on Transport %d "
"because upcalls temporarily suspended on this thread\n",
this->transport()->id(),
this->transport()->id()));
return 0;
}
...continue with rest of the code...
}
-
The Client_Strategy_Factory option
-ORBClientConnectionHandler has
been renamed to -ORBWaitStrategy to harmonize it more closely with
the underlying components that implement it. The original name is still
accepted for backwards compatibility, but -ORBWaitStrategy
is suggested moving forward.
-
The Notification Service XML Topology Persistence object would stop prematurely
on some 64 bit platforms. The resulting incomplete topology file would cause
the notification service either to hang the next time it ran, or to restore
only part of the topology. The topology file will now be written correctly.
-
Fixed a memory management issue in the IDL compiler that could cause it to
crash with a segmentation violation on Tru64 4.0F with the Digital C++ v6.1-027
compiler.
-
Fixed a bug in the IDL compiler where *I.{h,cpp} would not be generated when
the -GI option was used.
-
Added support for the native long long type on VxWorks 5.42 or higher.
-
Added support for the wchar_t type on VxWorks 5.5 or higher.
-
Added a feature to the Naming_Service executable whereby it properly shuts
itself down on receipt of a signal on platforms which support signals. It
responds to SIGINT and SIGTERM.
-
Added support for building on PocketPC 2003 using eVC++ 4.0. This includes many
wide-string adaptations of error/debug messages. TAO-specific RTEC gained
configurable pacing delay to allow federation via multicast to work on PocketPC
2003.
-
Added support for building on AMD 64-bit Athlon processors.
-
Features added and bugs/fixes in TAO 1.3a_p7
-
Several Bugs with the ImR have been fixed, although there are still known
problems with PER_CLIENT activation, apparent memory leaks, and performance.
Several new tests have been added to help track down these problems, and they
may be addressed in a future release.
-
MPC is now a logically separate project. Most generic MPC tools have been moved
to ACE_wrappers/MPC, although some ACE/TAO-specific extensions are still in
ACE_wrappers/bin/MakeProjectCreator. Several bug fixes have been made, as well
as some pretty significant performance improvements. The latest version of MPC
is currently kept in the doc group CVS repository, but will be copied into the
ACE_wrappers directory for any OCI release.
-
There is also a new clone_build_tree.pl script that can be used in place of
create_ace_build.pl. The new script is much faster, has more features, and can
output the cloned tree to any location, although it still defaults to
ACE_wrappers/build. This tool is now part of the MPC suite of tools found in
the MPC directory.
-
The Notification Service has been extended to support the ConnectionReliability
and EventReliability properties defined in the CORBA standard. If these
properties are given the value "persistent" the Notification service will store
information about connection to clients and undelivered events in persistent
storage. This information will be used to recover after a failure.
To take advantage of the reliable Notification Service the application
developer must set the properties and cooperate during the reconnection
process. Also he system administrator must configure the the notification
service for persistent operation.
For more information see the CORBA standard available from
the OMG and the document Using
the Reliable Notification Service.
-
In addition to the changes made directly to the Notification Service a number
of test and example programs have been created for the reliable notification
service. These programs may be found in subdirectories of
$TAO_ROOT/orbsvcs/tests/Notify. A README file in each directory provides more
detailed information, and a run_test.pl script is included to run the example
or test.
-
A change has been made to the Notification Service IDL that significantly
improved build times and reduced the Notification Service footprint. The change
suppressed the generation proxy and stub code for the many interfaces that are
specified by the OMG, but are not implemented in TAO.
-
Precompiled header support was added for the Tru64 compiler and the MIPSpro
Compiler on IRIX.
-
Changed ACE to attempt to use gethostname() on Windows, if available, before
falling back on GetComputerName() to implement ACE_OS::hostname. The
GetComputerName() function returns the NetBios name, not the IP hostname.
Often, they are identical, but this change should ensure that ACE/TAO will work
even when the two names differ.
-
Features added and bugs/fixes in TAO 1.3a_p6
-
Changes were made to the IDL compiler to correct a problem where include paths
added with the -I option were not being properly handled. This work was adapted
from the DOC group's current IDL compiler which does not exhibit this problem.
-
Updated the config files for vc6 and vc7 to reflect the actual state of the
compiler features used in ACE and TAO.
-
An MPC bug was fixed where relative directory replacement wouldn't take place
when the replacement variable contained subdirectories underneath the current
working directory.
-
Added support for Portable Interceptors to work with collocated invocations as
well as remote invocations.
-
Made changes to fix crashing with the IDL compiler after adding support for
correct include paths.
-
Refactored the ImR to move most functionality from the activator into the
locator.
-
Fixed a bug in the ORB where activating objects on multiple RT ORB's would
cause a segmentation fault.
-
Features added and bugs/fixes in TAO 1.3a_p5
-
Assignments within 'specific' sections of mpc files are now handled correctly.
Previously they were always handled as string additions.
-
Limited Support of GCC 3.3 on AIX has been added. Support for automatic
template instantiation (except for the ACE_Singleton and TAO_Singleton) has
been added. Singleton templates require explicit instantiation. The singleton
templates can have problems (Segmentation Violations) when compiled with the
optimize flag (-O)
-
Corrected code in the Implementation Repository's Activator (ImR_Activator)
that made incorrect assumptions about which conditions could cause a TRANSIENT
to be raised. This resulted in an inability of the activator to detect death of
a server, and restart it.
-
Refactored GNU Makefile templates to support library versioning via MPC. The
ACE and TAO version numbers are now supplied through the
MakeProjectCreator/config/aceversion.mpb and taoversion.mpb files. These
version numbers may be overridden by supplying a new value for 'version' in
your project. If your project depends on ace or tao, and you wish to have no
version applied, use 'version=' with no value to override.
-
Improved thread safety in the parsing of corbaloc endpoints.
-
Features added and bugs/fixes in TAO 1.3a_p4
-
Wide character support and interoperability has been improved. The UTF16
handling code has been fixed to handle the byte order marker.
-
A fix for two threads allowed to handle_input for same handle at the same time
has been added.
-
Fixed bug in Notification Service's EventChannelFactory::get_all_channels()
that always returned an empty sequence.
-
Updates have been added to wxNamingViewer.
-
Features added and bugs/fixes in TAO 1.3a_p3
-
Tutorials: TAO/docs/tutorials has been updated and builds on multiple
platforms. These tutorials may not execute on all systems and may have trouble
building on static and exceptions=0 builds.
-
fixed bug 1614 - Possible crashes due to bad code in
send_connection_closed_notifications_i().
-
corbaloc parser changes: The code responsible for parsing corbaloc style object
references is refactored to enable the use of novel protocols in the address
definition. This new feature enables protocols not shipped as part of TAO to be
used with corbaloc or corbaname strings for resolving remote addresses.
To support this feature, a new virtual method is added to the base class
TAO_Connector, corbaloc_scan(). The signature of the method may be found in
$TAO_ROOT/tao/Transport_Connector.h:
virtual TAO_Profile * corbaloc_scan (const char *ior,
size_t &len
ACE_ENV_ARG_DECL);
This method is responsible for locating the end of the protocol specific
address, returning a partially completed profile (the object key will be filled
in later) and returning the length of the scanned address as the out parameter
"len." The default implementation assumes that comma (',') and slash ('/') will
not appear in the address, and will use the contents of the ior string upto the
next comma or slash to populate the profile. If commas or slashes are valid
parts of your protocol's address, as they are with Unix domain sockets (see
UIOP), then you must supply your own implementation of corbaloc_scan to find a
protocol specific address terminator. In such a case, the protocol specific
address terminator will still be followed by a comma or slash, as required by
the CORBA spec.
To maintain backwards compatibility with earlier TAO implementations, the UIOP
implementation of corbaloc_scan will accept strings that end with a pipe ('|')
that is not followed by a comma or slash. In this case, the remainder of the
string is treated as the object key and a warning is generated.
-
A new header file $ACE_ROOT/ace/Codeset_Symbols.h defines symbolic names for
all of the code sets defined in OpenGroup's code set registry database version
1.2g ( ftp://ftp.opengroup.org/pub/code_set_registry/ )
Three new symbols are defined to allow compile-time configuration of native
code sets.
ACE_NATIVE_CHAR_CODESET_ID defines the native codeset used for 8 bit
characters.
ACE_NATIVE_WCHAR_CODESET_ID defines the native codeset used for wide
characters.
ACE_NATIVE_WCHAR_SIZE defines the width of a typical (not escaped or surrogated
) code point in the native wide character code set.
The symbols can be defined in $ACE_ROOT/ace/config.h. If they are not defined
there, the following default values are used:
# define ACE_NATIVE_CHAR_CODESET_ID ACE_CODESET_ID_ISO_8859_1
# define ACE_NATIVE_WCHAR_CODESET_ID ACE_CODESET_ID_ISO_UTF_16
# define ACE_NATIVE_WCHAR_SIZE 2
These default values are the ones that were previously hard coded into TAO.
Note: ISO 8859_1 is also known as Latin-1 and ISO_UTF_16 is a version of
Unicode.
The UCS4 to UTF16 character translator in
$TAO_ROOT/tests/CodeSets/libs/UCS4_UTF16 has been extended to honor the Byte
Order Marks (BOM) allowed (but not required) in GIOP 1.2 and to use and honor
UTF-16 surrogate characters. Note that UTF-16 surrogate characters are an escape
mechanism that allow characters wider than 16 bits to be represented in UTF-16.
-
Features added and bugs/fixes in TAO 1.3a_p2
-
Thread Specific Storage has been fixed for VxWorks 5.5 The VxWorks 5.5 loader
has a strange quirk where complex static objects could be constructed multiple
times during static construction and normal thread execution.
-
The ACE_Log_Msg has been fixed for using SYSLOG.
-
The ACE reactors have been changed to reference count the Event Handlers. This
mechanism is particularly needed for multi-threaded applications that can have
multiple threads executing upcalls on a handler that needs to be shutdown in a
safe manner.
-
fixed bug 1237 - Race condition while handling location forwards
-
fixed bug 1572 - Deadlock in AMH calls if no response is sent
-
The IFR_Service's multicast discovery has been changed to default to off. The
option -m enables multicast and -l (lowercase L) enables locking.
-
The Portable Interceptors have been changed to not try to marshal parameters
during location forwards.
-
The transport has been changed to close a connection when it receives a partial
GIOP header.
-
The file
TAO/orbsvcs/orbsvcs/AV/md5c.c has been renamed to TAO/orbsvcs/orbsvcs/AV/md5c.cpp
This was done because 64-bit compilers have trouble with the syntax as plain C.
-
NOTE: To build the TAO_AV library, DELETE the
$TAO_ROOT/orbsvcs/orbsvcs/AV/md5c.c
file.
-
There are warnings when building some of the ORB services on Macintosh and
VxWorks operating systems. These are a result of unusual linking methods of
templates on these systems.
-
Added new option,
-ORBVerboseLogging , to turn on the VERBOSE
or VERBOSE_LITE flag in ACE_Log_Msg . Range of values
are 0, 1, or 2 for no verbose (the default), VERBOSE_LITE ,
and VERBOSE , respectively. The VERBOSE option
prefixes all ORB debug messages with a time/date stamp, while VERBOSE_LITE
adds even more information, e.g., the host on which the message originated.
-
Features added and bugs/fixes in TAO 1.3a_p1
-
The examples from the TAO Developer's Guide have been added to the distribution
and are built and run on the supported platforms.
-
There have been extensive improvements made to the Make Project Creator and its
use in ACE/TAO. It is now the default build mechanism. All parts of ACE/TAO
have been converted to use MPC.
-
The support for wide character sets has been enhanced.
-
The multithreaded part of the Naming Service Test
($TAO_ROOT/orbsvcs/tests/Simple_Naming/) fails intermittently on several
platforms. This failure is in the test client and does not appear to be a
problem with the Naming Service itself. The problem appears to be with the
default transport multiplexing strategy used by the ORB. The default strategy
is to multiplex the use of the connection (
-ORBTransportMuxStrategy muxed )
and the problem only occurs when the connections are very heavily used. The
problem does not occur if an exclusive strategy (-ORBTransportMuxStrategy
exclusive ) is used. It is unknown, but suspected that this problem
may be related to Bug 1020 mentioned above.
-
The ImR is at least partially functional in 1.3a. Some known problems are:
-
Activator has no way to shutdown cleanly, and hence doesn't unregister from the
locator.
-
Locator also has no way to shutdown cleanly.
-
Persistence does not appear to work, but that could just be a problem with the
test.
-
Performance is poor.
-
The activator needs to notice when a server is down, and automatically remove
it from the locator.
-
Servers should self-register without requiring "tao_imr add".
-
Activator does not shutdown its servers when closing.
-
Support for the Green Hills Integrity OS (ACE/TAO) and the Green Hills tool kit
(ACE only) has been added.
-
Pending bugs/fixes in TAO 1.3a
-
There is a bug in CDR operator generation for octet sequences. While this bug
does not cause incorrect behavior it greatly affects the performance of octet
sequences.
-
There is a pending change to the IDL compiler to fix a problem where the
compiler gets confused due to multiple slashes in paths.
-
The various tutorials in the
ACE_wrappers/TAO/docs/tutorials/ directory
have not been tested and may not run correctly out-of-the-box.
-
Features added to TAO 1.3a since TAO 1.3.1
-
MakeProjectCreator (MPC) -- MPC can be used to generate build tool specific
project files (which is just a collection of source files that make up a single
build target) from a generic mpc file. MPC takes platform specific input along
with the build tool generic files and generates build tool specific files.
Currently supported tools include GNU Make, NMake, Visual C++ 6, Visual C++ 7.0
and others.
-
Redundant Naming Service -- A new option for the Naming Service has been added
to allow the Naming Service to use a shared flat file on two or more separate
computers. Full capabilities are available only on Tru64 clusters, but limited
capabilities are available on any platform that the flat-file persistent Naming
Service will run.
-
Shared source on Windows -- It has been possible for users on UNIX and
UNIX-like platforms to use create_ace_build to build on multiple platforms from
the same source. The capability has been added to do this on the Windows
platforms also.
-
Input stream processing -- Input stream processing has been overhauled to
eliminate the so-called "parse_magic_bytes" bug. The particular problem was
very difficult to cause, and symptoms could vary from occasional unexpected
connection closure to full core dump. This change had negligible impact on
performance.
-
MAC OS X -- TAO support for the Macintosh OS X operating system has been added
to the existing ACE support in TAO 1.3.1.
-
Features added since TAO 1.2a as part of TAO 1.3.1
-
Persistent State Service (PSS) describes a way of making a service persistent.
The fact that PSS is being used by a service is known only to the service
(server) and not to the client which makes use of the service. PSS presents
persistent information as storage objects stored in storage homes, to quote the
specification. The storage homes are the datastores where the persistent data
is saved.
-
SSLIOP pluggable protocol ships with 1.3a. This allow users to use an SSL
implementation (not shipped with ACE/TAO) as a communication conduit.
-
There is a new Load Balancing Service that implements the current joint load
balancing submission revision of the OMG.
-
There is a new Logging Service, aka Telecom Log Service. It is a composite of
four separate services, Basic_Logging Service (similar to the previous logging
service), Event_Logging Service, Notify_Logging Service, and RTEvent_Logging
Service.
-
The final MIOP specification has recently been adopted by the OMG. TAO's MIOP
support (located in $TAO_ROOT/orbsvcs/orbsvcs/PortableGroup) enables servants
to receive requests sent to multicast addresses. This is performed by creating
a GroupId that identifies the multicast group and associating it with one or
more servants. Additionally, the Unreliable IP Multicast (UIPMC) pluggable
protocol is used to send and receive multicast requests. Multicast endpoints
can be created dynamically at runtime.
-
There is a new XML Parser for the Service Configurator. The current syntax is
still the default in version 1.3a with the new syntax available as an option.
The next version will change the default, but still keep the old syntax
available.
-
Many additional regression tests have been added.
-
ACE ported to Windows CE 3 with Pocket PC 2002 SDK, and Windows CE .NET with
Standard SDK complete.
-
AIX and HP-UX can now use g++ 3.2 (previous versions of g++ were not reliable
on these platforms).
-
The conversion of ACE/TAO documentation to Doxygen has been completed.
-
Support for the Itanium platform with Windows XP, HP-UX, and RedHat 2.1as has
been added.
-
Important bug fixes since TAO 1.2a
Many bugs have been fixed or work-arounds provided since TAO 1.2a. Here we
highlight a few of the more important bug fixes since TAO 1.2a, focusing
especially on fixes for bugs that could cause crashes, deadlocks, resource
leakage, or race conditions. Each bug is referenced by a number as assigned by
the DOC group Bugzilla bug database found at
http://deuce.doc.wustl.edu/bugzilla/index.cgi.
-
1003: Start up hang with new fixes to ACE_TP_Reactor
-
1020*: (partial-solution) Client crash when TAO_Transport closes a connection,
race condition
-
1025: ORB loses memory
-
1061: Server blocks indefinitely on shutdown when using shmiop
-
1125: Stack grows out of bounds when large data is being flushed (also fixed in
TAO 1.2a_p5)
-
1129: Problem because of improper closure of connections
-
1131: Add support for connection timeouts
-
1175: Select_Reactor_Notify deadlocks when the notify queue is enabled (also
fixed in TAO 1.2a_p2)
-
1185: ORB blocks during connect() calls
-
1202: ORB crashes if peer exits or dies while running nested event loops
-
1222: ORB stack overflows with crashes during write()
-
1230: Problems with usage of reactor->notify () calls within the ORB
-
1235: SEGV in CORBA::ORB_init if non-existent file is specified with
-ORBSvcConf option
-
1247: TAO_Cache_Manager never purges cache entries for server-side connections
-
1265: Potential ORB deadlocks during shutdown
-
1269: ORB crashes if peer dies while ORB is blocked trying to send
-
1270: ORB/Reactor segfaults if peer dies while trying to write
-
1274: Crash-producing race conditions in Transport Cache management
-
1305: TP_Reactor can reach inconsistent state and get into tight spin loop
(also fixed in TAO 1.2a_p6)
-
1344: Deadlock if POACurrent is resolved before RootPOA
-
1361: TP_Reactor -- Closed handle resumed leading to crashes
-
1382: Another race condition in TAO_Transport class
-
1487: Exceptions returned from AMI invocations get leaked
* Bug 1020 ( http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1020)
deserves special explanation. The problem, as described in the bug report,
could cause a multithreaded client with a connection to a server to crash if
the server died. A client thread, trying to send a request to the server, may
attempt to close the connection. Meanwhile, another thread might awaken in the
reactor and also attempt to close the connection, resulting in a segmentation
violation and crash. The partial solution, designed and implemented by
Balachandran Natarajan, is similar in spirit to how the TCP state machine
models connection teardown. Connection closure in the ORB is now modeled as an
event that is handled through the ORB's leader-followers mechanism. In
addition, event handling along the invocation path and along the connection
handling path were separated for better separation of concerns. A regression
test, $TAO_ROOT/tests/Bug_1020_Regression , was also added.
|