Releases: OpenDDS/OpenDDS
OpenDDS 2.2
Release notes for Version 2.2 of OpenDDS
- Completed the implementation of the Content-Subscription Profile (which
was begun in version 1.3 of OpenDDS). This includes:- QueryCondition (previously OpenDDS had a partial implementation)
- ContentFilteredTopic
- MultiTopic
The content-subscription profile can be disabled at compile-time in order
to reduce footprint: set the MPC feature "content_subscription" to 0.
- The code generation tools for OpenDDS have changed in this release. The
Perl script "dcps_ts.pl" is no longer used and instead the OpenDDS IDL
Compiler "opendds_idl" takes its place. opendds_idl also includes the
functionality which used to be in tao_idl and enabled with -Gdcps.
Existing applications that use MPC do not need to make any changes unless
they happen to depend on some rarely-used arguments to dcps_ts.pl. See the
OpenDDS Developer's Guide for the list of arguments accepted by opendds_idl. - Renamed odds_repoctl command to repoctl. Add a decorator if needed when
installing external to the OpenDDS directories. - Renamed odds_monitor command to monitor. Add a decorator if needed when
installing external to the OpenDDS directories. - Renamed Wireshark dissector 'odds' library to 'OpenDDS_Dissector'.
The source directory was renamed from $DDS_ROOT/tools/odds_dissector
to $DDS_ROOT/tools/dissector. - Fixed transport so it now allows associations between datareaders and
datawriters attached to the same transport to work. - Fixed a bug that causes samples larger than 64K to not work correctly with
the SimpleTCP transport. - Added nak_delay_intervals and nak_max configuration options for reliable
multicast to help reduce naks. - Added support for Ownership qos.
- Added support for GROUP presentation.
- Changed the default DataWriterQos reliability max_blocking_time from infinite
to be 100ms to be consistent with spec 1.2. - A new "configure" script is available to assist with setting up prerequisites
for OpenDDS compilation, including optionally downloading ACE+TAO. See the
INSTALL file for details.
Using the GitHub "releases" page
Download OpenDDS-2.2.zip (Windows) or OpenDDS-2.2.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.
OpenDDS 2.1.3
Release notes for Version 2.1.3 of OpenDDS
- Various fixes for memory management issue on transport framework.
- Fixed duplicate message issue caused by a lost link.
- Memory leak fixes.
- Fixed deadlocks on reliable multicast transport during association
and shutdown periods. - Improved reliable multicast transport and reduced nak overflow.
- Extended the capabilities of the OpenDDS-Bench performance test
framework. This consists mostly of expanded pre-configured tests as
well as additional execution and plotting scripts. The user guide at
performance-tests/Bench/doc/user_guide.html contains the details. - Masked interrupts in threads created by OpenDDS to avoid failures
while in system calls.
Example: ERROR: ACE::handle_write_ready return -1 while waiting
to unclog. handle_write_ready: Interrupted system call - Added support to set the TTL for multicast transports.
Using the GitHub "releases" page
Download OpenDDS-2.1.3.zip (Windows) or OpenDDS-2.1.3.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.
OpenDDS 2.1.2
Release notes for Version 2.1.2 of OpenDDS
- This is a bugfix release to account for issues introduced by the
previous version.
New to this version are the following changes:
- Various bugfixes for locking issues during sample removal.
- Fixed a bug in obtain_buffer() that did not return the TIMEOUT error
code when max_blocking_time is 0 or a very small period. - Fixed a deadlock in the new IP multicast transport caused when data
is received while a reliable session is handshaking. - Fixed an issue which caused spurious synch threads to be created for
connectionless transports (i.e. UDP/IP, IP multicast). - Enhanced the experimental UDP/IP transport to support multiplexing
samples to unique endpoints rather than unique entities.
Using the GitHub "releases" page
Download OpenDDS-2.1.2.zip (Windows) or OpenDDS-2.1.2.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.
OpenDDS 2.1.1
Release notes for Version 2.1.1 of OpenDDS
- This is a bugfix release to account for issues introduced by the
previous version.
New to this version are the following changes:
- Various bugfixes have been applied to the new IP multicast transport
and the Extensible Transport Framework (ETF) to improve stability. - Added IDL for ContentFilteredTopic and MultiTopic, but they are not yet
implemented (operations will return NULL or RETCODE_UNSUPPORTED). - A Wireshark 1.2.x compatible dissector is included in this release.
See $DDS_ROOT/tools/odds_dissector/README for details.
Using the GitHub "releases" page
Download OpenDDS-2.1.1.zip (Windows) or OpenDDS-2.1.1.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.
OpenDDS 2.1
Release notes for Version 2.1 of OpenDDS
New to this version are the following changes:
- The OpenDDS-Bench performance testing framework has been enhanced to
include the following:- extended to allow fixed rate testing;
- added predefined latency test configuration files;
- added data reduction scripts to post process test results;
- added data visualization scripts using gnuplot to create charts
from reduced test data.
Documentation is located at: $DDS_ROOT/performance-tests/Bench/doc.
- The monitor library introduces a new instrumentation mechanism for
reporting OpenDDS run-time information. This information is
intended to supplement that provided by the standard-defined
Built-In-Topics. See $DDS_ROOT/dds/monitor/README for further
details. - A new instrumentation application is available to view executing
OpenDDS service Entities. This is located at: $DDS_ROOT/tools/odds_monitor. - The opendds_repo_ctl tool has been moved from $DDS_ROOT/dds/tools to
$DDS_ROOT/tools. The name has also been changed to odds_repoctl to
reflect changes in naming conventions in this release. - A new multicast transport is available which replaces the older
ReliableMulticast and SimpleMcast transports. For a detailed description
of the design, configuration, known issues, and potential enhancements,
see: $DDS_ROOT/docs/html/multicast/multicast.html. - A new udp transport is available which replaces the older SimpleUdp
transport. Like SimpleUdp, udp provides best-effort reliablity only;
its use should be considered experimental. - Numerous bugs in the Extensible Transport Framework (ETF) have been
addressed to improve the stability of new and existing transports. - Formal ranges of DDS::DomainId_t values are now specified; users have
full access to all DomainId values between 0x0 and 0x7fffffff. All other
values are reserved for use by the implementation.
Using the GitHub "releases" page
Download OpenDDS-2.1.zip (Windows) or OpenDDS-2.1.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.
OpenDDS 2.0.1
Release notes for Version 2.0.1 of OpenDDS
- This is a bugfix release to account for issues introduced by the 2.0
integration process. No new features have been added in this release.
New to this version are the following changes:
- Bugfixes for STLport support using Sun CC compilers.
- Corrected default ReliablityQoS policy for DataWriter entities.
- Bugfixes to Java language bindings including TAO_IDL interface changes
introduced in DOC TAO 1.7.4 and incorrectly generated project files.
Using the GitHub "releases" page
Download OpenDDS-2.0.1.zip (Windows) or OpenDDS-2.0.1.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.
OpenDDS 2.0
Release notes for Version 2.0 of OpenDDS
- This is the first release of OpenDDS that conforms to the minimum
compliance profile as documented in formal/07-01-01 (version 1.2).
Near-complete support for the persistence profile and initial support
for the content-subscription profile is also provided in this release.
New to this version are the following changes:
- Updated support for DataWriter::unregister() and DataWriter::dispose()
to properly release resources after all samples in a marked instance
are removed. - Implemented Publisher::wait_for_acknowledgments() as defined in
formal/07-01-01. - Fixed an issue in QueryCondition where applying filters on non-valid
data samples caused a SEGV; these samples are now implicitly filtered
out. - Implemented PRESENTATION QoS policy as defined in formal/07-01-01.
Currently, GROUP access is not supported. - Implemented MANUAL_BY_TOPIC and MANUAL_BY_PARTICIPANT LIVELINESS QoS
policy kinds. - Implemented BY_SOURCE_TIMESTAMP DESTINATION_ORDER QoS policy kind.
Samples may now be ordered based on reception or source times on a per
instance basis. - Implemented ENTITY_FACTORY auto_enable support in formal/07-01-01.
Entities may now be enabled manually by setting this value to false. - Implemented WRITER_DATA_LIFECYCLE as defined in formal/07-01-01.
Instances will now be properly unregistered/disposed when a DataWriter
is deleted. - Implemented READER_DATA_LIFECYCLE as defined in formal/07-01-01.
- Implemented TIME_BASED_FILTER as defined in formal/07-01-01.
- create_*() functions now take a StatusMask argument. A new constant
named OpenDDS::DCPS::DEFAULT_STATUS_MASK has been introduced as a
convenience to indicate interest in all status changes. - Implemented the following new methods on DomainParticipant as defined
in formal/07-01-01:- get_discovered_participants()
- get_discovered_participant_data()
- get_discovered_topics()
- get_discovered_topic_data()
- Constant name changes:
- PUBLICATION_MATCH_STATUS => PUBLICATION_MATCHED_STATUS
- DURATION_INFINITY_SEC => DURATION_INFINITE_SEC
- DURATION_INFINITY_NSEC => DURATION_INFINITE_NSEC
- TIMESTAMP_INVALID_SEC => TIME_INVALID_SEC
- TIMESTAMP_INVALID_NSEC => TIME_INVALID_NSEC
- Removed constants:
- TRANSPORTPRIORITY_QOS_POLICY_NAME
- Type name changes:
- StatusKindMask => StatusMask
- SubscriptionMatchStatus => SubscriptionMatchedStatus
- PublicationMatchStatus => PublicationMatchedStatus
- Removed types:
- SampleStateSeq
- ViewStateSeq
- OctetSeq
- Other type changes:
- BuiltinTopicKey_t is now a struct containing an array rather
than a bare array type. This allows passing a BuiltinTopicKey_t
by reference. - Ownership is now indicated in DataReaderQos and DataWriterQos as
well as PublicationBuiltinTopicData and SubscriptionBuiltinTopicData. - Removed sevice_cleanup_delay from DurabilityQosPolicy.
- BuiltinTopicKey_t is now a struct containing an array rather
- Method name changes:
- register()/_cxx_register() => register_instance()
- register_w_timestamp() => register_instance_w_timestamp()
- unregister() => unregister_instance()
- unregister_w_timestamp() => unregister_instance_w_timestamp()
- on_subscription_match() => on_subscription_matched()
- on_publication_match() => on_publication_matched()
- Other method changes:
- set_qos(), get_qos(), get_*_status() and assert_liveliness() now
return error codes as specified in formal/07-01-01. - Subscriber::get_datareaders() reader parameter has changed from out
to inout.
- set_qos(), get_qos(), get_*_status() and assert_liveliness() now
Using the GitHub "releases" page
Download OpenDDS-2.0.zip (Windows) or OpenDDS-2.0.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.
OpenDDS 1.3
Release notes for Version 1.3 of OpenDDS
- This will be the final release of OpenDDS that will build with the current
patch level of TAO 1.4a. This release is compatible with (the current patch
levels of) TAO 1.4a, 1.5a, and 1.6a, as well as the current DOC Group
beta/micro release. Future releases will be compatible with TAO 1.5a, 1.6a
and the DOC group -- see the README file for details on TAO versions.
New to this version are the following changes:
- Implemented the Communication Status entity structures and behaviors to
conform with the version 1.2 specification (formal/07-01-01). This
includes member name changes and additions to LivelinessChangedStatus;
modifying and extending the SampleRejectedStatusKind enumeration; and,
adding new members to the PublicationMatchStatus and
SubscriptionMatchStatus structures. - Implemented the TRANSPORT_PRIORITY Quality of service policy using the
policy value to set thread priorities and DiffServ codepoint values.
The current implementation does not honor the Changeable behavior of
the policy. Only the intially established policy value is honored for
any given DataWriter Entity. Thread priorities are not currently set
on Windows systems. - Implemented the LATENCY_BUDGET Quality of service policy as a
monitoring feature with an extended listener callback for exceeded
budget values. Statistics for latency are made available via an
OpenDDS-specific extended API as well. - Implemented the ReadCondition interface and associated operations
on the DataReader (such as read_w_condition). - Implemented the QueryCondition interface, but only queries of the form
"ORDER BY a[, b, c...]" have any effect. In other words, it's a mechanism
that controls the order of the data-set received from any given read or
take operation. The ORDER BY fields can be either primitive types
(including strings) or primitive types in nested structs (using a.b). - Corrected a bug in the LIFESPAN QoS implementation where the Topic QoS
was used. Now the DataWriter QoS takes effect. - The PARTITION QoS policy now accepts character class wildcards using [].
- Corrected a bug in the PARTITION QoS implementation where the default
QoS would not match against the '*' wildcard. - The DURABILITY QoS implementation was corrected so that readers requesting
the VOLATLIE kind will not receive historic samples from writers. Since
there were some use-cases for the old behavior, it is available through an
OpenDDS-specific interface -- see $DDS_ROOT/dds/DdsDcpsSubscriptionExt.idl. - When the writer's DURABILITY QoS is PERSISTENT, the format of the
data stored on the filesystem has changed. Instead of a single file in the
current working directory, a directory is now used. This is configurable
using the option -DCPSPersistentDataDir. - A Java Message Service 1.1 (JMS) provider built on top of OpenDDS is now
available in $DDS_ROOT/java/jms. JMS Topics are supported (not queuing).
See the README in that directory for more info. - The $DDS_ROOT/bin/federation utility has been renamed to opendds_repo_ctl
and now supports shutting down a remote non-federated DCPSInfoRepo process. - Deleting a DataWriter from a Publisher now blocks until pending samples have
been delivered by the underlying transport. By default, the DataWriter will
block indefinitely. To change the default blocking behavior, you may
specify a number of seconds to block with the -DCPSPendingTimeout option. - Instance handles are now compliant with version 1.2 of the DDS
specification. Additionally, the contains_entity and get_instance_handle
operations have been implemented. - Implemented DataWriter::wait_for_acknowledgments() from formal/07-01-01.
- Added support for Windows Mobile 6 (WinCE) Standard SDK, and ACE_USES_WCHAR
builds in general. See docs/design/wchar.txt.
Using the GitHub "releases" page
Download OpenDDS-1.3.zip (Windows) or OpenDDS-1.3.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.
OpenDDS 1.2
Release notes for Version 1.2 of OpenDDS
New to this version are the following changes:
-
Implemented the WaitSet, GuardCondition, and StatusCondition interfaces
from the OMG DDS specification. -
Implemented DomainParticipant::get_current_time() from formal/07-01-01.
-
Added the ability for using multiple repositories to provide redundant
service metadata management.The ability to federate repositories and redirect applications to
attach to a new repository in the event a repository fails or becomes
unreachable. This is an experimental feature. -
Removed requirement for repository domain specification files.
Repositories will manage DomainParticipants and their contained
Entities in any domain without requiring the domain to be prespecified
in a configuration file. This removes the '-d' command line argument
from the repositories as well. -
Internal service Entity identifiers have been expanded to 128 bits.
These internal identifiers were previously 32 bits. The 128 format
follows the format of OMG Specification formal/08-04-09 (The Real-time
Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol
Specification, Version 2.0) GUID_t unique identifier type.OpenDDS places the identifier value for the DataWriter Entity of a
publication on the wire to identify the source of data samples. This
means that this version of OpenDDS WILL NOT INTEROPERATE with previous
versions since the 128 values are not compatible with the previous 32
bit values. -
Java Bindings for OpenDDS
See $DDS_ROOT/java/README, $DDS_ROOT/java/INSTALL, $DDS_ROOT/java/FAQ
-
dcps_ts.pl changes
Modified this script to create a single idl, header, and source file
no matter how many types are contained within the input idl file. This
allows the output file names to be based upon the input file name (instead
of the types found in the idl file). Users of prior OpenDDS versions can
use the script $DDS_ROOT/bin/update_dcps.pl to assist with this transition.Added a command line argument to allow an output directory to be
specified. All output files will be placed into this directory if
present. They will continue to be placed in the current directory if
this argument is not present. -
DCPSInfoRepo changes
A new library has been introduced (libDCPSInfoRepoServ) which provides
the neccessary hooks for running the DCPSInfoRepo within another process.
For example usage, see: $DDS_ROOT/dds/InfoRepo/DCPSInfoRepo.cpp. -
Fixed bug in DCPSInfoRepo that did not re-evaluate the compatibility and
associations when QoS change is made. -
Fixed bugs that affected connection establishment.
Fixed DataWriterImpl to handle the case that remove_association is called
before fully_associated is called.Fixed a race condition that connection delay deletion removes new assocaitions.
Corrected fully association ack verification to fix issues when multiple
associations of a datalink are added simultaneously. -
Added datalink_release_delay and removed keep_link configuration.
The datalink_release_delay is the delay for datalink release after no
associations. It defaults to 10 seconds. This is to fix disconnect
problem happened when removing and adding association related to
same datalink during short period.Removed keep_link which can be replaced with a big value of
datalink_release_delay. -
Fixed a potential deadlock in reliable multicast transport.
Using the GitHub "releases" page
Download OpenDDS-1.2.zip (Windows) or OpenDDS-1.2.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.
OpenDDS 1.1
Release notes for Version 1.1 of OpenDDS
New to this version are the following changes:
-
Added support for PARTITION QoS policy.
This QoS policy allows publishers and subscribers to belong to one
or more logical partitions. Partition names may contain wildcards.
However, only wildcards containing "*" or "?" are currently
supported. -
Added support for DEADLINE QoS policy.
The DEADLINE QoS policy allows the application to detect when data
is not written or read within a specified amount of time. The
{Offered,Requested}DeadlineMissesStatus::last_instance_handle is
currently not updated. -
Added support for LIFESPAN QoS policy.
This policy allows the application to specify when data expires,
meaning invalid. Expired data will not be delivered to
subscribers. -
Added support for the TRANSIENT kind of DURABILITY QoS policy.
Data will outlive DataWriters when TRANSIENT DURABILITY is
configured, and will be sent once a new DataWriter is created within
the same domain for the same topic and type. The cached data will
only last as long as the process. -
Added support for the PERSISTENT kind of DURABILITY QoS policy.
PERSISTENT DURABILITY provides basically the same functionality as
TRANSIENT DURABILITY, except that cached data will survive process
destruction. -
Added support for the DURABILITY_SERVICE QoS policy.
This QoS policy provides a way to specify resource limits for
domain/topic/type-specific data in a TRANSIENT or PERSISTENT
DURABILITY cache. The resource limits in question are analogous to,
although independent of, those found in the HISTORY and
RESOURCE_LIMITS policies. -
Added a new command-line option, "-DCPSTransportDebugLevel".
This can be used to specify a debug level for the OpenDDS
transport layer at run-time. OpenDDS debug statements range
from 0 to 5 in increasing order of verbosity. -
Added the ability to attach to multiple DCPSInfoRepo processes.
Applications which communicate using DDS are no longer restricted to
communicating using domains controlled by a single DCPSInfoRepo
process. Individual domain publications and subscriptions within a
process can be attached to a designated repository. Each domain is
controlled by a single repository and this association may not be
changed for the lifetime of the repository or the application. -
Added QoS propagation.
The client applications can change the qos of DCPS entity via
set_qos() call. The qos updates are propagated to DCPSInfoRepo which
publishes the updated qos to corresponding BIT datawriter and also
save it to persistent repository. -
Fixed a few bugs in persistent DCPSInfoRepo support.
Fixed incorrect actor type and qos type for subscriber/datareader
problem in UpdateManager::add(const UA& actor). This bug causes the
reloading from persistent file maps the subscriber/datareader as
publisher/datawriter.Fixed a bug in qos serialization. The TAO_OutputCDR stream was not
fully copied to buffer when the qos contains sequence data. The
TAO_OutputCDR stream needs be consolidated before memcpy. -
Fixed compliance with qos RxO.
Fixed compliance with the DDS specification that qos parameters that
Durability kind and Deadline.period be compatible between the
subscriber and the publisher (RxO - Received x Offered) -
Improved Memory Mangament.
Fixed issues with reference counting for classes derived from
LocalObject. If a user defined application is crashing on exit or
cleanup, see the OpenDDS FAQ. -
Added support for IPv6.
The requirement for using IPv6 is the fully qualified domain name (FQDN)
needs be resolved as IPv6 address as it is used by default configuration
to support BuiltInTopic.The local_address in the configuration file should use IPv6 decimal
address or hostname that can be resolved as IPv6 address. -
Used the address string instead of 4-byte IP address and port number
for pub/sub endpoint address advertisement.The address string in the configuration can use decimal IPv4/IPv6 address
or hostname that can be resolved on both pub and sub sides.The default address string is "host:port". The "host" is the fully qualified
domain name and the "port" is picked randomly by OS. -
Fixed a problem that the default local_address does not work when hostname
is resolved as the loopback ip address.With the default local_address, the acceptor now is listening on IPv4/IPv6
ANY, but use the fully qualified hostname for address advertisement. -
Added default configuration for the reliable multicast transport type.
The multicast_group_address defaults to the ACE default multicast address
(224.9.9.2:20001 for IPv4 and ff05:0::ff01:1:20001 for IPv6) and the
local_address defaults to ANY with a random port picked by the OS. -
Fixed a bug in DataReaderImpl::remove_associations() and
DataWriterImpl::remove_associations() that should not attempt to remove
the already removed writer/reader. -
Fixed a bug in SimpleTCP that an active disconnect due to the peer
graceful disconnect does not terminate send. This bug made the re-established
connection fail on send strategy state check. -
Added dispose() and unregister() notifications. When dispose()
is explicitly called on the DataWriter side, the DataReader listener
on_data_available() callback should receive a sample with the valid_data
flag == 0 and the instance state == NOT_ALIVE_DISPOSED_INSTANCE_STATE.When unregister() is explicitly called on the DataWriter side,
the DataReader listener on_data_available() callback should receive a
sample with the valid_data flag == 0 and the instance state ==
NOT_ALIVE_NO_WRITERS_INSTANCE_STATE. -
Moved TRANSPORTTYPE_QOS_POLICY_NAME and TRANSPORTTYPE_QOS_POLICY_ID
from DDS namespace to OpenDDS namespace since they are specific to
OpenDDS.
Using the GitHub "releases" page
Download OpenDDS-1.1.zip (Windows) or OpenDDS-1.1.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.