redis-stream 0.4.1 → 0.4.2

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: ddb0974393a49118bf47eb414666042ced6d2af3ada9599587cf8523380942c7
4
- data.tar.gz: '054409416ce1c03c12b6dbbe6a1cdf26bc7e187437c27f868cb429ffe0de77be'
3
+ metadata.gz: 198b2311a7fcf1023c8c51bb8ea96a6b6626a516539ba459005038703fbc430a
4
+ data.tar.gz: 89c7601f9fcc02ebd0b195f8728231fba42a5a2f5f4ce60b749107f8a9c21c9e
5
5
  SHA512:
6
- metadata.gz: 4a8d03a8827926994f5d62850355052088d25933ac99b9d0198d00f73f4b04a1a25795dbb7ea5f9ff96997ae6d99fdba9f90ef43c5c295c5a8faf4389f0c7dcd
7
- data.tar.gz: dafeaa60370f1bd9b0616f154769d03caf5d6e3a6c450626d6e53926250ea7fe4f19574e2afa1707856d6ac63b4262efbb1786da9b4e4870b8b629780c06c145
6
+ metadata.gz: 0bc5a91481625900e58ff00614776c2eef887cec65e6b0aad5e1b05d74442309f6d37a2e605a5b45542dbd1179870552b6ac4076dc675136b01f0b26c8c9b900
7
+ data.tar.gz: ab7ddb55e73a6f917ddd108499faff5c2ec69c96e7a861c63cafb32f9fc2040e66dd221babfd5d28098cba4c2abb2ef29752ab9e6eeb45d7f22bfc1acba9b79d
data/.travis.yml CHANGED
@@ -5,6 +5,5 @@ cache: bundler
5
5
  rvm:
6
6
  - 2.5
7
7
  - jruby
8
- services:
9
- - redis
10
8
  before_install: gem install bundler -v 2.0.1
9
+ before_script: sudo redis-server /etc/redis/redis.conf --port 7000
data/Gemfile.lock CHANGED
@@ -1,31 +1,25 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- redis-stream (0.4.0)
4
+ redis-stream (0.4.1)
5
5
  moneta (~> 1.2)
6
6
  multi_json (~> 1.14)
7
7
  redis (= 4.1.3)
8
- zipkin-tracer (~> 0.43)
8
+ zipkin (~> 1.6.1)
9
9
 
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- concurrent-ruby (1.1.5)
14
- faraday (0.17.3)
15
- multipart-post (>= 1.2, < 3)
13
+ json (2.3.0)
16
14
  minitest (5.13.0)
17
15
  moneta (1.2.1)
18
16
  multi_json (1.14.1)
19
- multipart-post (2.1.1)
20
- rack (2.1.2)
17
+ opentracing (0.5.0)
21
18
  rake (10.5.0)
22
19
  redis (4.1.3)
23
- sucker_punch (2.1.2)
24
- concurrent-ruby (~> 1.0)
25
- zipkin-tracer (0.43.0)
26
- faraday (~> 0.13)
27
- rack (>= 1.0)
28
- sucker_punch (~> 2.0)
20
+ zipkin (1.6.1)
21
+ json
22
+ opentracing (~> 0.3)
29
23
 
30
24
  PLATFORMS
31
25
  java
data/config.yml CHANGED
@@ -1,3 +1,4 @@
1
1
  data_cache: "/Users/mehmetc/Tmp/resolver/data_cache"
2
+ zipkin: "http://127.0.0.1:9411"
2
3
  redis:
3
- url: "redis://127.0.0.1:7000/0"
4
+ url: "redis://127.0.0.1:7000/0"
@@ -6,7 +6,7 @@ require "thread"
6
6
  require "redis/stream/inspect"
7
7
  require "redis/stream/config"
8
8
  require "redis/stream/data_cache"
9
- require "redis/stream/tracer/zipkin_tracer"
9
+ require "zipkin/tracer"
10
10
 
11
11
  class Redis
12
12
  module Stream
@@ -29,7 +29,8 @@ class Redis
29
29
  "db" => 0,
30
30
  "config_file_path" => '.',
31
31
  "logger" => Logger.new(STDOUT),
32
- "zipkin_config" => {}}
32
+ "tracer" => nil
33
+ }
33
34
  options = default_options.merge(options)
34
35
 
35
36
  Redis::Stream::Config.path = options['config_file_path']
@@ -39,7 +40,6 @@ class Redis
39
40
  db = options["db"]
40
41
  @logger = options["logger"]
41
42
  @cache = options.include?('caching') && options['caching'] ? Redis::Stream::DataCache.new : nil
42
- @tracer = ZipkinTracer::RedisStreamHandler.new(self, options["zipkin_config"])
43
43
  @name = name
44
44
  @state = Redis::Stream::State::IDLE
45
45
  @stream = stream_name
@@ -60,6 +60,12 @@ class Redis
60
60
 
61
61
  raise "No redis" if @redis.nil?
62
62
 
63
+ if options.has_key?('tracer') && !options['tracer'].nil?
64
+ OpenTracing.global_tracer = options["tracer"]
65
+ elsif Redis::Stream::Config.include?(:zipkin)
66
+ OpenTracing.global_tracer = Zipkin::Tracer.build(url: Redis::Stream::Config[:zipkin], service_name: "#{@name}-#{@group}", flush_interval: 1)
67
+ end
68
+
63
69
  @state = Redis::Stream::State::RUNNING if options.include?("sync_start") && options["sync_start"]
64
70
  setup_stream
65
71
 
@@ -67,15 +73,6 @@ class Redis
67
73
  @logger.info "#{@consumer_id} - Last ID = #{@last_id}"
68
74
  end
69
75
 
70
- def trace(topic, span = nil, &block)
71
- @tracer.trace(topic, span, &block)
72
- end
73
-
74
- def trace_error(msg, span, &block)
75
- @tracer.trace_error(msg, span, &block)
76
- end
77
-
78
-
79
76
  # add: add a message to the stream
80
77
  # @param [Object] data Any data you want to transmit
81
78
  # @param [Hash{String->String}] Options
@@ -84,7 +81,7 @@ class Redis
84
81
  def add(data = {}, options = {})
85
82
  raise "Client isn't running" unless @state.eql?(Redis::Stream::State::RUNNING)
86
83
 
87
- default_options = {"to" => "*", "group" => "*", "type" => Redis::Stream::Type::ACTION, "cache_key" => nil}
84
+ default_options = {"to" => "*", "group" => "*", "type" => Redis::Stream::Type::ACTION, "cache_key" => nil, "tracer" => nil}
88
85
  options = default_options.merge(options)
89
86
 
90
87
  type = options["type"]
@@ -104,7 +101,7 @@ class Redis
104
101
  def sync_add(data = {}, options = {})
105
102
  raise "Client isn't running" unless @state.eql?(Redis::Stream::State::RUNNING)
106
103
 
107
- default_options = {"to" => "*", "group" => "*", "type" => Redis::Stream::Type::ACTION, "time_out" => 5, "passthrough" => false, "cache_key" => nil}
104
+ default_options = {"to" => "*", "group" => "*", "type" => Redis::Stream::Type::ACTION, "time_out" => 5, "passthrough" => false, "cache_key" => nil, "tracer" => nil}
108
105
  options = default_options.merge(options)
109
106
 
110
107
  to = options["to"]
@@ -114,7 +111,7 @@ class Redis
114
111
 
115
112
  #@state = Redis::Stream::State::RUNNING
116
113
  data_out = nil
117
- add_id = add(data, "to" => to, "group" => group, "type" => options["type"], "cache_key" => options["cache_key"])
114
+ add_id = add(data, "to" => to, "group" => group, "type" => options["type"], "cache_key" => options["cache_key"], "tracer" => options['tracer'])
118
115
 
119
116
  time = Time.now
120
117
 
@@ -188,14 +185,39 @@ class Redis
188
185
  end
189
186
  end
190
187
 
188
+ def trace(operation_name, parent_scope = nil)
189
+ # span = OpenTracing.start_span(operation_name)
190
+ # yield span if block_given?
191
+ # span.finish
192
+
193
+ # active_scope = OpenTracing.scope_manager.active
194
+ if parent_scope.is_a?(Zipkin::Scope)
195
+ OpenTracing.start_active_span(operation_name, child_of: parent_scope.span) do |scope|
196
+ yield scope if block_given?
197
+ end
198
+ else
199
+ OpenTracing.start_active_span(operation_name) do |scope|
200
+ yield scope if block_given?
201
+ end
202
+ end
203
+ end
191
204
 
205
+ def trace_error(operation_name, span = nil)
206
+ trace(operation_name, span)
207
+ end
192
208
  private
193
209
 
194
210
  def build_payload(data, options)
195
211
  to = options['to']
196
212
  group = options['group']
197
213
  type = options['type']
198
-
214
+ tracer_data = {}
215
+ if options['tracer'].nil?
216
+ tracer_data = nil
217
+ else
218
+ tracer_span = options['tracer']
219
+ OpenTracing.inject(tracer_span.context, OpenTracing::FORMAT_TEXT_MAP, tracer_data)
220
+ end
199
221
  payload = nil
200
222
 
201
223
  unless @cache.nil?
@@ -212,6 +234,7 @@ class Redis
212
234
  from_group: group,
213
235
  to: @consumer_id,
214
236
  to_group: @group,
237
+ tracer: tracer_data.to_json,
215
238
  payload: @cache[cache_key].to_json
216
239
  }
217
240
  @logger.info("#{@consumer_id} - fetching from cache with key #{cache_key}")
@@ -230,6 +253,7 @@ class Redis
230
253
  from_group: @group,
231
254
  to: to,
232
255
  to_group: group,
256
+ tracer: tracer_data.to_json,
233
257
  payload: data.to_json
234
258
  }
235
259
  end
@@ -288,6 +312,12 @@ class Redis
288
312
  id, data_out = result[@stream][0]
289
313
  ack_count = @redis.xack(@stream, @group, id) if @group
290
314
 
315
+ tracer_data = JSON.parse(data_out["tracer"])
316
+ unless tracer_data.nil? || tracer_data.empty?
317
+ tracer_span = OpenTracing.extract(OpenTracing::FORMAT_TEXT_MAP, tracer_data)
318
+ data_out["tracer"] = OpenTracing.start_active_span(@consumer_id, child_of: tracer_span)
319
+ end
320
+
291
321
  begin
292
322
  data_out["payload"] = JSON.parse(data_out["payload"])
293
323
  rescue Exception => e
@@ -303,7 +333,7 @@ class Redis
303
333
  # end
304
334
  # end
305
335
 
306
- if (data_out["from"].eql?(@consumer_id))
336
+ if data_out["from"].eql?(@consumer_id)
307
337
  return false
308
338
  end
309
339
 
@@ -1,6 +1,6 @@
1
1
  #encoding: UTF-8
2
2
  class Redis
3
3
  module Stream
4
- VERSION = "0.4.1"
4
+ VERSION = "0.4.2"
5
5
  end
6
6
  end
data/redis-stream.gemspec CHANGED
@@ -42,5 +42,5 @@ Gem::Specification.new do |spec|
42
42
  spec.add_dependency "redis", "4.1.3"
43
43
  spec.add_dependency "moneta", "~> 1.2"
44
44
  spec.add_dependency "multi_json", "~> 1.14"
45
- spec.add_dependency "zipkin-tracer", "~> 0.43"
45
+ spec.add_dependency "zipkin", "~> 1.6.1"
46
46
  end
metadata CHANGED
@@ -1,113 +1,113 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-stream
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mehmet Celik
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-06 00:00:00.000000000 Z
11
+ date: 2020-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
+ name: bundler
14
15
  requirement: !ruby/object:Gem::Requirement
15
16
  requirements:
16
17
  - - "~>"
17
18
  - !ruby/object:Gem::Version
18
19
  version: '2.0'
19
- name: bundler
20
- prerelease: false
21
20
  type: :development
21
+ prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
+ name: rake
28
29
  requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - "~>"
31
32
  - !ruby/object:Gem::Version
32
33
  version: '10.0'
33
- name: rake
34
- prerelease: false
35
34
  type: :development
35
+ prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
+ name: minitest
42
43
  requirement: !ruby/object:Gem::Requirement
43
44
  requirements:
44
45
  - - "~>"
45
46
  - !ruby/object:Gem::Version
46
47
  version: '5.0'
47
- name: minitest
48
- prerelease: false
49
48
  type: :development
49
+ prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
55
  - !ruby/object:Gem::Dependency
56
+ name: redis
56
57
  requirement: !ruby/object:Gem::Requirement
57
58
  requirements:
58
59
  - - '='
59
60
  - !ruby/object:Gem::Version
60
61
  version: 4.1.3
61
- name: redis
62
- prerelease: false
63
62
  type: :runtime
63
+ prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
68
  version: 4.1.3
69
69
  - !ruby/object:Gem::Dependency
70
+ name: moneta
70
71
  requirement: !ruby/object:Gem::Requirement
71
72
  requirements:
72
73
  - - "~>"
73
74
  - !ruby/object:Gem::Version
74
75
  version: '1.2'
75
- name: moneta
76
- prerelease: false
77
76
  type: :runtime
77
+ prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.2'
83
83
  - !ruby/object:Gem::Dependency
84
+ name: multi_json
84
85
  requirement: !ruby/object:Gem::Requirement
85
86
  requirements:
86
87
  - - "~>"
87
88
  - !ruby/object:Gem::Version
88
89
  version: '1.14'
89
- name: multi_json
90
- prerelease: false
91
90
  type: :runtime
91
+ prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.14'
97
97
  - !ruby/object:Gem::Dependency
98
+ name: zipkin
98
99
  requirement: !ruby/object:Gem::Requirement
99
100
  requirements:
100
101
  - - "~>"
101
102
  - !ruby/object:Gem::Version
102
- version: '0.43'
103
- name: zipkin-tracer
104
- prerelease: false
103
+ version: 1.6.1
105
104
  type: :runtime
105
+ prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0.43'
110
+ version: 1.6.1
111
111
  description: Simple stream library using Redis Streams
112
112
  email:
113
113
  - mehmet@celik.be
@@ -145,7 +145,7 @@ metadata:
145
145
  homepage_uri: https://github.com/mehmetc/redis-stream
146
146
  source_code_uri: https://github.com/mehmetc/redis-stream
147
147
  changelog_uri: https://github.com/mehmetc/redis-stream
148
- post_install_message:
148
+ post_install_message:
149
149
  rdoc_options: []
150
150
  require_paths:
151
151
  - lib
@@ -160,9 +160,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
160
  - !ruby/object:Gem::Version
161
161
  version: '0'
162
162
  requirements: []
163
- rubyforge_project:
164
- rubygems_version: 2.7.9
165
- signing_key:
163
+ rubygems_version: 3.0.6
164
+ signing_key:
166
165
  specification_version: 4
167
166
  summary: Sugar coating Redis Streams
168
167
  test_files: []