Preparing Connext Applications for the Year 2038 Transition

Beginning with RTI Connext DDS 7.2.0, RTI added support for operating beyond the Year 2038 time rollover issue. Systems running Connext DDS 7.2.0 or later can operate correctly through the year 2106.

What Changed?

To address the Year 2038 limitation, RTI updated how time values are represented:

  • DDS_Time_t seconds were expanded from a 32-bit integer to a 64-bit integer

  • RTPS_Time_t seconds (used on the wire) were updated to align with the OMG RTPS specification

These updates are standards-compliant and interoperable with other DDS vendors implementing the RTPS specification version 2.3 or later.


 Impact

Most applications upgrading from a release prior to 7.2.0, to any release after that, will require little or no modification. However, customers may notice:

  • Compiler warnings or small code updates where Time_t values are directly manipulated

  • Changes to Secure DDS logging topic names:

    • BuiltinLoggingTypeBuiltinLoggingTypeV2

Applications consuming secure logging data may need updates to support the new logging topic type.


 Why Older Versions Are at Risk

Applications using Connext DDS releases older than 7.2.0 may experience serious issues after January 2038 if they rely on the system clock, including:

  • Communication failures

  • Discovery and liveliness problems

  • Missed heartbeats and data repair failures

  • CPU spikes or stalled event processing

  • DestinationOrder QoS timestamp issues

These behaviors occur because older releases depended on signed 32-bit system-clock time internally.


 Recommended Action

RTI strongly recommends upgrading to the latest Connext DDS 7.3.1.x  or later release.

For customers who cannot upgrade before 2038, in order for their system to continue to operate past 2038, they must configure both the internal and external DDS clocks to use the monotonic clock where supported (see Platform Support below).

Example XML configuration:

<participant_qos>

   <property>

       <value>

           <element>

               <name>dds.clock.external_clock</name>

               <value>monotonic</value>

           </element>

           <element>

               <name>dds.clock.internal_clock</name>

               <value>monotonic</value>

           </element>

       </value>

   </property>

</participant_qos>

Using monotonic clocks prevents rollover-related failures, because monotonic clocks continuously increase from system startup and are not tied to wall-clock time.


 Important Consideration

When the external clock is configured to use a monotonic clock:

  • DestinationOrder::BY_SOURCE_TIMESTAMP is no longer a valid configuration option because a timestamp from a monotonic clock on one machine has no relation to a monotonic clock timestamp on another.

  • It is up to the user to review where source timestamps are being used in their applications to determine if that usage is still meaningful when using the monotonic clock.


 Platform Support

Monotonic clock support is available on major supported platforms including:

  • Linux

  • Windows

  • QNX

  • VxWorks

Customers should verify support in their release-specific platform notes.

 
Programming Language: