Adapter Remoting Infrastructure CHANGELOG
1.9.8 build 118
Compatible with Lightstreamer Server since 7.1.
Compatible with configuration files for the previous version.
Compatible with Remote Servers based on the previous version.
Released on 25 Sep 2020

Moved the "adapter_remoting_infrastructure" folder, which includes the provided resources, from inside the old "DOCS-SDKs" to the main "Lightstreamer" folder. Also renamed the subfolders used to contain the templates of adapters.xml for the configuration of remote Adapters.
This local changelog has also been separated from the Server changelog and placed in the "adapter_remoting_infrastructure" folder.

1.9.7 build 116
Compatible with Lightstreamer Server since 7.1.
Compatible with configuration files for the previous version.
Compatible with Remote Servers based on the previous version.
Released on 27 May 2020

Fixed a NPE that could occur in the Robust Metadata Adapter Proxy when failing to connect due to unexpected interruption of the underlying server socket. As a consequence, the Proxy would give up retrying.

Improved the handling of changes in the keystore, when configured to enforce TLS encryption on the connections with the Remote counterpart. Changes are now immediately detected also when the Proxy is currently waiting for connections.

1.9.6 build 113
Compatible with Lightstreamer Server since 7.1.
May not be compatible with configuration files for the previous version; see the compatibility notes below.
May not be compatible with Remote Servers based on the previous version; see the compatibility notes below.
Released on 24 Jan 2020

Discontinued the support for old Remote Adapters targeted to Adapter Remoting Infrastructure version up to 1.4.x. The backward compatibility mode was triggered by setting the "init_remote" parameter to false. Now this setting will cause the Proxy Adapter startup to fail. COMPATIBILITY NOTE: Existing installations using very old Remote Adapter SDKs that require Adapter Remoting Infrastructure version 1.4.3 or earlier cannot be upgraded, until the Remote Adapter SDK is also upgraded to a more recent version.

Revised the support for custom configuration parameters defined in adapters.xml and forwarded to the Remote Adapter upon initialization. All parameter names without a ':' character are now reserved. To enforce this, the prefix specified in the "remote_params_prefix" parameter must also contain a ':' character, although the indication of an empty prefix is still supported. COMPATIBILITY NOTE: If custom parameters are used and they don't contain a ':', they should be renamed, and the specified "remote_params_prefix" should be changed accordingly. As a consequence, the Remote Adapter should also be modified. However, by specifying an empty prefix in "remote_params_prefix" the names can be kept, but name conflicts with new reserved parameters, with unpredictable consequences, will become possible.

Introduced the support for TLS encrypted connections from the Remote Adapters. This is enabled by the new "tls" parameter, available independently for each Remote Adapter in the corresponding <metadata_provider> or <data_provider> block in adapters.xml. Further parameters are available for the configuration of the certificate and the handshake preferences; see the sample adapters.xml files for details.

Introduced the support for authentication of the Remote Adapters based on user/password credentials. This is enabled by the new "auth" parameter, available independently for each Remote Adapter in the corresponding <metadata_provider> or <data_provider> block in adapters.xml. Further parameters are available for the configuration of the credentials; see the sample adapters.xml files for details.

Allowed the <install_dir> configuration element for all Proxy Adapters, to better support the new configuration options. Previously it was refused with an error when <classloader> was set to "log-enabled".

Revised the initialization phase, in which the connections from the Remote Adapters are expected. Now multiple connections may be accepted and evaluated concurrently on the same listening port, although only one per port will eventually be elected and the others will be closed. If authentication is configured, a connection will be elected only after successful authentication. However, after electing a connection, the listening port will be closed, as before.
Modified the meaning of the "connection_recovery_timeout_millis" setting for Robust Proxy Adapters accordingly.
Note that the log of the initialization phase may be quite different than before.

Enabled the support for multiple protocol versions, to allow for backward compatibility with the Remote Servers upon future extensions. To achieve this, a proper initialization parameter is sent to the remote counterpart. COMPATIBILITY NOTE: Existing Remote Servers based on previous Remote Adapter SDKs are still supported. They will just forward the additional "ARI.version" parameter to the Remote Adapter upon initialization, which is not supposed to hurt the Adapter (BTW, in the unlikely case that the same parameter were supplied to a Remote Adapter by the Remote Application, as possible with some SDKs, the supplied value would be preserved and no changes at all would occur).

Introduced the indication to the remote counterpart of the suggested time for keepalive messages (when needed), through a proper initialization parameter. Recent Remote Adapter SDKs can obey the suggestion instead of using a custom time. COMPATIBILITY NOTE: Existing Remote Servers based on previous Remote Adapter SDKs will (if received) forward the additional "keepalive_hint.millis" parameter to the Remote Adapter upon initialization, which is not supposed to hurt the Adapter (BTW, in the unlikely case that the same parameter were supplied to a Remote Adapter by the Remote Application, as possible with some SDKs, the supplied value would be preserved and no changes at all would occur). Added the "keepalive_hint_millis" parameter in both the <metadata_provider> and <data_provider> block in adapters.xml, to customize the suggested keepalive time instead of using a library-determined default.

Added the "notify_user_on_disconnection" parameter for the Robust Proxy Metadata Adapter and, when set, enforced the consistency with "notify_user_disconnection_code". Added, in particular, the possibility to have Lightstreamer Server instruct the Client to retry when the Remote Metadata Adapter is disconnected.

Extended the client context provided to the remote counterpart upon the notifyNewSession invocations, by adding the CLIENT_TYPE and CLIENT_VERSION keys, with information on the Client SDK in use.

Fixed the implementation of the activity (or keepalive) check, which could have been heavy in case of very frequent request or update rates. This only affected the cases in which the "keepalive_timeout_millis" setting was leveraged.

Improved logging of the connection phase, with information on the remote side, which was missing.
Improved activity and error logging.

Changed the suggested settings for some of the dedicated thread pools in the adapters.xml templates, and revised the count of queued tasks, according to ARI specificities.
Fixed the documentation of <authentication_pool> and <messages_pool> to account for changes introduced in ARI version 1.8.0.

1.8.1 build 84
Compatible with Lightstreamer Server since 7.0.
Compatible with configuration files for the previous version.
Compatible with Remote Servers based on the previous version.
Released on 28 Feb 2018

Added a new configuration parameter, "keepalive_timeout_millis", for both Proxy Metadata and Data Adapters. The new configuration allows to set a timeout for received data and keepalives from the Remote Adapters to detect unresponsive connections (that will be handled differently by the "robust" and "non robust" versions. See the sample adapters.xml files for details.

Aligned the protocol documentation to comply with current licensing policies.

1.8.0 build 77
Compatible with Lightstreamer Server since 7.0 b2.
May not be compatible with configuration files for the previous version; see the compatibility notes below.
May not be compatible with Remote Servers based on the previous version; see the compatibility notes below.
Released on 20 Dec 2017

Modified the communication protocol for the Remote Metadata Adapters in the part related to the MPN Module, after its full revision. COMPATIBILITY NOTE: Only if the MPN Module is enabled, existing Remote Metadata Adapters based on the current SDKs have to be ported to the new versions of the SDKs.

Changed the default of the <sequentialize_table_notifications> flag available in adapters.xml from Y to N, to better cope with cases in which many subscriptions are performed at once. COMPATIBILITY NOTE: If any existing Remote Metadata Adapter relies on the invocations of notifyNewTables and notifyTablesClose for the same session to never overlap, ensure that the flag is explicitly configured as Y for this Adapter.

Improved some error messages.

Changed the preconfigured settings for the dedicated thread pools in the adapters.xml templates, to leverage the new defaults for the SERVER pool.

1.7.2 build 73
Compatible with Lightstreamer Server since 6.0.
Compatible with configuration files for the previous version.
Compatible with Remote Servers based on the previous version.
Released on 23 Jan 2017

Introduced a "first_connection_timeout_millis" configuration parameter for the Robust Proxy Data Adapter, similarly to what is available for the Robust Metadata case (but with a 0 default, which is consistent with the previous behavior).

Introduced a new strategy for the "events_recovery" configuration parameter of the Robust Proxy Data Adapter. See "enforce_snapshot" in the sample configuration file under "adapter_robust_conf_template".

Extended the configuration templates to advertise the variable-expansion feature introduced in Server version 6.1.

1.7 build 70
Compatible with Lightstreamer Server since 6.0.
Compatible with configuration files for the previous version.
Compatible with Remote Servers based on the previous version.
Released on 10 May 2016

Improved a log message, which was unclear, related with Remote Adapter unavailability.

1.7 build 67
Compatible with Lightstreamer Server since 6.0.
Not compatible with configuration files for the previous version; see the compatibility notes below.
May not be compatible with Remote Servers based on the previous version; see the compatibility notes below.
Released on 21 Jan 2015

Embedded the Proxy Adapter binaries related with the current version of the Adapter Remoting Infrastructure. Previously, the ls-proxy-adapters.jar file supplied by the ARI SDK had to be added to the Adapter Set libraries. As a consequence, the ls-proxy-adapters.jar binaries are no longer provided directly. As a further consequence, the compatibility constraint of the Adapter Remoting Infrastructure is now stated directly with respect to Lightstreamer Server. COMPATIBILITY NOTE: Existing Adapter Set deployments based on the old Proxy Adapters supplied in ls-proxy-adapters.jar are supported seamlessly.

Introduced the "PROXY_FOR_REMOTE_ADAPTER" and "ROBUST_PROXY_FOR_REMOTE_ADAPTER" reserved names to be used in place of the class names for the inclusion of the new embededd Proxy Adapters in adapters.xml. COMPATIBILITY NOTE: The new reserved names are not expected to conflict with custom class names in an existing adapters.xml. COMPATIBILITY NOTE: In order to port an existing Adapter Set configured for Remote Adapters to the new Proxy Adapters, the adapters.xml configuration file has to be changed to comply with the new naming (and ls-proxy-adapters.jar can be discarded).

Introduced an explicit initialization request sent by the Proxy Adapters to the Remote Adapters upon connection. This now allows for:

  • Defining parameters for the Remote Adapter directly in the configuration block of the Proxy Adapter.
  • Having the Proxy Adapter send its own identification information to the Remote Adapter. With a "Robust" version of a Proxy Adapter, this also means notifying the Remote Adapter of the instance identity of the Proxy Adapter (hence Lightstreamer Server), so that if a previous detached instance of Remote Adapter has persisted any context information, this information can be identified and retrieved by the new instance.
  • Having the Remote Adapter inform the Proxy Adapter in case of any initialization issue, instead of just having the Remote Server refrain from connecting.
See "remote_params_prefix" in the sample "adapters.xml" files for details on how the initialization parameters can be specified. COMPATIBILITY NOTE: Existing Remote Servers based on the .NET and Generic Adapter SDKs have to be upgraded to the new SDK version. However, backward compatibility can be restored by disabling the new request through the new "init_remote" configuration parameter.

Discontinued the support for the "Piped" versions of the Proxy Adapters. Only the "Networked" versions and their "Robust" extensions are now available. COMPATIBILITY NOTE: Existing installations based on the "Piped" versions should be ported to the "Networked" versions. But we don't expect this case to occur for production deployments, as the use of the "Piped" versions was not recommended for production. Removed the "eos_count_limit" and "eos_sleep_time" configuration parameters, which were only used by the "Piped" versions of the Proxy Adapters.

Introduced the "remote_address_whitelist" parameter, to be used to specify a list of IP addresses, from where Remote Adapter connections are accepted by a Proxy Adapter. If missing, connections are still accepted from any host.

Changed the logger names used by the Proxy Adapters for their own logging and replaced the old logger configuration with the new one in Lightstreamer Server's factory log configuration file (see the supplied file for details). COMPATIBILITY NOTE: To keep using an existing log configuration file, the logger should be manually replaced too. Obviously, as long as existing Adapter Set deployments based on the old Proxy Adapters are in use, the old logger should also be kept.

Removed the description of the ARI Protocol (made available to custom Remote Servers for implementing Lightstreamer Server Adapter interface via TCP) from the scope of this component. Now, the "Adapter Remoting Infrastructure" component (no longer an SDK) only covers Lightstreamer-Server-side support (based on the Proxy Adapters) for all Remote Adapter SDKs. See the new "SDK for Generic Adapters" for the ARI Protocol topic.

As a consequence of the introduction, in Lightstreamer Server version 6.0, of separate ClassLoaders for the loading of the external libraries used by the Server internally, specifed the suggested settings in the factory Proxy Adapter configuration (through the new <classloader> setting), to enforce sharing of the slf4j/logback logging libraries with the Server. This confirms the previous behavior, hence the log configuration of the Proxy Adapters is still included in the Server log configuration file.

Revised the factory configuration of the optional thread pools in adapters.xml; with the new suggested configuration, some adapter-related pools are enabled and will take on some tasks previously falling in the "SERVER" pool.

Revised the default naming of connections (for logging purposes) and related threads, by leaning on the configured proxy names instead of progressive numbers.
Introduced name suffixes to distinguish subsequent streams that may be created by the Robust Proxy Metadata Adapter.

Moved the configuration examples (which include parameter descriptions) under "doc".
Provided a new introductory document.

1.4.3 build 58
Compatible with Lightstreamer Server since 5.1.
Compatible with Remote Servers for the previous version.
Released on 20 Dec 2012

Revised and relieved the Notes on Method Sequence for the Notify New Tables and Notify Tables Close methods, according with the locking policy change and the new <sequentialize_table_notifications> parameter introduced in SDK for Java In-Process Adapters version 5.1.

1.4.2 build 57
Compatible with Lightstreamer Server since 5.0.
Compatible with Remote Servers for the previous version.
Released on 3 Aug 2012

Discontinued the compatibility with the previous version of Lightstreamer Server.

1.4.2 build 52
Compatible with Lightstreamer Server since 4.0.
Compatible with Remote Servers for the previous version.
Released on 9 Aug 2012

Revised the low level log of the Proxy Adapters, to allow for suppressing the log of real-time messages while logging the requests and replies from the Remote Server; see com.lightstreamer.adapters.remote in the Lightstreamer Server log configuration file.
Fixed a typo in the com.lightstreamer.adapters.remote logger description.

1.4.2 build 51
Compatible with Lightstreamer Server since 4.0.
Compatible with Remote Servers for the previous version.
Released on 6 Apr 2012

Introduced new configuration properties to let the RobustNetworkedMetadataProvider return a custom error notification to the Client upon a request for a new session when the Remote Server is currently unavailable; see "notify_user_disconnection_code" and "notify_user_disconnection_msg" in "conf\sockets(robust)\adapters.xml".

Introduced new configuration properties to let the RobustNetworkedDataProvider manage a custom item which carries notifications about the availability of the Remote Server; see "remote_adapter_status" in "conf\sockets(robust)\adapters.xml".

Added checks on the correct configuration of the Proxy Adapters; in fact, wrongly setting a notify port on a Proxy Metadata Adapter could lead to wrong behavior.

Improved the extraction of HTTP headers supplied by the "NUS"/"NUA" request.

Added log to detect issues caused by obsolete Remote Servers

1.4.1 build 48
Compatible with Lightstreamer Server since 4.0.
Released on 7 Jun 2011

Introduction of Lightstreamer "Duomo" release (Server 4.0).