splitclient-rb 3.1.0.pre.rc11 → 3.1.0.pre.rc12

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
  SHA1:
3
- metadata.gz: 02331c7576d5207396d36d2f35da18b3a68f0216
4
- data.tar.gz: e7b45fedc47e7b79ab31005f0c695c3723f52479
3
+ metadata.gz: 792c1c774edec245bff63e2a6bc6a400df5b3e66
4
+ data.tar.gz: 73b1d0d2087fa5c75bfd3adb4e38bbcd83b73584
5
5
  SHA512:
6
- metadata.gz: 9949de92f9ffa311d873ebb6e2ed18ddcf402ca55333a67739438bed1bde4d4aa8c3934d62000e75f0570964e9281c1b7715da7e2d419c99e65e56f323d58447
7
- data.tar.gz: b1a2bad851319e62fe343558b99252deb967b43ea60631610f7cdc943d8bccd6298dbfc7cbef4c872bb1ebf16cf316c1e05ea8a7f3be306af9ab4c091490e033
6
+ metadata.gz: d51c707dcad7e97aab05edb06651f11b9265af9ee2769eb7d92684dfc189fa90dd546fbf895dbeead0163e798249a13b20af5e8351a20ead2b40a5fc94a1e40f
7
+ data.tar.gz: e27d3b2122d0b362e5c3d7455545720965f2a8542d194e0c9fa8d2ea9bd406bbb3c4b8db2eaf3815fc65d48c419f0b64fe89fce2eabd6c61ef9a46e2d9a64d5f
data/CHANGES.txt CHANGED
@@ -3,6 +3,7 @@
3
3
  - adds manager.split_names()
4
4
  - add impressions_queue_size to prevent memory leak when Threads pauses due to 'smart' fork.
5
5
  - do not report latencies for get_treatment is array is all zeros
6
+ - Fix deduplication problem when posting impressions
6
7
 
7
8
  3.0.3
8
9
 
@@ -40,6 +40,7 @@ module SplitIoClient
40
40
  impressions: parsed_impression.reject { |k, _| k == 'split_name' }
41
41
  }
42
42
  end
43
+
43
44
  @adapter.delete_from_set(key, members)
44
45
  end
45
46
 
@@ -135,6 +135,9 @@ module SplitIoClient
135
135
  #
136
136
 
137
137
  def metrics_sender
138
+ # TODO: Send metrics in main thread for test ENV
139
+ return if ENV['SPLITCLIENT_ENV'] == 'test'
140
+
138
141
  Thread.new do
139
142
  loop do
140
143
  begin
@@ -158,6 +161,9 @@ module SplitIoClient
158
161
 
159
162
  @config.logger.info("Starting impressions service...")
160
163
 
164
+ # TODO: Send impressions in main thread for test ENV
165
+ return if ENV['SPLITCLIENT_ENV'] == 'test'
166
+
161
167
  Thread.new do
162
168
  loop do
163
169
  begin
@@ -170,6 +176,7 @@ module SplitIoClient
170
176
  end
171
177
  end
172
178
  end
179
+
173
180
  @config.logger.info("Started impressions service")
174
181
  end
175
182
 
@@ -205,40 +212,37 @@ module SplitIoClient
205
212
 
206
213
  # REFACTOR
207
214
  def impressions_array(impressions = nil)
208
- impressions_data = impressions || @impressions_repository
209
- popped_impressions = impressions_data.clear
210
- test_impression_array = []
211
- filtered_impressions = []
212
- keys_treatments_seen = []
215
+ popped_impressions = impressions ? impressions : @impressions_repository.clear
216
+ test_impression_array, filtered_impressions, keys_treatments_seen = [], [], []
213
217
 
214
- if !popped_impressions.empty?
215
- popped_impressions.each do |item|
216
- item_hash = "#{item[:impressions]['key_name']}:#{item[:impressions]['treatment']}"
218
+ return [] if popped_impressions.empty?
217
219
 
218
- next if keys_treatments_seen.include?(item_hash)
220
+ popped_impressions.each do |item|
221
+ item_hash = "#{item[:feature]}:#{item[:impressions]['key_name']}:#{item[:impressions]['treatment']}"
219
222
 
220
- keys_treatments_seen << item_hash
221
- filtered_impressions << item
222
- end
223
+ next if keys_treatments_seen.include?(item_hash)
223
224
 
224
- return [] unless filtered_impressions
225
-
226
- features = filtered_impressions.map { |i| i[:feature] }.uniq
227
- test_impression_array = features.each_with_object([]) do |feature, memo|
228
- current_impressions = filtered_impressions.select { |i| i[:feature] == feature }
229
- current_impressions.map! do |i|
230
- {
231
- keyName: i[:impressions]['key_name'],
232
- treatment: i[:impressions]['treatment'],
233
- time: i[:impressions]['time']
234
- }
235
- end
225
+ keys_treatments_seen << item_hash
226
+ filtered_impressions << item
227
+ end
236
228
 
237
- memo << {
238
- testName: feature,
239
- keyImpressions: current_impressions
229
+ return [] if filtered_impressions.empty?
230
+
231
+ features = filtered_impressions.map { |i| i[:feature] }.uniq
232
+ test_impression_array = features.each_with_object([]) do |feature, memo|
233
+ current_impressions = filtered_impressions.select { |i| i[:feature] == feature }
234
+ current_impressions.map! do |i|
235
+ {
236
+ keyName: i[:impressions]['key_name'],
237
+ treatment: i[:impressions]['treatment'],
238
+ time: i[:impressions]['time']
240
239
  }
241
240
  end
241
+
242
+ memo << {
243
+ testName: feature,
244
+ keyImpressions: current_impressions
245
+ }
242
246
  end
243
247
 
244
248
  test_impression_array
@@ -1,3 +1,3 @@
1
1
  module SplitIoClient
2
- VERSION = '3.1.0-rc11'
2
+ VERSION = '3.1.0-rc12'
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: 3.1.0.pre.rc11
4
+ version: 3.1.0.pre.rc12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Split Software
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-09 00:00:00.000000000 Z
11
+ date: 2016-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler