Release Notes

Thriftly v3.0.9651.0

Thriftly v3.0.9651.0 was released on 2023-03-09. This is the initial release of Thriftly 3.0

New Features

Thriftly 3.0 includes many new features over the 2.x series including: 64-bit support, HTTP/2 support, TLS support, improved metrics, better process management and many bug fixes:

  • 64-bit Support: Support for native 64-bit process pools is included across all supported programming languages: Dataflex, .NET, Delphi, and Java. Additionally the Dispatcher and Configurator are now 64-bit processes. These can interface with both 32-bit and 64-bit process pools. Combining 32-bit and 64-bit process pools is beneficial when upgrading applications from 32-bit to 64-bit, where some services need to remain 32-bit while others are upgraded to 64-bit.

  • HTTP/2 Support: Before this release, Thriftly used HTTP/1.1 for all HTTP-based communication. With the support of HTTP/2, one of the most significant improvements Thriftly developers will see relates to header compression. As JSON Web Tokens grow ever larger, compressing these headers can save valuable transmission time and benefits mobile apps calling a Thriftly API. Additionally, Thriftly supports multiplexing, delivering multiple data streams simultaneously to the client. Developers can turn on HTTP/2 support in the configurator. Read more in the Using HTTP/2 in Thriftly topic.

  • TLS Support: Better known as HTTPS, adding TLS termination into Thriftly allows it to be used without needing a proxy or load balancer to provide TLS termination. This is important when Thriftly is used internally to provide services for intranet applications. Additionally, we’re ONLY supporting TLS > v1.1. There is no SSL support (considered insecure at this point) and no TLS v1.0 support (also considered insecure). If you need to support SSL v3 or TLS v1.0, you’ll need to continue using a TLS termination layer such as a load balancer or reverse proxy server. Read more in the Using HTTPS with Thriftly topic.

  • Improved Metrics: Thriftly uses Prometheus to collect metrics. We upgraded to a newer version of Prometheus and have added new metrics that use histograms and quantiles to understand better how your API is doing, especially under load. You’ll now be able to answer questions like: “Which call would most benefit from optimization that will make a noticeable impact on my site’s responsiveness”? To learn more about the metrics included in Thriftly, see the Thriftly Metrics topic.

  • Better Process Management: We have made several improvements to process management to make it easier for developers. We now support staggered application startup, improved zombie application detection, and the ability to reconnect to processes that become unresponsive for a time (but not long enough to trigger a process termination).

Bug Fixes

  • THR-184 Externally signed JWSs were sometimes failing to be verified.

  • THR-138 Fixed an issue registering the MMC plugin with Windows.

  • THR-133 Requests with header sections between 1024-1280 bytes were causing memory corruption.

  • THR-136 Removed ability to select server type and SessionTimeout. This confused users and Nonblocking is the only server we fully support now. SessionTimeout was supplanted by more granular settings.

  • THR-132 Various improvements and bug fixes to the Powershell interface.

  • THR-110 Fixed Internal Server Error with Delphi connector.

  • THR-108 Fixed “Thriftly.Interface exception” causing the dispatch process to stop. The issue was related to the KillTimeout setting.

  • PROD-1154 Thriftly developer processes sometimes end unexpectedly when the Thriftly event handler includes an async call or gets certain errors.

Thriftly v2.3

Thriftly v2.3 was released in October of 2019.

New Features

  • Enhanced JWT and JWS Support

    • Your application’s JWT and JWS (the encoded, signed JWT) can now be directly retrieved from your API service. Previously, you would have needed to manually store the JWT for later access, so now you can save a step and thus have less code to manage. Also there was no prior way of simply retrieving the JWS (which is how your JWT appears in your headers - encoded and signed) from within the service. Now with the JWS easily accessible you have more options for managing your authentication process to provide more robust security.

    • The sample projects that come with the Thriftly Developer installation have been updated with JWT and JWS usage examples to help get you started on securing your APIs.

  • Improved Error Handling

    • The custom error system setting allows you to set a more detailed error structure with custom fields such as message, error number, description, and so on. This structure is assigned to a service, so the error structures can even be customized for different services within your Thriftly application.

    • Previously this feature was only supported for Dataflex, but now has been added for C# and Java.

    • The expanded support will allow for a more powerful, customized error handling experience with your Thriftly applications.

Bug Fixes

  • Licensing Issues Fixes: There were issues with licenses sometimes falsely becoming invalid on the Thriftly desktop applications due to machine identifiers changing. This invalid license error required reactivating the license which would then erroneously subtract from the available activations. These licensing issues have been resolved by implementing automatic handling of such machine changes to prevent false invalid license errors and unnecessary reactivations.

  • Shared Struct Issues Fixes: Delphi and Java applications were throwing a duplicated structure name error when the same struct was being shared between different service. This issue has been resolved so that structs can be used by multiple services without that error.

  • Startup Error Catching Fix: Previously regular Dataflex errors were not able to be caught properly in Dataflex applications using Thriftly. The Dataflex Thriftly package has been fixed to use the standard Dataflex error handler for startup errors that occur before Thriftly starts successfully.

  • Datetime Conversion Fix: Datetime fields in Java APIs were being converted inaccurately by an hour. This issue has been fixed in this release.

Thriftly v2.2

New Features

  • New Trial Licensing Makes Getting Started Easier: We’ve updated both the Thriftly Developer and Thriftly Deployment downloads to make getting started with Thriftly even easier:

    • Thriftly Developer continues to be free-forever, but you no longer have to re-register your installation every six months. The Thriftly Deployment trial is now also free-forever, but we’ve limited the number of application pools and processes you can deploy using a trial license. Additionally, trial licenses now contain a data transfer limit, as described near the end of the Installing and Licensing Thriftly Deployment topic.

    • We expect this new model will allow independent developers, whose APIs often require only one endpoint and minimal data transfers, to continue using our free trial longer than 30 days. It will also resolve licensing and endpoint consolidation issues larger customers have had when reconciling their trial deployment with their subscriptions.

    • If you’re using a previous trial version, you’ll be prompted to reconcile your deployment with these new restrictions after you update and launch Thriftly Deployment.

  • Serve Your API Using gRPC: We’ve added the gRPC protocol buffer, Google’s high-performance RPC framework, to the list of transports and protocols we support. You can deploy your API as a gRPC service by selecting gRPC as your API’s transport and protocol (as detailed in step 4 of the Adding Endpoints topic) and then following the instructions in the Deploying Your API as a gRPC Service section. Note that, currently, Thriftly-based gRPC services include the following limitations:

    • You can not deploy Thriftly-based gRPC services using the Thriftly Gateway; you must deploy and access them from your local machine using localhost ports.

    • You can not use request headers to transform your API into a gRPC service after deployment. If you intend to use your API as a gRPC service, you must specify your API is a gRPC service as you deploy it from Thriftly.

    • Thriftly gRPC services support only the simple RPC method, not response-streaming, request-streaming, or bidirectionally-streaming RPC.

    • Thriftly implements gRPC over HTTP2. Thriftly gRPC services are not compatible with HTTP1 implementations.

  • Monitor Your API’s Performance Using Prometheus: To give you a free, open-source option for monitoring your Thriftly API’s performance, we’ve integrated Thriftly with Prometheus, an application that gathers and graphs a variety of key API performance metrics.

    Additionally, you can use Prometheus’s own integration with Grafana to create and share stylized dashboards detailing your API’s performance. You can also create automatic email alerts to inform you when your API hits a certain performance threshold.

    To connect your API with Prometheus, refer to the Analyzing Metrics and Creating Alerts Using Prometheus and Grafana section.