Just a second...

Upgrading from version 6.0 to version 6.1

Consider the following information when upgrading from Diffusion™ version 6.0 to version 6.1.

Upgrading your applications

Server-side components

Recompile all Java™ application components that are deployed to the Diffusion server, such as publishers and authorization handlers, against the new version diffusion.jar file. This file is located in the lib directory of your new Diffusion server installation.

Some features that your Java application components might use have been removed or deprecated. Pay attention to new deprecation warnings and compilation failures that occur during recompilation and review the API changes information in the following section to see if these changes affect your applications.

Clients

You can choose not to recompile your client applications and continue to use client libraries from a previous release. If you choose to use client libraries from a previous release, ensure that the libraries are compatible with the new server. For more information, see Interoperability.

You can choose to upgrade your client applications to use the new client libraries. To do this, recompile the client applications against the client libraries located in the clients directory of your new Diffusion server installation and repackage your client application with the new library.

The .NET client library is now fully compatible with the .NET Standard 2.0. Officially supported platforms are Windows (via .NET Framework, .NET Core), MacOS (.NET Core), and various Linux distributions (via .NET Core). In order to make this change clear we removed the old PushTechnology.ClientInterface library and NuGet package and replaced it with Diffusion.Client. This requires re-compilation of your project.

In the Javascript client, zlib code for message decompression has been separated out into browserify-zlib-0.2.0.js. Include browserify-zlib-0.2.0.js for clients that want to make use of the client compression capability. This can be achieved at build time by using browserify to package the browserify-zlib npm module into the application library.

browserify-zlib-0.2.0.js is included in the clients/js directory of your Diffusion installation, and can be downloaded from JavaScript SDK downloads.

Clients will log out a warning at startup if browserify-zlib-0.2.0.js is not included. The client's initial connection request will set the per-message compression capability depending on whether browserify-zlib-0.2.0.js is included. This will indicate to the server whether messages should be compressed before they are sent to the client.

The Java client now supports Java 9, 10 and 11. Java 8 is still required for the server.

Some features that your client applications might use have been removed or deprecated. Review the API changes information in the following section to see if these changes affect your applications.

API changes

Further information about removed or deprecated features is available in following locations:
The following table lists API classes and methods that have been removed. If you attempt to recompile application code that uses these classes or methods against the version 6.1 APIs, it fails. Rewrite your application code to not include these features.
Table 1. API features removed in version 6.1
API affected Removed feature Suggested alternative
.NET API ISession.GetXXXFeature() methods ISession.GetXXXFeature() methods Use the equivalent ISession.XXX property instead. For example, instead of ISession.GetClientControlFeature() use ISession.ClientControl
.NET API SessionId class Use ISessionId property instead.
.NET API DefaultStreamCallback and StreamDefault Use DefaultStream instead.
.NET API ISubscriptionRequest  
.NET API IClientSession  
.NET API IClientControlFeatureHandler  
.NET API IQueueListener  
.NET API IStateListener  
.NET API IAuthControlFeatureHandler  
.NET API ITopicManagementHandler & ITopicManagementFactory  
.NET API IClientInfo  
.NET API IPingDetails.RoundTripTime property  
The following table lists API classes and methods that have been deprecated. If your application code uses these classes or methods, consider rewriting your application code to not include these features.
Table 2. API features deprecated in version 6.1
API affected Deprecated feature Suggested alternative
All removeTopicsWithSession Use the new REMOVAL topic property.
  TopicEventListener (subscriber notifications) methods in the TopicControl feature These methods have been deprecated as they only worked for local sessions. The use case for these methods was typically removal of unused topics which is now better addressed using the REMOVAL topic property (which is cluster aware).
  Content interface The Content interface is being phased out. It is still used in some interfaces, such as Fetch and Messaging when receiving data. In all other cases its use should be avoided as it will be removed at a future release. At this release some remaining interfaces that used Content (such as builders and readers) have been deprecated.
.NET API IServiceRequest  
.NET API ISessionFactory.SslContext(RemoteCertificateValidationCallback, LocalCertificateSelectionCallback) Use the ISessionFactory.SslContext(RemoteCertificateValidationCallback) method instead.
.NET API IClientEndpoint None
Publisher API See release notes for details  

Removed components

The following components have been removed from Diffusion in version 6.0:
  • Cascade URLs for reconnection strategies have been removed from the C client API. Applications will no longer be able to supply a list of server URLs to connect to in the scenario that a C client session loses its connection a server. Reconnection is now targeted only at the server to which the connection was lost.

Upgrading your server installation

To upgrade your Diffusion server installation, complete the following steps:
  1. Use the graphical or headless installer to install the new version of Diffusion.

    For more information, see Installing the Diffusion server.

  2. Contact Push Technology for an updated license file.
  3. You can copy most of your existing configuration files from the etc directory of your previous installation to the etc directory of your new installation. When you do, consider making the following changes:
    • The server-statistics elements in Statistics.xml and the ServerStatisticsConfig are no longer valid and should be removed.
    • The customConfigurator element in Replication.xml configuration is deprecated and is ignored by the server. This was intended to enable Kubernetes support but was never documented. Consider removing it from your Replication.xml. (Use <replication kubernetes-enabled=”true”/> to enable Kubernetes support if it is included in your licence.)

Behavior changes at the Diffusion server

The following list includes behavior that has changed at the server. If your solution relies on the previous behavior, adjust your solution to take into account the new behavior.
  1. Fan-out connections no longer appear in session property queries and session property listener notifications. Previously fan-out connections would appear in session property queries and would also be notified to session property listeners as if they were client connections. This is no longer the case.
  2. If client statistics are enabled in Statistics.xml, a summary of the connected sessions is regularly logged. In previous releases, these reports were logged to a separate log file, specified by the log-file configuration property. From this release, the reports are logged to the server log. The log-file configuration property now has no purpose, and has been deprecated together with the corresponding configuration API property. If separate log files are required or the reports are not desired, use a third-party SLF4J logging back-end such as Log4j 2, and configure it appropriately to partition or filter the server log.
  3. The server no longer maintains rates for statistic metrics. Previously, the server maintained exponentially-weighted moving averages for some metric values, calculated over 1 minute, 5 minute and 15 minute intervals. These were available through the JMX statistics API and (if specially configured) the Diffusion console. The derived rates were rarely used and have been removed to reduce the CPU and memory overhead of statistics.
  4. Some rarely used statistics have been remove to improve performance. These statistics were only available through JMX and include the connection count per connection type; the number of publishers started and loaded; the publisher name; the per-publisher subscription count; the global count of subscriptions; the per-session connection type; and the per-topic counts of subscriptions added and removed.
  5. At previous releases, if a server was created in a programmatic environment (without XML configuration files) then it was necessary to set up certain configuration items in order to establish a working server that could accept normal web clients. All configuration items now have sensible defaults, enabling a working server to be started without any specific configuration.