redis-stream 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
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: []