evt-retry 0.1.2.0 → 0.1.2.1

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: ead5a0d5b48258bfa2e98064a2c647fa6acf795149b68ec7ea73d94756b5b97f
4
- data.tar.gz: 1d9aae6ee82c7dd3d38f3f102abc9a595e8eddd25fd0ff99a67d13b9b1610fee
3
+ metadata.gz: d0858ebb71e9f1bf0136bee2cd4a95e9bce3d2896afe53093fd6954323c60e2b
4
+ data.tar.gz: 7050a039f26137b3b54be6c854ee4f44b832d2e0698002dfa6d3d8b4b4ef67fc
5
5
  SHA512:
6
- metadata.gz: 4c2af64e361bd3c9d50cedda46d6cdd598c28340c1aa1ab5b6141faf2db2070d48544f883d1a3133dc60b7494b3003cc9b7497595ef62a9746980a1a1f8a3fce
7
- data.tar.gz: 532d792246a1b2980e57f2dafc07ea42db7f0c5cf63e752f25beb565211398b6a656b5cb20e93c4da90a3b45833aaa9a244977df7c2378d078fbf3f4892a8210
6
+ metadata.gz: 3c7fe677fee3673097930922eb50176d30e0cb94850213beb69c788b8a1a837071166c104e839ad6b732c03b4cc2d80b98ee1df4b0164997d1b4aa0cc5223423
7
+ data.tar.gz: 7fe3bd1a7868b0221ebc9ea18a516748fb1701840beea24c63d40429f8bf8130d92a07fe3af95733941714b839dfa0d7684954872d07e98984a3cc7cd231035b
@@ -2,7 +2,9 @@ require 'try'
2
2
  require 'initializer'; Initializer.activate
3
3
  require 'dependency'; Dependency.activate
4
4
  require 'telemetry'
5
+ require 'log'
5
6
 
7
+ require 'retry/log'
6
8
  require 'retry/substitute'
7
9
  require 'retry/telemetry'
8
10
  require 'retry/retry'
@@ -0,0 +1,9 @@
1
+ class Retry
2
+ class Log < ::Log
3
+ def tag!(tags)
4
+ tags << :retry
5
+ tags << :library
6
+ tags << :verbose
7
+ end
8
+ end
9
+ end
@@ -1,4 +1,5 @@
1
1
  class Retry
2
+ include Log::Dependency
2
3
  include ::Telemetry::Dependency
3
4
  extend Retry::Telemetry::Register
4
5
 
@@ -12,7 +13,7 @@ class Retry
12
13
  attr_writer :action_executed
13
14
 
14
15
  def self.build
15
- new
16
+ instance = new
16
17
  end
17
18
 
18
19
  def self.configure(receiver, attr_name: nil)
@@ -31,37 +32,51 @@ class Retry
31
32
  errors = errors.flatten
32
33
  millisecond_intervals ||= [0]
33
34
 
35
+ logger.trace { "Starting retry (Errors: #{errors.join(', ')}, Millisecond Intervals: #{millisecond_intervals.join(', ')})" }
36
+
34
37
  intervals = millisecond_intervals.to_enum
35
38
 
36
- retries = 0
39
+ cycle = 0
37
40
 
38
41
  error = nil
39
42
  probe = proc { |e| error = e }
40
43
 
41
44
  loop do
42
45
  success = Try.(errors, error_probe: probe) do
43
- action.call(retries)
46
+ logger.debug { "Attempting (Cycle: #{cycle})" }
47
+ action.call(cycle)
44
48
  end
45
49
 
46
- action_executed&.call(retries)
47
-
48
- break if success
50
+ action_executed&.call(cycle)
49
51
 
50
- retries += 1
52
+ if success
53
+ logger.debug { "Attempt succeed (Cycle: #{cycle})" }
54
+ break
55
+ end
51
56
 
52
57
  interval = intervals.next
53
58
 
54
- telemetry.record :retried, Retry::Telemetry::Data.new(retries, error.class, interval)
59
+ logger.debug { "Attempt failed (Cycle: #{cycle}, Error: #{error.class.name})" }
60
+ telemetry.record :retried, Retry::Telemetry::Data.new(cycle, error.class, interval)
55
61
 
56
- break if interval.nil?
62
+ if interval.nil?
63
+ logger.debug { "No more attempts. Intervals depleted." }
64
+ break
65
+ end
57
66
 
67
+ logger.debug { "Will retry. Sleeping #{interval} milliseconds before next attempt." }
58
68
  sleep (interval/1000.0)
69
+
70
+ cycle += 1
59
71
  end
60
72
 
61
73
  unless error.nil?
74
+ logger.debug { "All attempts failed. Will not retry. (Cycle: #{cycle}, Error: #{error.class.name})" }
62
75
  raise error
63
76
  end
64
77
 
65
- retries
78
+ logger.info { "Attempt succeeded (Cycle: #{cycle})" }
79
+
80
+ cycle
66
81
  end
67
82
  end
@@ -6,7 +6,7 @@ class Retry
6
6
  record :retried
7
7
  end
8
8
 
9
- Data = Struct.new :retry, :error, :millisecond_interval
9
+ Data = Struct.new :cycle, :error, :millisecond_interval
10
10
 
11
11
  def self.sink
12
12
  Sink.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-retry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2.0
4
+ version: 0.1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-13 00:00:00.000000000 Z
11
+ date: 2018-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-try
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: evt-log
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: test_bench
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -92,6 +106,7 @@ files:
92
106
  - lib/retry/controls/error.rb
93
107
  - lib/retry/controls/receiver.rb
94
108
  - lib/retry/controls/time.rb
109
+ - lib/retry/log.rb
95
110
  - lib/retry/retry.rb
96
111
  - lib/retry/substitute.rb
97
112
  - lib/retry/telemetry.rb