-
Notifications
You must be signed in to change notification settings - Fork 15
/
CHANGES.txt
338 lines (263 loc) · 15.6 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
CHANGES
8.4.0 (May 3, 2024)
- Fixed issue preventing Impressopns and Events posting if client.destroy is called before the post threads started
- Added support for targeting rules based on semantic versions (https://semver.org/).
8.3.1 (Mar 22, 2024)
- Fixed ruby process hanging due to failed thread.join command, when calling destroy and a http request still active.
- Fixed streaming notification parser. Issue ref: https://github.com/splitio/ruby-client/issues/511
8.3.0 (Dec 11, 2023)
- Added support for Flag Sets on the SDK, which enables grouping feature flags and interacting with the group rather than individually (more details in our documentation):
- Added new variations of the get treatment methods to support evaluating flags in given flag set/s.
- get_treatments_by_flag_set and get_treatments_by_flag_sets
- get_treatments_with_config_by_flag_set and get_treatments_with_config_by_flag_sets
- Added a new optional Split Filter configuration option. This allows the SDK and Split services to only synchronize the flags in the specified flag sets, avoiding unused or unwanted flags from being synced on the SDK instance, bringing all the benefits from a reduced payload.
- Note: Only applicable when the SDK is in charge of the rollout data synchronization. When not applicable, the SDK will log a warning on init.
- Added `default_treatment` and `sets` property to the `split_view` object returned by the `split` and `splits` methods of the SDK manager.
8.2.0 (Jul 18, 2023)
- Improved streaming architecture implementation to apply feature flag updates from the notification received which is now enhanced, improving efficiency and reliability of the whole update system.
8.1.2 (May 15, 2023)
- Updated terminology on the SDKs codebase to be more aligned with current standard without causing a breaking change. The core change is the term split for feature flag on things like logs and IntelliSense comments.
8.1.1 (Mar 17, 2023)
- Added retries with backoff when the sdk tries to connect to the Streaming service and it is not available.
- Updated the way that the sdk write mtks in redis.
- Fixed calculation of timeUntilReady in telemetry.
8.1.0 (Oct 5, 2022)
- Added a new impressions mode for the SDK called NONE , to be used in factory when there is no desire to capture impressions on an SDK factory to feed Split's analytics engine. Running NONE mode, the SDK will only capture unique keys evaluated for a particular feature flag instead of full blown impressions.
8.0.1 (Jul 20, 2022)
- Updated dependencies to support faraday > 2.0
8.0.0 (May 10, 2022)
- BREAKING CHANGE: Deprecated support for ruby 2.3 and 2.4 versions. The minimum ruby version required is 2.5 now.
- Updated redis command for config telemetry, using hset instead of rpush now.
- Updated dependencies:
- rake to ~> 13.0
- faraday to >= 1.1, < 2.0
7.3.4 (Feb 21, 2022)
- Updated streaming events architecture with a new queue logic.
- Fixed redis integration Pipelining command deprecation warning.
7.3.3 (Jan 28, 2022)
- Fixed edge cases where the sdk lost streaming connection.
- Updated default auth service url to https://auth.split.io/api/v2/auth
- Updated dependencies:
- faraday to >= 0.8, < 2.0
- net-http-persistent to >= 2.9, < 5.0
- redis to >= 4.0.0, < 5.0
- socketry to >= 0.4, < 1.0
- thread_safe to ~> 0.3
7.3.2 (Dec 10, 2021)
- Updated the readiness flow to be more consistent with the other sdks and improve the readiness time.
- Updated the name of telemety key latencies in Redis.
7.3.1 (Jul 26, 2021)
- Updated the synchronization flow to be more reliable in the event of an edge case generating delay in cache purge propagation, keeping the SDK cache properly synced.
7.3.0 (Jul 12, 2021)
- Updated SDK telemetry storage, metrics and updater to be more effective and send less often.
- Fixed high cpu usage when api key is wrong.
7.2.3 (Feb 24, 2021)
- Fixed missing segment fetch after an SPLIT_UPDATE.
- Updated streaming logic to support multiregion.
- Updated sse client connection logic to read confirmation event.
- Updated naming of retryable erros.
7.2.2 (Dec 18, 2020)
- Fixed issue: undefined local variable or method post_impressions_count
7.2.1 (Oct 23, 2020)
- Updated redis dependency to >= 4.2.2.
- Updated ably error handling.
7.2.0 (Sep 25, 2020)
- Added impressions dedupe logic to avoid sending duplicated impressions:
- Added `OPTIMIZED` and `DEBUG` modes in order to enabling/disabling how impressions are going to be sent into Split servers,
- `OPTIMIZED`: will send unique impressions in a timeframe in order to reduce how many times impressions are posted to Split.
- `DEBUG`: will send every impression generated to Split.
7.1.3 (Jul 31, 2020)
- Updated rake development dependency to ~> 12.3.3.
7.1.2 (Jun 15, 2020)
- Fixed uninitialized constant LocalhostSplitStore::YAML for console apps.
- Updated default_streaming_enabled to true.
7.1.1 (May 19, 2020)
- Updated streaming domain.
7.1.0 (Apr 30, 2020)
- Added support for the new Split streaming architecture. When enabled, the SDK will not poll for updates but instead receive notifications every time there's a change in your environments, allowing to process those much quicker. If disabled (default) or in the event of an issue, the SDK will fallback to the known polling mechanism to provide a seamless experience.
7.0.3 (Jan 20, 2020)
- Added integration tests.
- Fixed impressions labels.
7.0.2 (Nov 11, 2019)
- Fixed an issue about empty logs.
- Fixed an issue about reducing scan commands in redis.
7.0.1 (Oct 31, 2019)
- Updated localhost mode so that parsing of test files results in JSON data for splits analogous to that returned by the Split backend.
- Updated localhost mode to parse the mock data into Split objects to keep differences in operation to a minimum.
- Removed specific spare code dealing with localhost operations.
- Removed the disable_impressions configuration param.
- Fixed an issue about Event properties were not sent to be.
- Added ip_addresses_enabled to enable/disable sending MachineName and MachineIP headers when data is posted to Split Servers.
- Fixed an issue about attributes in matchers.
- Fixed an issue about trying to access a nil property when sending telemetry metrics.
7.0.0 (Aug 23, 2019)
- BREAKING CHANGE: block_until_ready is now a method in both split_client and split_manager that needs to be explicitly called. The block_until_ready parameter is now ignored if passed in the configuration, and defaults to 15s unless passed as a parameter of the block_until_ready method.
- Added warning to track calls when traffic type does not belong to an existing split (only issued in the online client and when SDK is ready).
- Added warning to the get_treatment's method family when split does not exist in the current environment (only issued by online client and when SDK is ready).
- Added warning to the split_manager's split method when split does not exist in the current environment (only issued by online client and when SDK is ready).
- Added ability to create multiple split_factory instances. Added factory counts and warnings.
- Added SDK not ready impressions label.
- Changed the splits method implementation in the splits_repository to make use of get_splits, which outperforms the current implementation.
6.4.1 (Jul 26, 2019)
- Fixed an issue in the latency metrics format preventing the synchronizer from correctly picking them up (consumer mode only). Old keys will be deleted on SDK startup.
6.4.0 (Jul 05, 2019)
- Added properties to track method.
6.3.0 (Apr 30, 2019)
- Added Dynamic Configurations support through two new methods that mimick the regular ones, changing the type of what is returned.
- get_treatment_with_config: Same as get_treatment but returning the treatment with it's config.
- get_treatments_with_config: Same as get_treatments, but instead of a map of string it returns a map of treatments with config.
- Added configs to SplitViews returned by the manager module.
- Updated localhost mode. Now besides supporting the old text files with `.split` extension (to be deprecated soon), we support YAML (.yaml/.yml) files where you can
define configurations for your treatments and also whitelisted keys. Read more in our docs!
6.2.0 (Mar 7th, 2019)
- Reworked SplitClient#destroy to ensure events, impressions and metrics are sent to Split backend when called.
- Ensured destroy is called when keyboard interrupts are sent to the application
- Changed SDK blocker (and block_until_ready) to have no effect in consumer mode
- Added support for applications tied to Faraday < 0.13 and net-http-persistent 3 using a patched Faraday adapter
- Added documentation for input validation in detailed readme
- Changed SplitConfig#default_features_refresh_rate value to 5 seconds
6.1.0 (Feb 8th, 2019)
- Review input validation for client API methods. Better control and logging over nil, empty, numeric, and NaN parameters
- Added logging when block_until_ready is not set or api key is not provided
- Reviewed client API methods to log an error and return nil / empty when called after client was destroyed
- Update track regex and fix an error causing a partial match to pass as a valid event_type
- Add logging to #match? in matcher subclasses
- Fix simplecov configuration issue causing errors in coverage calculation
- Improve code coverage and decrease rubocop violation count
- Fix for issue causing redis_url parameter to be ignored and Redis to always default to REDIS_ENV environment variable
6.0.1 (Jan 7th, 2019)
- Fix an issue in events and impressions API calls log messages caused by a wrong variable name introduced in 6.0.0
6.0.0 (December 17th, 2018)
- BREAKING CHANGE: Change format used to store impressions in repositories to reduce the number of Redis operations. It requires an update of the Split Synchronizer to >2.0.0 if you're using Redis mode.
- Change `sender` and `store` classes to reuse Faraday connections, preventing issues with net-http-persistent 3.0
- Remove producer mode and make `memory + standalone` and `Redis + consumer` the only valid SDK modes. This is a breaking change
- Fix `evaluator` bucket calculation when traffic allocation is set to 1%
- Add cache wrapper to `segments_repository` and `splits_repository` to reduce the number of Redis operations
- Add `cache_ttl` and `max_cache_size` options to setup the memory cache wrapper when using redis
5.1.2 (October 26th, 2018)
- Add input validation for client API methods
5.1.1 (October 4th, 2018)
- Change get_treatments so that it sends a single latency metric
- Removed unused call to Redis#scan when adding latencies
- Removed Redis calls on initialization when SDK is set to consumer mode
- Change split_config approach so that every property has an accessor
- Removed @config parameter on most initializers
5.1.0 (September 10th, 2018)
- Change `get_api` to return only a Faraday response.
- Add `SplitLogger` to clean up logging code and reduce the complexity in several methods.
5.0.3 (August 13th, 2018)
- Add `impressions_bulk_size` option to set the max number of impressions to be sent to the Split backend on each post.
5.0.2 (July 31st, 2018)
- Prevents the impression thread from being started if a listener is not in place
5.0.1 (July 19th, 2018)
- Adds stop! method to the factory for gracefully stopping the SDK.
5.0.0 (May 18th, 2018)
- Fix bug where the sdk picked the wrong hashing algo. This is a breaking change.
4.5.2 (May 16th, 2018)
- do not return control when a split has custom attr and I don't pass attributes to get_treatment
4.5.1 (Mar 23rd, 2018)
- Fix Forwardable load issue
- Fix native extension path issue
- Add .jar executable to the gem
4.5.0 (Mar 2nd, 2018)
- Move MurmurHash3 implementation inside the gem
- Add native Java MurmurHash3 implementation -> now support JRuby
4.4.0 (Feb 5th, 2018)
- Add track API
4.3.3 (Feb 22th, 2018)
- Allow usage of Redis >= 3.2, not only ~> 3.2
4.3.2 (Dec 19th, 2017)
- Add DEFINITION_NOT_FOUND and rename NO_RULE_MATCHED labels
4.3.1 (Nov 10th, 2017)
- Do not throw exception when storing impressions on reids and it is not available. Returns CONTROL instead.
4.3.0 (Oct 13th, 2017)
- Add impression listener
- Add support for client shutdown (destroy())
- Add "time" to the routed impressions
- Add support to apply attribute matcher to the traffic type
- Add support for string matchers to match on matching keys
4.2.3 (August 4, 2017)
- Use ENV vars in producer
4.2.2 (July 28, 2017)
- Fix treatments array in SplitManager
4.2.1 (July 20, 2017)
- Coerce string to regexp for Regexp matcher
4.2.0 (July 18, 2017)
- Add new boolean/regexp matchers
- Add support for split dependency on other splits
- Pass bucketing_key to `match?` method
- Fix IP address fetching
- Remove unneeded dependencies (faraday_middleware, faraday-http-cache)
4.1.0 (April 16, 2017)
- Add new string/set matchers
- Use Rails logger if available. Now we do not pollute STDOUT by default
4.0.0
- Add support for murmur3 algo
- Optimize memory usage
3.3.0
- Add support for traffic allocation
3.2.4
- Fix Faraday compability issue (now compatible with Faraday 0.8.9)
- Provide an interface to run SplitAdapter(start and resume), can be used to resurrect threads in Unicorn and Passenger servers
- Allow passing non-string values to get_treatment/get_treatments
- Better logging when returning CONTROL and label:Exception as well as when restarting threads
- Add exception logging when failed to clear impressions keys or fetch impressions keys
- Fix Redis naming issues (key_name -> keyName)
- Fix negation matcher. Negation had not effect and was ignored.
3.2.3
- Fix Redis namespace issue to align with the spec
- Allocate less memory by not creating Split model to check if Split is archived
3.2.2
- Fix issue when segment_store was never invoked
3.2.0
- Add impression labeling
3.1.3
- Refactor SplitFactory - split it into separate mangers and client classes
- Refactor Utilities to comply style guide
- Allow to store block until ready flag in Redis
- rescue exception when posting impressions threads failed to prevent it to die
3.1.2
- Fix issue with complex key where get_treatment and get_treatments return different values.
3.1.1
- Fix variable not found when posting impression
- Fix infinite loop when posting impression if there is a network glitch
3.1.0
- Add RedisAdapter
- adds manager.split_names()
- add impressions_queue_size to prevent memory leak when Threads pauses due to 'smart' fork.
- do not report latencies for get_treatment is array is all zeros
- Fix deduplication problem when posting impressions
- Change in how factory is construct.
- Detach implementation for local factory and regular one.
3.0.3
- Fix nil ref in manager
3.0.2
- add ability to provide different bucketing/matching keys
3.0.1
- fix segments not deleting from the cache
3.0.0
- add new caching interface
- add replaceable adapters to store cache in
- add first cache adapter: MemoryAdapter
- refactoring
2.0.1
- Supress warnings cause by Net::HTTP when it already exists.
2.0.0
- Add Factory for creation of Client and Manager interface.
1.0.4
- added support for AND combiner on conditions
- added events_uri as config param which defines the metrics post url
- updated metrics post default endpoint to be https://events.split.io/api/
1.0.3
- fixed refresh rate intervals issue
- fixed datetime bug for split definitions created directly from api
1.0.2
- created between_matcher, equal_to_matcher, greater_than_or_equal_to_matcher, less_than_or_equal_to_matcher to support attributes
- refactored whitelist_matcher to support attributes
- tweaked to drop analytics data if the POST get an error response
- added condition to return CONTROL on the deleted features
1.0.1
- .splits to .split for local env
- isTreatment was removed from the API.
1.0.0
- Support multivariate treatment