Releases: bigcommerce/gruf
Releases · bigcommerce/gruf
2.8.0
2.7.1
2.7.0
- Add hook support for executing code paths before a server is started, and after a server stops
2.6.1
- Add frozen_string_literal: true to files, update rubocop to 0.68
2.6.0
- Drop Ruby 2.2 support, Ruby 2.4+ only going forward
- Abstract gruf controller's send to make it usable in filters
- Adjusts configuration reset into a Railtie for Rails systems to ensure proper OOE
- Bump rubocop to 0.64, address violations, update activesupport/concurrent-ruby dependencies to have a min version
2.5.2
- Log ok/validation responses at DEBUG levels to prevent log stampeding in high-volume environments
2.5.1
- Ensure timeout is an int when passed as a client option to a gRPC client
- Add bound_service reader to Gruf::Controllers::Base for finding the service bound to the given controller
2.5.0
- Client exceptions raised now contain mapped subclasses, such as
Gruf::Client::Errors::InvalidArgument
- Client exceptions will also now catch StandardError and GRPC::Core errors, and handle them as Internal errors
- Added SynchronizedClient which prevents multiple calls to the same endpoint with the same params at
a given time. This is useful for mitigating thundering herds. To skip this behavior for certain endpoints,
pass theoptions[:unsynchronized_methods]
param with a list of method names (as symbols).
2.4.2
- Added error handling for GRPC::Core::CallError, a low-level error in the grpc library that does not inherit from StandardError. [#59]
- Removed Thread.abort_on_exception = true. Exceptions should be handled by gruf or the application, and should not cause the server process to crash. [#59]
- Added guard for size of trailing metadata attached to grpc call. The default max for http2 trailing metadata in the gRPC C library is 8kb. If we go over that limit (either through custom metadata attached to the error by the application, or via the error payload encoded by the error serializer), the gRPC library will throw RESOURCE_EXHAUSTED. Gruf now detects this case, and attempts to prevent it by logging the original error and substituting it with an internal error indicating that the metadata was too large. [#60]
- Truncate stack trace in error payload to help avoid overflowing the trailing metadata. Added backtrace_limit configuration parameter, which defaults to 10.[#60]
2.4.1
- Safer configuration of GRPC::RpcServer. From now on, use
Gruf.rpc_server_options
for the params
to be sent to GPRC::RpcServer. Also provide sane defaults for params for GRPC::RpcServer. [#55] - Added ability to monitor
RESOURCE_EXHAUSTED
andUNIMPLEMENTED
. By settingevent_listener_proc
in the Gruf configuration, you will receive a callback when these events occur. The parameter to your callback will be a symbol (:thread_pool_exhausted
or:unimplemented
). Others may be added in the future.