We are proud to announce that Lightstreamer 7.3 has been publicly released.
You can download it right now from https://www.lightstreamer.com/download/
Lightstreamer 7.3 and the most recent client and adapter SDKs bring many improvements and fixes, mainly covering performance and features. Below are some highlights but you can check out the full list in the Server changelog and the changelogs of the various SDKs, that can be reached from the download page.
JSON Delta Delivery
The “delta delivery” feature, which allows for a reduction of the amount of bytes sent to the clients, has been extended. Now, not only are unchanged values omitted, but also changed values can be sent in a smaller form as the difference with respect to previous values.
This facilitates using structured values, like JSON texts, when leveraging the support for multiple fields is not feasible. In particular, for JSON values, the differences can be computed in JSON Patch format. For all values, a textual diff format based on the diff-match-patch algorithm is available.
Since the diff computation may be inefficient for some values, the application of the available algorithms should be enabled by configuration. An extension of the Data Adapter interface will allow custom code to specify the enabled algorithms on a field-by-field basis.
However, to leverage the new delta delivery features made available by the SDK for Generic Clients, client-side support is needed. At the time of Server release, only the Web Client SDK 8.2 beta and Node.js Client SDK 8.2 beta include partial support (JSON Patch only). The other Client SDKs will follow soon and may be already aligned as you read this post.
As for the Adapters, the interface extension, at the time of Server release, is already available for the Java In-Process, Generic, Java Remote and Node.js Remote SDKs. The remaining Remote Adapter SDKs will be aligned as soon as possible.
Item’s Data Adapter Information
The Metadata Adapter interface had been affected by an open issue for years, whereby the callbacks to determine item-related properties (like getAllowedMaxItemFrequency and many others) didn’t specify the Data Adapter, within the current Adapter Set, from which the item was being requested. This could cause ambiguity in some scenarios.
Now, the signatures of all the affected callbacks have been extended with the missing argument, at least for the Java In-Process Adapter SDK. Note that this breaks source compatibility with existing Adapter code. However, backward compatibility with existing binaries has been preserved by leveraging Java reflection, so the upgrade won’t affect current deployments.
TLS Native Implementation
TLS handshakes may be the main performance bottleneck in some scenarios. Hence, careful tuning of the “Security Provider” may be very important. The Security Provider is supplied by the JDK or by third-party libraries and provides for its own configuration mechanisms. However, we have added a few Server configuration properties to help with this.
In particular, we have focused on the configuration of the TLS Resumption feature, which, when properly leveraged, may save CPU and bandwidth.
Moreover, it is now possible to configure different Security Providers for different listening ports.
BTW, one of such third-party Security Providers is now embedded in Lightstreamer Server. We are referring to Google’s Conscrypt, which includes a native implementation that should be particularly fast.
Adapter Remoting Infrastructure
In Server version 7.2, the Adapter Remoting Infrastructure lacked a few features offered by the Java In-Process Adapter interface. Now all those features have been added, together with some (but not all) features introduced in the Java In-Process Adapter interface in this release. The following are the most important ones:
It is now possible, from a Remote Adapter, to force the termination of a Session. Alternatively, it is possible to enforce a maximum lifetime upon Session start.
It is now possible, from a Remote Adapter, to force termination of a subscription made by a Session.
However, these extensions, made available by the SDK for Generic Adapters, require parallel changes in the Remote Adapter SDKs. At the time of Server release, only the Java Remote Adapter SDK 1.6 version includes full support. The other Remote Adapter SDKs will be aligned as soon as possible.
Another important improvement regards the ARI Protocol efficiency which was limited for non-ascii text by the need to percent-encode characters. Now UTF-8 encoding is supported and percent-encoding is only needed for a few characters.
As above, the Remote Adapter SDK support for this extension is partial and limited, at the time of Server release, to the Java Remote and Node.js Remote Adapter SDKs, whereas the other Remote Adapter SDKs will be aligned as soon as possible.
Based on customer’s feedback, some issues in the interaction with the deployment environment have been addressed.
A Server instance can now be detached from a cluster without interrupting the current connections by simply enforcing the healthcheck url to yield an error response. This can be done via the JMX interface.
Moreover, a Server instance can be enforced to stop listening from a port while still keeping the active connections, again from the JMX interface.
Another improvement is the possibility to define multiple alternative url paths that can be used to issue streaming requests to the Server. This can simplify the deployment behind some reverse proxies that impose different url paths.for different transports.
Python Client SDK
A new SDK, for Python clients, has been released recently. At the time of Server release it is in beta, but it will become final soon.
The Lightstreamer site is undergoing a full refurbishment and this Server release is already aligned. You will notice the new logo and new colors in both the preinstalled “Welcome Page” and the provided Monitoring Dashboard.
How to Upgrade
Upgrading to Lightstreamer 7.3 is straightforward. As usual, the new server keeps compatibility with all the previous clients. This way, you can upgrade the server safely without disrupting production. Then, you can start upgrading the client libraries at your own pace.
Likewise, compatibility with all the previous Adapters, both In-Process and Remote, is kept.
Detailed instructions on how to upgrade from any previous version of Lightstreamer server to version 7.3.0 are available.
The Lightstreamer configuration files can be upgraded automatically through a very handy online tool.
If you are on the Cloud License Manager (CLM), your license has been upgraded automatically to enable Lightstreamer 7.3. If you are still using license files, please contact firstname.lastname@example.org to get your updated keys.