Skip to content

Releases: bigcommerce/gruf

2.8.0

08 Feb 20:02
Compare
Choose a tag to compare
  • Pass the controller request object into the request logging formatters [#92]

2.7.1

16 Dec 19:09
Compare
Choose a tag to compare
  • Adds channel_credentials option to Gruf::Client and default_channel_credentials option to Gruf::Configuration [#85] [#87]

2.7.0

15 May 18:27
Compare
Choose a tag to compare
  • Add hook support for executing code paths before a server is started, and after a server stops

2.6.1

01 May 17:43
Compare
Choose a tag to compare
  • Add frozen_string_literal: true to files, update rubocop to 0.68

2.6.0

05 Apr 14:52
Compare
Choose a tag to compare
  • 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

18 Feb 20:42
Compare
Choose a tag to compare
  • Log ok/validation responses at DEBUG levels to prevent log stampeding in high-volume environments

2.5.1

08 Nov 20:25
Compare
Choose a tag to compare
  • 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

14 Sep 18:22
Compare
Choose a tag to compare
  • 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 the options[:unsynchronized_methods] param with a list of method names (as symbols).

2.4.2

07 Sep 14:34
Compare
Choose a tag to compare
  • 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

07 Aug 19:29
Compare
Choose a tag to compare
  • 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 and UNIMPLEMENTED. By setting event_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.