splitclient-rb 7.1.4.pre.rc7 → 7.1.4.pre.rc12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.txt +1 -1
  3. data/Rakefile +7 -2
  4. data/ext/murmurhash/3_x64_128.c +117 -0
  5. data/ext/murmurhash/3_x86_32.c +88 -0
  6. data/ext/murmurhash/extconf.rb +5 -0
  7. data/ext/murmurhash/murmurhash.c +255 -0
  8. data/ext/murmurhash/murmurhash.h +94 -0
  9. data/lib/murmurhash/murmurhash.jar +0 -0
  10. data/lib/splitclient-rb.rb +6 -1
  11. data/lib/splitclient-rb/cache/hashers/impression_hasher.rb +34 -0
  12. data/lib/splitclient-rb/cache/observers/impression_observer.rb +22 -0
  13. data/lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb +4 -18
  14. data/lib/splitclient-rb/cache/repositories/impressions/redis_repository.rb +7 -18
  15. data/lib/splitclient-rb/cache/repositories/impressions_repository.rb +1 -27
  16. data/lib/splitclient-rb/cache/routers/impression_router.rb +12 -14
  17. data/lib/splitclient-rb/cache/senders/impressions_count_sender.rb +73 -0
  18. data/lib/splitclient-rb/cache/senders/impressions_formatter.rb +11 -11
  19. data/lib/splitclient-rb/cache/senders/impressions_sender.rb +3 -3
  20. data/lib/splitclient-rb/clients/split_client.rb +24 -73
  21. data/lib/splitclient-rb/engine/api/impressions.rb +30 -13
  22. data/lib/splitclient-rb/engine/common/impressions_counter.rb +45 -0
  23. data/lib/splitclient-rb/engine/common/impressions_manager.rb +87 -0
  24. data/lib/splitclient-rb/engine/evaluator/splitter.rb +1 -5
  25. data/lib/splitclient-rb/engine/parser/evaluator.rb +0 -4
  26. data/lib/splitclient-rb/engine/sync_manager.rb +5 -6
  27. data/lib/splitclient-rb/engine/synchronizer.rb +9 -1
  28. data/lib/splitclient-rb/split_config.rb +31 -1
  29. data/lib/splitclient-rb/split_factory.rb +5 -2
  30. data/lib/splitclient-rb/version.rb +1 -1
  31. data/splitclient-rb.gemspec +8 -1
  32. metadata +14 -17
@@ -53,7 +53,9 @@ module SplitIoClient
53
53
  @segments_refresh_rate = opts[:segments_refresh_rate] || SplitConfig.default_segments_refresh_rate
54
54
  @metrics_refresh_rate = opts[:metrics_refresh_rate] || SplitConfig.default_metrics_refresh_rate
55
55
 
56
- @impressions_refresh_rate = opts[:impressions_refresh_rate] || SplitConfig.default_impressions_refresh_rate
56
+ @impressions_mode = init_impressions_mode(opts[:impressions_mode])
57
+
58
+ @impressions_refresh_rate = SplitConfig.init_impressions_refresh_rate(@impressions_mode, opts[:impressions_refresh_rate], SplitConfig.default_impressions_refresh_rate)
57
59
  @impressions_queue_size = opts[:impressions_queue_size] || SplitConfig.default_impressions_queue_size
58
60
  @impressions_adapter = SplitConfig.init_cache_adapter(
59
61
  opts[:cache_adapter] || SplitConfig.default_cache_adapter, :queue_adapter, @impressions_queue_size, @redis_url
@@ -270,6 +272,30 @@ module SplitIoClient
270
272
 
271
273
  attr_accessor :streaming_enabled
272
274
 
275
+ attr_accessor :impressions_mode
276
+
277
+ def self.default_impressions_mode
278
+ :optimized
279
+ end
280
+
281
+ def init_impressions_mode(impressions_mode)
282
+ impressions_mode ||= SplitConfig.default_impressions_mode
283
+
284
+ case impressions_mode
285
+ when :debug
286
+ return :debug
287
+ else
288
+ @logger.error('You passed an invalid impressions_mode, impressions_mode should be one of the following values: :debug or :optimized. Defaulting to :optimized mode') unless impressions_mode == :optimized
289
+ return :optimized
290
+ end
291
+ end
292
+
293
+ def self.init_impressions_refresh_rate(impressions_mode, refresh_rate, default_rate)
294
+ return (refresh_rate.nil? || refresh_rate <= 0 ? default_rate : refresh_rate) if impressions_mode == :debug
295
+
296
+ return refresh_rate.nil? || refresh_rate <= 0 ? SplitConfig.default_impressions_refresh_rate_optimized : [default_rate, refresh_rate].max
297
+ end
298
+
273
299
  def self.default_streaming_enabled
274
300
  true
275
301
  end
@@ -387,6 +413,10 @@ module SplitIoClient
387
413
  60
388
414
  end
389
415
 
416
+ def self.default_impressions_refresh_rate_optimized
417
+ 300
418
+ end
419
+
390
420
  def self.default_impression_listener_refresh_rate
391
421
  0
392
422
  end
@@ -34,10 +34,12 @@ module SplitIoClient
34
34
  @metrics_repository = MetricsRepository.new(@config)
35
35
  @sdk_blocker = SDKBlocker.new(@splits_repository, @segments_repository, @config)
36
36
  @metrics = Metrics.new(100, @metrics_repository)
37
+ @impression_counter = SplitIoClient::Engine::Common::ImpressionCounter.new
38
+ @impressions_manager = SplitIoClient::Engine::Common::ImpressionManager.new(@config, @impressions_repository, @impression_counter)
37
39
 
38
40
  start!
39
41
 
40
- @client = SplitClient.new(@api_key, @metrics, @splits_repository, @segments_repository, @impressions_repository, @metrics_repository, @events_repository, @sdk_blocker, @config)
42
+ @client = SplitClient.new(@api_key, @metrics, @splits_repository, @segments_repository, @impressions_repository, @metrics_repository, @events_repository, @sdk_blocker, @config, @impressions_manager)
41
43
  @manager = SplitManager.new(@splits_repository, @sdk_blocker, @config)
42
44
 
43
45
  validate_api_key
@@ -51,7 +53,8 @@ module SplitIoClient
51
53
  if @config.localhost_mode
52
54
  start_localhost_components
53
55
  else
54
- SplitIoClient::Engine::SyncManager.new(repositories, @api_key, @config, @sdk_blocker, @metrics).start
56
+ params = { sdk_blocker: @sdk_blocker, metrics: @metrics, impression_counter: @impression_counter }
57
+ SplitIoClient::Engine::SyncManager.new(repositories, @api_key, @config, params).start
55
58
  end
56
59
  end
57
60
 
@@ -1,3 +1,3 @@
1
1
  module SplitIoClient
2
- VERSION = '7.1.4.pre.rc7'
2
+ VERSION = '7.1.4.pre.rc12'
3
3
  end
@@ -26,7 +26,14 @@ Gem::Specification.new do |spec|
26
26
  lib/murmurhash/murmurhash.jar]
27
27
  )
28
28
  else
29
- spec.add_runtime_dependency 'digest-murmurhash', '>= 1.1.1'
29
+ spec.files.concat(
30
+ %w[ext/murmurhash/3_x86_32.c
31
+ ext/murmurhash/3_x64_128.c
32
+ ext/murmurhash/extconf.rb
33
+ ext/murmurhash/murmurhash.c
34
+ ext/murmurhash/murmurhash.h]
35
+ )
36
+ spec.extensions = ['ext/murmurhash/extconf.rb']
30
37
  end
31
38
 
32
39
  spec.add_development_dependency 'allocation_stats'
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: splitclient-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.4.pre.rc7
4
+ version: 7.1.4.pre.rc12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Split Software
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-26 00:00:00.000000000 Z
11
+ date: 2020-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: digest-murmurhash
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 1.1.1
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 1.1.1
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: allocation_stats
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -322,7 +308,8 @@ description: Ruby client for using split SDK.
322
308
  email:
323
309
  - pato@split.io
324
310
  executables: []
325
- extensions: []
311
+ extensions:
312
+ - ext/murmurhash/extconf.rb
326
313
  extra_rdoc_files: []
327
314
  files:
328
315
  - ".github/pull_request_template.md"
@@ -337,6 +324,11 @@ files:
337
324
  - LICENSE
338
325
  - README.md
339
326
  - Rakefile
327
+ - ext/murmurhash/3_x64_128.c
328
+ - ext/murmurhash/3_x86_32.c
329
+ - ext/murmurhash/extconf.rb
330
+ - ext/murmurhash/murmurhash.c
331
+ - ext/murmurhash/murmurhash.h
340
332
  - gemfiles/faraday_after_0.13.gemfile
341
333
  - gemfiles/faraday_before_0.13.gemfile
342
334
  - lib/murmurhash/base.rb
@@ -350,6 +342,8 @@ files:
350
342
  - lib/splitclient-rb/cache/adapters/redis_adapter.rb
351
343
  - lib/splitclient-rb/cache/fetchers/segment_fetcher.rb
352
344
  - lib/splitclient-rb/cache/fetchers/split_fetcher.rb
345
+ - lib/splitclient-rb/cache/hashers/impression_hasher.rb
346
+ - lib/splitclient-rb/cache/observers/impression_observer.rb
353
347
  - lib/splitclient-rb/cache/repositories/events/memory_repository.rb
354
348
  - lib/splitclient-rb/cache/repositories/events/redis_repository.rb
355
349
  - lib/splitclient-rb/cache/repositories/events_repository.rb
@@ -364,6 +358,7 @@ files:
364
358
  - lib/splitclient-rb/cache/repositories/splits_repository.rb
365
359
  - lib/splitclient-rb/cache/routers/impression_router.rb
366
360
  - lib/splitclient-rb/cache/senders/events_sender.rb
361
+ - lib/splitclient-rb/cache/senders/impressions_count_sender.rb
367
362
  - lib/splitclient-rb/cache/senders/impressions_formatter.rb
368
363
  - lib/splitclient-rb/cache/senders/impressions_sender.rb
369
364
  - lib/splitclient-rb/cache/senders/localhost_repo_cleaner.rb
@@ -383,6 +378,8 @@ files:
383
378
  - lib/splitclient-rb/engine/api/segments.rb
384
379
  - lib/splitclient-rb/engine/api/splits.rb
385
380
  - lib/splitclient-rb/engine/auth_api_client.rb
381
+ - lib/splitclient-rb/engine/common/impressions_counter.rb
382
+ - lib/splitclient-rb/engine/common/impressions_manager.rb
386
383
  - lib/splitclient-rb/engine/evaluator/splitter.rb
387
384
  - lib/splitclient-rb/engine/matchers/all_keys_matcher.rb
388
385
  - lib/splitclient-rb/engine/matchers/between_matcher.rb