splitclient-rb 7.1.4.pre.rc14 → 7.1.4.pre.rc19

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: 2a839ca256b9e088f4629289e875cbfc3ecb0ae44414270b826175a24ba98ee3
4
- data.tar.gz: 6a240e652288008873e6cbd24cbb0adbb3aa868f9db94307644f9c6704bf4db8
3
+ metadata.gz: 60c6946b200c0979eb6eedefce813c20b6e3db78424c35540efab92db20be6a7
4
+ data.tar.gz: 073435bf9df789975fcc78d6e0075314e377014722de8fd3eac296f261263499
5
5
  SHA512:
6
- metadata.gz: d26eb8ac2ecef7df984891a410a300369492b87400e6f5281a36c9fa21fbdb3a4d23c524c5f45645478f42ccebe1579058bef327ec08725d2a3423cf395fd6ab
7
- data.tar.gz: aad7ad57c77a6766d0e3df45ca8a8114ae9209b238768616ce46cce3a516c9d7cf5744a4a841c7f5aa5ff5cd06e4725a13c3c2e2af989810e269dbc86cc7e288
6
+ metadata.gz: 420e8e14d6225c92cbab6bc4cdda21314ad9482bae315d8ce0049d3b493caed3376da696c08a563b1bc2e588e9ab11133e7dc311772d0ac56485c0599a1c597f
7
+ data.tar.gz: 7b8c32b0fe198035538dc00564cad7aae10a7c1a66173c428f8c4004329e4c91255ddfd8cfc4c48aeb8a28b978b2904e35239d0f4cf944bf95b675cfd96a54ee
@@ -19,28 +19,30 @@ module SplitIoClient
19
19
  end
20
20
 
21
21
  def add_bulk(impressions)
22
- return unless @listener
23
22
  impressions.each do |impression|
24
- enqueue(
25
- split_name: impression[:i][:f],
26
- matching_key: impression[:i][:k],
27
- bucketing_key: impression[:i][:b],
28
- time: impression[:i][:m],
29
- treatment: {
30
- label: impression[:i][:r],
31
- treatment: impression[:i][:t],
32
- change_number: impression[:i][:c]
33
- },
34
- previous_time: impression[:i][:pt],
35
- attributes: impression[:attributes]
36
- ) unless impression.nil?
23
+ enqueue(impression)
37
24
  end
38
25
  end
39
26
 
40
27
  private
41
28
 
42
29
  def enqueue(impression)
43
- @queue.push(impression) if @listener
30
+ imp = {
31
+ split_name: impression[:i][:f],
32
+ matching_key: impression[:i][:k],
33
+ bucketing_key: impression[:i][:b],
34
+ time: impression[:i][:m],
35
+ treatment: {
36
+ label: impression[:i][:r],
37
+ treatment: impression[:i][:t],
38
+ change_number: impression[:i][:c]
39
+ },
40
+ previous_time: impression[:i][:pt],
41
+ attributes: impression[:attributes]
42
+ }
43
+ @queue.push(imp) if @listener
44
+ rescue StandardError => error
45
+ @config.log_found_exception(__method__.to_s, error)
44
46
  end
45
47
 
46
48
  def router_thread
@@ -32,12 +32,12 @@ module SplitIoClient
32
32
  to_return
33
33
  end
34
34
 
35
- def truncate_time_frame(timestamp_ms)
36
- timestamp_ms - (timestamp_ms % TIME_INTERVAL_MS)
35
+ def make_key(split_name, time_frame)
36
+ "#{split_name}::#{ImpressionCounter.truncate_time_frame(time_frame)}"
37
37
  end
38
38
 
39
- def make_key(split_name, time_frame)
40
- "#{split_name}::#{truncate_time_frame(time_frame)}"
39
+ def self.truncate_time_frame(timestamp_ms)
40
+ timestamp_ms - (timestamp_ms % TIME_INTERVAL_MS)
41
41
  end
42
42
  end
43
43
  end
@@ -8,7 +8,6 @@ module SplitIoClient
8
8
  @config = config
9
9
  @impressions_repository = impressions_repository
10
10
  @impression_counter = impression_counter
11
- @impression_router = SplitIoClient::ImpressionRouter.new(@config)
12
11
  @impression_observer = SplitIoClient::Observers::ImpressionObserver.new
13
12
  end
14
13
 
@@ -18,7 +17,7 @@ module SplitIoClient
18
17
 
19
18
  impression_data[:pt] = @impression_observer.test_and_set(impression_data) unless redis?
20
19
 
21
- return impression_optimized(split_name, impression_data, params[:attributes]) if optimized? && !redis?
20
+ @impression_counter.inc(split_name, impression_data[:m]) if optimized? && !redis?
22
21
 
23
22
  impression(impression_data, params[:attributes])
24
23
  rescue StandardError => error
@@ -28,8 +27,14 @@ module SplitIoClient
28
27
  def track(impressions)
29
28
  return if impressions.empty?
30
29
 
31
- @impressions_repository.add_bulk(impressions)
32
- @impression_router.add_bulk(impressions)
30
+ impression_router.add_bulk(impressions)
31
+
32
+ if optimized? && !redis?
33
+ optimized_impressions = impressions.select { |imp| should_queue_impression?(imp[:i]) }
34
+ @impressions_repository.add_bulk(optimized_impressions)
35
+ else
36
+ @impressions_repository.add_bulk(impressions)
37
+ end
33
38
  rescue StandardError => error
34
39
  @config.log_found_exception(__method__.to_s, error)
35
40
  end
@@ -66,14 +71,9 @@ module SplitIoClient
66
71
  @config.impressions_mode == :optimized
67
72
  end
68
73
 
69
- def impression_optimized(split_name, impression_data, attributes)
70
- @impression_counter.inc(split_name, impression_data[:m])
71
-
72
- impression(impression_data, attributes) if should_queue_impression?(impression_data)
73
- end
74
-
75
74
  def should_queue_impression?(impression)
76
- impression[:pt].nil? || (impression[:pt] < ((Time.now.to_f * 1000.0).to_i - Common::TIME_INTERVAL_MS))
75
+ impression[:pt].nil? ||
76
+ (ImpressionCounter.truncate_time_frame(impression[:pt]) != ImpressionCounter.truncate_time_frame(impression[:m]))
77
77
  end
78
78
 
79
79
  def impression(impression_data, attributes)
@@ -83,6 +83,12 @@ module SplitIoClient
83
83
  def redis?
84
84
  @config.impressions_adapter.class.to_s == 'SplitIoClient::Cache::Adapters::RedisAdapter'
85
85
  end
86
+
87
+ def impression_router
88
+ @impression_router ||= SplitIoClient::ImpressionRouter.new(@config)
89
+ rescue StandardError => error
90
+ @config.log_found_exception(__method__.to_s, error)
91
+ end
86
92
  end
87
93
  end
88
94
  end
@@ -1,3 +1,3 @@
1
1
  module SplitIoClient
2
- VERSION = '7.1.4.pre.rc14'
2
+ VERSION = '7.1.4.pre.rc19'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: splitclient-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.4.pre.rc14
4
+ version: 7.1.4.pre.rc19
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-09-21 00:00:00.000000000 Z
11
+ date: 2020-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: allocation_stats