event_store_client 1.1.5 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2624a6c8e08a686f5e307eccfb00ac9321eb5e2e32aed9093c0c67e8cb01b9e5
4
- data.tar.gz: 0b4ff333a547924f54aa182e0bb1f821a7382db93c5d9304038c43a514ee6d3b
3
+ metadata.gz: a39c7584996d6a235613a9b856b241faf1492afb4eb116b261d0cc861cf10084
4
+ data.tar.gz: 26552377ed9e80019f7c3fd54992074beada6b20be6e399cad78f9a900c7d021
5
5
  SHA512:
6
- metadata.gz: dfda05e2c763e85977c63a3b0e27034050b37c7ded273750b1aadec42e55fc459475c4a8d50167fe66952bb39c7145242ed017b5548abbece412beaa4e98d37a
7
- data.tar.gz: ca27251198df7d78a9b60482ee8dfef7f8b6cfdbda08d3a36f0af1723ee487b85239d0d046a6d777e5c6e5161725faaa4b4fac6aa3b650460eb622a428dc0960
6
+ metadata.gz: 937fc10a837a02049b407a2de39e98e805e7513e75aaf40fadb00c865e3dcd054e74e64abdd1574f77a8c0c9a6f6edfc7e8caead7c10444c8b010e16364e221c
7
+ data.tar.gz: 5e74d87c07895abe594c2c434079b35db3fddeb7968525c128480bcca1dd7f7d8112d4fb9869b425dd907e1888f3d23af7dfd2675fd1d71d454a9ca23355253d
@@ -9,6 +9,8 @@ module EventStoreClient
9
9
  class Command
10
10
  include Configuration
11
11
 
12
+ class GRPCUnavailableRetryFailed < StandardError; end
13
+
12
14
  def self.inherited(klass)
13
15
  super
14
16
  klass.class_eval do
@@ -44,10 +44,7 @@ module EventStoreClient
44
44
  end
45
45
 
46
46
  skip_decryption = options[:skip_decryption] || false
47
- events = service.read(request.new(options: opts), metadata: metadata).map do |res|
48
- raise StreamNotFound if res.stream_not_found
49
- deserialize_event(res.event.event, skip_decryption: skip_decryption)
50
- end
47
+ events = read_stream(opts, skip_decryption)
51
48
  Success(events)
52
49
  rescue StreamNotFound
53
50
  Failure(:not_found)
@@ -55,6 +52,18 @@ module EventStoreClient
55
52
 
56
53
  private
57
54
 
55
+ def read_stream(options, skip_decryption)
56
+ retries ||= 0
57
+ service.read(request.new(options: options), metadata: metadata).map do |res|
58
+ raise StreamNotFound if res.stream_not_found
59
+ deserialize_event(res.event.event, skip_decryption: skip_decryption)
60
+ end
61
+ rescue GRPC::Unavailable
62
+ sleep config.grpc_unavailable_retry_sleep
63
+ retry if (retries += 1) <= config.grpc_unavailable_retry_count
64
+ raise GRPCUnavailableRetryFailed
65
+ end
66
+
58
67
  def deserialize_event(entry, skip_decryption: false)
59
68
  data = (entry.data.nil? || entry.data.empty?) ? '{}' : entry.data
60
69
 
@@ -9,6 +9,8 @@ module EventStoreClient
9
9
  class Connection
10
10
  include Configuration
11
11
 
12
+ class SocketErrorRetryFailed < StandardError; end
13
+
12
14
  # Initializes the proper stub with the necessary credentials
13
15
  # to create working gRPC connection - Refer to generated grpc files
14
16
  # @return [Stub] Instance of a given `Stub` klass
@@ -29,6 +31,7 @@ module EventStoreClient
29
31
  attr_reader :cert
30
32
 
31
33
  def initialize
34
+ retries ||= 0
32
35
  @cert =
33
36
  Net::HTTP.start(
34
37
  config.eventstore_url.host, config.eventstore_url.port,
@@ -36,6 +39,10 @@ module EventStoreClient
36
39
  verify_mode: verify_ssl,
37
40
  &:peer_cert
38
41
  )
42
+ rescue SocketError
43
+ sleep config.socket_error_retry_sleep
44
+ retry if (retries += 1) <= config.socket_error_retry_count
45
+ raise SocketErrorRetryFailed
39
46
  end
40
47
 
41
48
  def channel_credentials
@@ -32,6 +32,12 @@ module EventStoreClient
32
32
 
33
33
  setting :logger
34
34
 
35
+ setting :socket_error_retry_sleep, 0.5
36
+ setting :socket_error_retry_count, 3
37
+
38
+ setting :grpc_unavailable_retry_sleep, 0.5
39
+ setting :grpc_unavailable_retry_count, 3
40
+
35
41
  def self.configure
36
42
  yield(config) if block_given?
37
43
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EventStoreClient
4
- VERSION = '1.1.5'
4
+ VERSION = '1.1.6'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: event_store_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Wilgosz
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-15 00:00:00.000000000 Z
11
+ date: 2021-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-configurable
@@ -247,7 +247,7 @@ licenses:
247
247
  - MIT
248
248
  metadata:
249
249
  allowed_push_host: https://rubygems.org
250
- post_install_message:
250
+ post_install_message:
251
251
  rdoc_options: []
252
252
  require_paths:
253
253
  - lib
@@ -262,8 +262,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
262
262
  - !ruby/object:Gem::Version
263
263
  version: '0'
264
264
  requirements: []
265
- rubygems_version: 3.1.4
266
- signing_key:
265
+ rubygems_version: 3.1.0.pre1
266
+ signing_key:
267
267
  specification_version: 4
268
268
  summary: Ruby integration for https://eventstore.org
269
269
  test_files: []