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
- The release notes provided online at http://docs.diffusiondata.com/docs/6.11.2/ReleaseNotice.html
- The API documentation located at http://docs.pushtechnology.com/docs/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 |
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
- 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
- Use the graphical or headless installer to install the new version of
Diffusion
.
For more information, see Installing the Diffusion server.
- Contact DiffusionData for an updated license file.
- 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
- 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.
- 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.
- 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.
- 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.
- 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.