1. Supported platforms

The following Linux distributions are well-tested:

  • Debian 7 (Wheezy), 8 (Jessie), and 9 (Stretch)

  • Ubuntu 14.04 (Trusty Tahr) and 16.04 LTS (Xenial Xerus)

2. OpenSRF 3.0.3

OpenSRF 3.0.3 was released on 7 June 2019. This is a bugfix release that improves performance. All users of OpenSRF 3.0.x are advised to upgrade as soon as possible.

The following bugs are fixed:

  • LP#1824181 and LP#1824184: Improve the performance of certain logging statements. OpenSRF application code written in Perl can now pass a subroutine reference to a logging statement instead of a string. This allows complicated expressions to generate text for a log message to not be run unless actually needed for the current logging level. For example, a logging statement of $logger->debug('message') can now be alternatively be represented as $logger->debug(sub { return 'message' }). OpenSRF now uses this mechanism for a debug logging statement in method_lookup(). This has the effect of reducing the time to run some methods in Evergreen’s open-ils.storage service by 90%.

2.1. Acknowledgments

We would like to thank the following people who contributed to OpenSRF 3.0.3:

  • Galen Charlton

  • John Merriam

3. OpenSRF 3.0.2

OpenSRF 3.0.2 was released on 6 November 2018 and fixes several bugs. All users of OpenSRF 3.0.x are advised to upgrade as soon as possible.

The following bugs are fixed:

  • LP#1684970: When running behind a proxy such as NGINX, the HTTP translator was not getting the IP address of the user agent. As a consequence, it was possible that two different HTTP translator clients could end up talking to the same OpenSRF worker process. This issue is resolved by using the remoteip Apache module to extract the user agent’s IP address from the X-Real-IP HTTP header.

  • LP#1702978: OpenSRF could fail to retrieve memcached values whose keys contain the % character. This resulted in breaking authentication in Evergreen when the username or barcode contained a %.

  • LP#1711145: The sample NGINX configuration file shipped with OpenSRF had weak SSL settings. As of this release, it now

    • Enables http2

    • Adds a commented section on enabling SSL everywhere.

    • Apply a 5-minute proxy read timeout to avoid too-short timeouts on long API calls.

    • Adds a commented section on sending NGINX logs to syslog.

    • Includes INSTALL notes on generating the dhparam file.

  • LP#1776510: The JavaScript client code was not detecting when the WebSockets gateway threw a transport error, e.g. when a request was made of a nonexistent service. This situation can now be caught by error-handling callbacks.

3.1. Upgrade Notes

Users of NGINX should adjust their configuration to match the revisions in examples/nginx/osrf-ws-http-proxy.

Users of Apache 2.4 and a proxy such as NGINX should enable the remoteip Apache module and apply the following configuration change to the Apache configuration:

    RemoteIPInternalProxy 127.0.0.1/24 # adjust for actual internal
                                       # address of proxy
    RemoteIPInternalProxy ::1
    RemoteIPHeader X-Real-IP

3.2. Acknowledgments

We would like to thank the following people who contributed to coding and testing for OpenSRF 3.0.2:

  • Galen Charlton

  • Bill Erickson

  • Mike Rylander

  • Jason Stephenson

  • Cesar Velez

4. OpenSRF 3.0.1

OpenSRF 3.0.1 was released on 25 May 2018 and fixes a number of bugs. All users of OpenSRF 3.0.0 are advised to upgrade as soon as possible.

The following bugs are fixed:

  • LP#1744158: If the WebSockets translator lost its XMPP connection, it could continue to accept requests but would never respond to them. Now, when a WS translator backend gets disconnected from XMPP, it will close the client connection and terminate.

  • LP#1746577: Under other conditions, a WebSockets translator backend that had lost its XMPP connection could busy-loop, uselessly consuming CPU. This no longer happens.

  • LP#1762815: This release Fixes an issue in the Perl client time zone handling that resulted in the server defaulting to UTC time instead of the server time zone when no time zone value was received from the client.

  • LP#1340892: opensrf.settings now properly ignores XML comments in opensrf.xml, thereby resolving an Evergreen bug where XML comments in the <marctemplates> section could break the ability to load MARC templates.

  • LP#1243841: A number of compilation warnings showing up on newer releases of Debian and Ubuntu are now resolved.

4.1. Acknowledgements

We would like to thank the following people who contributed to coding and testing for OpenSRF 3.0.1:

  • Galen Charlton

  • Bill Erickson

  • Chris Sharp

  • Jason Stephenson

5. OpenSRF 3.0.0

OpenSRF 3.0.0 was released on 2 October 2017. It adds support for Debian 9 (Stretch).

5.1. Upgrade Notes

OpenSRF 3.0 also changes how the shared libraries for services written in C are named. If upgrading from an earlier version of OpenSRF, opensrf.xml should be edited so that shared library file names listed in the <implementation> tag start with "lib". For example,

            <osrf.math>
                <language>C</language>
                <implementation>osrf_math.so</implementation>

should be changed to:

            <osrf.math>
                <language>C</language>
                <implementation>libosrf_math.so</implementation>

5.2. Note for Evergreen Users

OpenSRF 3.0.0 is the minimum version required to run Evergreen 3.0.

5.3. Acknowledgements

We would like to thank the following people who contributed to OpenSRF 3.0.0:

  • Galen Charlton

  • Ben Shum

  • Jason Stephenson