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

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
  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