launchdarkly-server-sdk 6.3.0 → 8.0.0

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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -4
  3. data/lib/ldclient-rb/config.rb +112 -62
  4. data/lib/ldclient-rb/context.rb +444 -0
  5. data/lib/ldclient-rb/evaluation_detail.rb +26 -22
  6. data/lib/ldclient-rb/events.rb +256 -146
  7. data/lib/ldclient-rb/flags_state.rb +26 -15
  8. data/lib/ldclient-rb/impl/big_segments.rb +18 -18
  9. data/lib/ldclient-rb/impl/broadcaster.rb +78 -0
  10. data/lib/ldclient-rb/impl/context.rb +96 -0
  11. data/lib/ldclient-rb/impl/context_filter.rb +145 -0
  12. data/lib/ldclient-rb/impl/data_source.rb +188 -0
  13. data/lib/ldclient-rb/impl/data_store.rb +59 -0
  14. data/lib/ldclient-rb/impl/dependency_tracker.rb +102 -0
  15. data/lib/ldclient-rb/impl/diagnostic_events.rb +9 -10
  16. data/lib/ldclient-rb/impl/evaluator.rb +386 -142
  17. data/lib/ldclient-rb/impl/evaluator_bucketing.rb +40 -41
  18. data/lib/ldclient-rb/impl/evaluator_helpers.rb +50 -0
  19. data/lib/ldclient-rb/impl/evaluator_operators.rb +26 -55
  20. data/lib/ldclient-rb/impl/event_sender.rb +7 -6
  21. data/lib/ldclient-rb/impl/event_summarizer.rb +68 -0
  22. data/lib/ldclient-rb/impl/event_types.rb +136 -0
  23. data/lib/ldclient-rb/impl/flag_tracker.rb +58 -0
  24. data/lib/ldclient-rb/impl/integrations/consul_impl.rb +19 -7
  25. data/lib/ldclient-rb/impl/integrations/dynamodb_impl.rb +38 -30
  26. data/lib/ldclient-rb/impl/integrations/file_data_source.rb +24 -11
  27. data/lib/ldclient-rb/impl/integrations/redis_impl.rb +109 -12
  28. data/lib/ldclient-rb/impl/migrations/migrator.rb +287 -0
  29. data/lib/ldclient-rb/impl/migrations/tracker.rb +136 -0
  30. data/lib/ldclient-rb/impl/model/clause.rb +45 -0
  31. data/lib/ldclient-rb/impl/model/feature_flag.rb +255 -0
  32. data/lib/ldclient-rb/impl/model/preprocessed_data.rb +64 -0
  33. data/lib/ldclient-rb/impl/model/segment.rb +132 -0
  34. data/lib/ldclient-rb/impl/model/serialization.rb +54 -44
  35. data/lib/ldclient-rb/impl/repeating_task.rb +3 -4
  36. data/lib/ldclient-rb/impl/sampler.rb +25 -0
  37. data/lib/ldclient-rb/impl/store_client_wrapper.rb +102 -8
  38. data/lib/ldclient-rb/impl/store_data_set_sorter.rb +2 -2
  39. data/lib/ldclient-rb/impl/unbounded_pool.rb +1 -1
  40. data/lib/ldclient-rb/impl/util.rb +59 -1
  41. data/lib/ldclient-rb/in_memory_store.rb +9 -2
  42. data/lib/ldclient-rb/integrations/consul.rb +2 -2
  43. data/lib/ldclient-rb/integrations/dynamodb.rb +2 -2
  44. data/lib/ldclient-rb/integrations/file_data.rb +4 -4
  45. data/lib/ldclient-rb/integrations/redis.rb +5 -5
  46. data/lib/ldclient-rb/integrations/test_data/flag_builder.rb +287 -62
  47. data/lib/ldclient-rb/integrations/test_data.rb +18 -14
  48. data/lib/ldclient-rb/integrations/util/store_wrapper.rb +20 -9
  49. data/lib/ldclient-rb/interfaces.rb +600 -14
  50. data/lib/ldclient-rb/ldclient.rb +314 -134
  51. data/lib/ldclient-rb/memoized_value.rb +1 -1
  52. data/lib/ldclient-rb/migrations.rb +230 -0
  53. data/lib/ldclient-rb/non_blocking_thread_pool.rb +1 -1
  54. data/lib/ldclient-rb/polling.rb +52 -6
  55. data/lib/ldclient-rb/reference.rb +274 -0
  56. data/lib/ldclient-rb/requestor.rb +9 -11
  57. data/lib/ldclient-rb/stream.rb +96 -34
  58. data/lib/ldclient-rb/util.rb +97 -14
  59. data/lib/ldclient-rb/version.rb +1 -1
  60. data/lib/ldclient-rb.rb +3 -4
  61. metadata +65 -23
  62. data/lib/ldclient-rb/event_summarizer.rb +0 -55
  63. data/lib/ldclient-rb/file_data_source.rb +0 -23
  64. data/lib/ldclient-rb/impl/event_factory.rb +0 -126
  65. data/lib/ldclient-rb/newrelic.rb +0 -17
  66. data/lib/ldclient-rb/redis_store.rb +0 -88
  67. data/lib/ldclient-rb/user_filter.rb +0 -52
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '01240358ce506d6913d6111e3683b72b63c303601c4b02987227a94b64cea9fa'
4
- data.tar.gz: dcd7ed0b5a4f94db862a6a3ff77b098ce450335088d286fc48b50b85cf923831
3
+ metadata.gz: bdb1eeb75ade6b2f82e1271c763f74ae577da09510e585b7cc1076ae9ff594d7
4
+ data.tar.gz: 8f794b216dff21125547319781efc2d77ce1632af6faccd8fa3c7fd96e2c8216
5
5
  SHA512:
6
- metadata.gz: 2ca40956187c82f7427f5fa520972a90c905da18a2442745a061e0892a7b8038333d9209418e66dda6ea00d39213420ebc4b5a0b3850a8f05558ba1fdaaac37d
7
- data.tar.gz: '04119f2473332cc4cd79d34c2c0937adaf54398eba17a2de28e322530943e333ffd64bc42f55bba40cc1aa77ff6c763b373ec18f0a6351bb36073737d926d8dd'
6
+ metadata.gz: 1ad1349bf430c6bb3a821d033f11106883c25d68aadc10bd622809b4c6dfe04e55ada3b9a49b8c92588389a4b3fb2112b1fd4fb63cdedf264cd3a0cc0bc0ac26
7
+ data.tar.gz: 6a605bd4f7ea9c7af3454e9a70bf5b3db1057456e5fc96249c807a706b0ca2fa8f0d3bd1238dae7e2fa5778ffe5d3b8728c9085499df0d952f76b3e41dcfa7a7
data/README.md CHANGED
@@ -3,14 +3,13 @@ LaunchDarkly Server-side SDK for Ruby
3
3
 
4
4
  [![Gem Version](https://badge.fury.io/rb/launchdarkly-server-sdk.svg)](http://badge.fury.io/rb/launchdarkly-server-sdk)
5
5
 
6
- [![Circle CI](https://circleci.com/gh/launchdarkly/ruby-server-sdk/tree/master.svg?style=svg)](https://circleci.com/gh/launchdarkly/ruby-server-sdk/tree/master)
7
- [![Security](https://hakiri.io/github/launchdarkly/ruby-server-sdk/master.svg)](https://hakiri.io/github/launchdarkly/ruby-server-sdk/master)
6
+ [![Circle CI](https://circleci.com/gh/launchdarkly/ruby-server-sdk/tree/main.svg?style=svg)](https://circleci.com/gh/launchdarkly/ruby-server-sdk/tree/main)
8
7
  [![RubyDoc](https://img.shields.io/static/v1?label=docs+-+all+versions&message=reference&color=00add8)](https://www.rubydoc.info/gems/launchdarkly-server-sdk)
9
8
  [![GitHub Pages](https://img.shields.io/static/v1?label=docs+-+latest&message=reference&color=00add8)](https://launchdarkly.github.io/ruby-server-sdk)
10
9
 
11
10
  LaunchDarkly overview
12
11
  -------------------------
13
- [LaunchDarkly](https://www.launchdarkly.com) is a feature management platform that serves over 100 billion feature flags daily to help teams build better software, faster. [Get started](https://docs.launchdarkly.com/home/getting-started) using LaunchDarkly today!
12
+ [LaunchDarkly](https://www.launchdarkly.com) is a feature management platform that serves trillions of feature flags daily to help teams build better software, faster. [Get started](https://docs.launchdarkly.com/home/getting-started) using LaunchDarkly today!
14
13
 
15
14
  [![Twitter Follow](https://img.shields.io/twitter/follow/launchdarkly.svg?style=social&label=Follow&maxAge=2592000)](https://twitter.com/intent/follow?screen_name=launchdarkly)
16
15
 
@@ -27,7 +26,7 @@ Refer to the [SDK documentation](https://docs.launchdarkly.com/sdk/server-side/r
27
26
  Learn more
28
27
  -----------
29
28
 
30
- Check out our [documentation](http://docs.launchdarkly.com) for in-depth instructions on configuring and using LaunchDarkly. You can also head straight to the [reference guide for this SDK](http://docs.launchdarkly.com/docs/ruby-sdk-reference).
29
+ Read our [documentation](http://docs.launchdarkly.com) for in-depth instructions on configuring and using LaunchDarkly. You can also head straight to the [reference guide for this SDK](http://docs.launchdarkly.com/docs/ruby-sdk-reference).
31
30
 
32
31
  Generated API documentation for all versions of the SDK is on [RubyDoc.info](https://www.rubydoc.info/gems/launchdarkly-server-sdk). The API documentation for the latest version is also on [GitHub Pages](https://launchdarkly.github.io/ruby-server-sdk).
33
32
 
@@ -21,6 +21,7 @@ module LaunchDarkly
21
21
  # @option opts [Integer] :capacity (10000) See {#capacity}.
22
22
  # @option opts [Float] :flush_interval (30) See {#flush_interval}.
23
23
  # @option opts [Float] :read_timeout (10) See {#read_timeout}.
24
+ # @option opts [Float] :initial_reconnect_delay (1) See {#initial_reconnect_delay}.
24
25
  # @option opts [Float] :connect_timeout (2) See {#connect_timeout}.
25
26
  # @option opts [Object] :cache_store See {#cache_store}.
26
27
  # @option opts [Object] :feature_store See {#feature_store}.
@@ -29,20 +30,19 @@ module LaunchDarkly
29
30
  # @option opts [Float] :poll_interval (30) See {#poll_interval}.
30
31
  # @option opts [Boolean] :stream (true) See {#stream?}.
31
32
  # @option opts [Boolean] all_attributes_private (false) See {#all_attributes_private}.
32
- # @option opts [Array] :private_attribute_names See {#private_attribute_names}.
33
+ # @option opts [Array] :private_attributes See {#private_attributes}.
33
34
  # @option opts [Boolean] :send_events (true) See {#send_events}.
34
- # @option opts [Integer] :user_keys_capacity (1000) See {#user_keys_capacity}.
35
- # @option opts [Float] :user_keys_flush_interval (300) See {#user_keys_flush_interval}.
36
- # @option opts [Boolean] :inline_users_in_events (false) See {#inline_users_in_events}.
35
+ # @option opts [Integer] :context_keys_capacity (1000) See {#context_keys_capacity}.
36
+ # @option opts [Float] :context_keys_flush_interval (300) See {#context_keys_flush_interval}.
37
37
  # @option opts [Object] :data_source See {#data_source}.
38
- # @option opts [Object] :update_processor Obsolete synonym for `data_source`.
39
- # @option opts [Object] :update_processor_factory Obsolete synonym for `data_source`.
40
38
  # @option opts [Boolean] :diagnostic_opt_out (false) See {#diagnostic_opt_out?}.
41
39
  # @option opts [Float] :diagnostic_recording_interval (900) See {#diagnostic_recording_interval}.
42
40
  # @option opts [String] :wrapper_name See {#wrapper_name}.
43
41
  # @option opts [String] :wrapper_version See {#wrapper_version}.
44
42
  # @option opts [#open] :socket_factory See {#socket_factory}.
45
43
  # @option opts [BigSegmentsConfig] :big_segments See {#big_segments}.
44
+ # @option opts [Hash] :application See {#application}
45
+ # @option opts [String] :payload_filter_key See {#payload_filter_key}
46
46
  #
47
47
  def initialize(opts = {})
48
48
  @base_uri = (opts[:base_uri] || Config.default_base_uri).chomp("/")
@@ -54,20 +54,18 @@ module LaunchDarkly
54
54
  @flush_interval = opts[:flush_interval] || Config.default_flush_interval
55
55
  @connect_timeout = opts[:connect_timeout] || Config.default_connect_timeout
56
56
  @read_timeout = opts[:read_timeout] || Config.default_read_timeout
57
+ @initial_reconnect_delay = opts[:initial_reconnect_delay] || Config.default_initial_reconnect_delay
57
58
  @feature_store = opts[:feature_store] || Config.default_feature_store
58
59
  @stream = opts.has_key?(:stream) ? opts[:stream] : Config.default_stream
59
60
  @use_ldd = opts.has_key?(:use_ldd) ? opts[:use_ldd] : Config.default_use_ldd
60
61
  @offline = opts.has_key?(:offline) ? opts[:offline] : Config.default_offline
61
62
  @poll_interval = opts.has_key?(:poll_interval) && opts[:poll_interval] > Config.default_poll_interval ? opts[:poll_interval] : Config.default_poll_interval
62
63
  @all_attributes_private = opts[:all_attributes_private] || false
63
- @private_attribute_names = opts[:private_attribute_names] || []
64
+ @private_attributes = opts[:private_attributes] || []
64
65
  @send_events = opts.has_key?(:send_events) ? opts[:send_events] : Config.default_send_events
65
- @user_keys_capacity = opts[:user_keys_capacity] || Config.default_user_keys_capacity
66
- @user_keys_flush_interval = opts[:user_keys_flush_interval] || Config.default_user_keys_flush_interval
67
- @inline_users_in_events = opts[:inline_users_in_events] || false
68
- @data_source = opts[:data_source] || opts[:update_processor] || opts[:update_processor_factory]
69
- @update_processor = opts[:update_processor]
70
- @update_processor_factory = opts[:update_processor_factory]
66
+ @context_keys_capacity = opts[:context_keys_capacity] || Config.default_context_keys_capacity
67
+ @context_keys_flush_interval = opts[:context_keys_flush_interval] || Config.default_context_keys_flush_interval
68
+ @data_source = opts[:data_source]
71
69
  @diagnostic_opt_out = opts.has_key?(:diagnostic_opt_out) && opts[:diagnostic_opt_out]
72
70
  @diagnostic_recording_interval = opts.has_key?(:diagnostic_recording_interval) && opts[:diagnostic_recording_interval] > Config.minimum_diagnostic_recording_interval ?
73
71
  opts[:diagnostic_recording_interval] : Config.default_diagnostic_recording_interval
@@ -75,8 +73,25 @@ module LaunchDarkly
75
73
  @wrapper_version = opts[:wrapper_version]
76
74
  @socket_factory = opts[:socket_factory]
77
75
  @big_segments = opts[:big_segments] || BigSegmentsConfig.new(store: nil)
76
+ @application = LaunchDarkly::Impl::Util.validate_application_info(opts[:application] || {}, @logger)
77
+ @payload_filter_key = opts[:payload_filter_key]
78
+ @data_source_update_sink = nil
78
79
  end
79
80
 
81
+ #
82
+ # Returns the component that allows a data source to push data into the SDK.
83
+ #
84
+ # This property should only be set by the SDK. Long term access of this
85
+ # property is not supported; it is temporarily being exposed to maintain
86
+ # backwards compatibility while the SDK structure is updated.
87
+ #
88
+ # Custom data source implementations should integrate with this sink if
89
+ # they want to provide support for data source status listeners.
90
+ #
91
+ # @private
92
+ #
93
+ attr_accessor :data_source_update_sink
94
+
80
95
  #
81
96
  # The base URL for the LaunchDarkly server. This is configurable mainly for testing
82
97
  # purposes; most users should use the default value.
@@ -122,7 +137,7 @@ module LaunchDarkly
122
137
  def use_ldd?
123
138
  @use_ldd
124
139
  end
125
-
140
+
126
141
  #
127
142
  # Whether the client should be initialized in offline mode. In offline mode, default values are
128
143
  # returned for all flags and no remote network requests are made.
@@ -180,6 +195,13 @@ module LaunchDarkly
180
195
  #
181
196
  attr_reader :read_timeout
182
197
 
198
+ #
199
+ # The initial delay before reconnecting after an error in the SSE client.
200
+ # This only applies to the streaming connection.
201
+ # @return [Float]
202
+ #
203
+ attr_reader :initial_reconnect_delay
204
+
183
205
  #
184
206
  # The connect timeout for network connections in seconds.
185
207
  # @return [Float]
@@ -198,28 +220,29 @@ module LaunchDarkly
198
220
  attr_reader :feature_store
199
221
 
200
222
  #
201
- # True if all user attributes (other than the key) should be considered private. This means
223
+ # True if all context attributes (other than the key) should be considered private. This means
202
224
  # that the attribute values will not be sent to LaunchDarkly in analytics events and will not
203
225
  # appear on the LaunchDarkly dashboard.
204
226
  # @return [Boolean]
205
- # @see #private_attribute_names
227
+ # @see #private_attributes
206
228
  #
207
229
  attr_reader :all_attributes_private
208
230
 
209
231
  #
210
- # A list of user attribute names that should always be considered private. This means that the
232
+ # A list of context attribute names that should always be considered private. This means that the
211
233
  # attribute values will not be sent to LaunchDarkly in analytics events and will not appear on
212
234
  # the LaunchDarkly dashboard.
213
235
  #
214
- # You can also specify the same behavior for an individual flag evaluation by storing an array
215
- # of attribute names in the `:privateAttributeNames` property (note camelcase name) of the
216
- # user object.
236
+ # You can also specify the same behavior for an individual flag evaluation
237
+ # by providing the context object with a list of private attributes.
238
+ #
239
+ # @see https://docs.launchdarkly.com/sdk/features/user-context-config#using-private-attributes
217
240
  #
218
241
  # @return [Array<String>]
219
242
  # @see #all_attributes_private
220
243
  #
221
- attr_reader :private_attribute_names
222
-
244
+ attr_reader :private_attributes
245
+
223
246
  #
224
247
  # Whether to send events back to LaunchDarkly. This differs from {#offline?} in that it affects
225
248
  # only the sending of client-side events, not streaming or polling for events from the server.
@@ -228,27 +251,19 @@ module LaunchDarkly
228
251
  attr_reader :send_events
229
252
 
230
253
  #
231
- # The number of user keys that the event processor can remember at any one time. This reduces the
232
- # amount of duplicate user details sent in analytics events.
254
+ # The number of context keys that the event processor can remember at any one time. This reduces the
255
+ # amount of duplicate context details sent in analytics events.
233
256
  # @return [Integer]
234
- # @see #user_keys_flush_interval
257
+ # @see #context_keys_flush_interval
235
258
  #
236
- attr_reader :user_keys_capacity
259
+ attr_reader :context_keys_capacity
237
260
 
238
261
  #
239
- # The interval in seconds at which the event processor will reset its set of known user keys.
262
+ # The interval in seconds at which the event processor will reset its set of known context keys.
240
263
  # @return [Float]
241
- # @see #user_keys_capacity
242
- #
243
- attr_reader :user_keys_flush_interval
244
-
245
- #
246
- # Whether to include full user details in every analytics event. By default, events will only
247
- # include the user key, except for one "index" event that provides the full details for the user.
248
- # The only reason to change this is if you are using the Analytics Data Stream.
249
- # @return [Boolean]
264
+ # @see #context_keys_capacity
250
265
  #
251
- attr_reader :inline_users_in_events
266
+ attr_reader :context_keys_flush_interval
252
267
 
253
268
  #
254
269
  # An object that is responsible for receiving feature flag data from LaunchDarkly. By default,
@@ -268,18 +283,45 @@ module LaunchDarkly
268
283
  #
269
284
  # Configuration options related to Big Segments.
270
285
  #
271
- # Big Segments are a specific type of user segments. For more information, read the LaunchDarkly
286
+ # Big Segments are a specific type of segments. For more information, read the LaunchDarkly
272
287
  # documentation: https://docs.launchdarkly.com/home/users/big-segments
273
288
  #
274
289
  # @return [BigSegmentsConfig]
275
290
  #
276
291
  attr_reader :big_segments
277
292
 
278
- # @deprecated This is replaced by {#data_source}.
279
- attr_reader :update_processor
280
-
281
- # @deprecated This is replaced by {#data_source}.
282
- attr_reader :update_processor_factory
293
+ #
294
+ # An object that allows configuration of application metadata.
295
+ #
296
+ # Application metadata may be used in LaunchDarkly analytics or other product features, but does not affect feature flag evaluations.
297
+ #
298
+ # If you want to set non-default values for any of these fields, provide the appropriately configured hash to the {Config} object.
299
+ #
300
+ # @example Configuring application information
301
+ # opts[:application] = {
302
+ # id: "MY APPLICATION ID",
303
+ # version: "MY APPLICATION VERSION"
304
+ # }
305
+ # config = LDConfig.new(opts)
306
+ #
307
+ # @return [Hash]
308
+ #
309
+ attr_reader :application
310
+
311
+ #
312
+ # LaunchDarkly Server SDKs historically downloaded all flag configuration and segments for a particular environment
313
+ # during initialization.
314
+ #
315
+ # For some customers, this is an unacceptably large amount of data, and has contributed to performance issues within
316
+ # their products.
317
+ #
318
+ # Filtered environments aim to solve this problem. By allowing customers to specify subsets of an environment's
319
+ # flags using a filter key, SDKs will initialize faster and use less memory.
320
+ #
321
+ # This payload filter key only applies to the default streaming and polling data sources. It will not affect TestData or FileData
322
+ # data sources, nor will it be applied to any data source provided through the {#data_source} config property.
323
+ #
324
+ attr_reader :payload_filter_key
283
325
 
284
326
  #
285
327
  # Set to true to opt out of sending diagnostics data.
@@ -395,9 +437,17 @@ module LaunchDarkly
395
437
  10
396
438
  end
397
439
 
440
+ #
441
+ # The default value for {#initial_reconnect_delay}.
442
+ # @return [Float] 1
443
+ #
444
+ def self.default_initial_reconnect_delay
445
+ 1
446
+ end
447
+
398
448
  #
399
449
  # The default value for {#connect_timeout}.
400
- # @return [Float] 10
450
+ # @return [Float] 2
401
451
  #
402
452
  def self.default_connect_timeout
403
453
  2
@@ -409,8 +459,8 @@ module LaunchDarkly
409
459
  #
410
460
  def self.default_logger
411
461
  if defined?(Rails) && Rails.respond_to?(:logger)
412
- Rails.logger
413
- else
462
+ Rails.logger
463
+ else
414
464
  log = ::Logger.new($stdout)
415
465
  log.level = ::Logger::WARN
416
466
  log
@@ -466,18 +516,18 @@ module LaunchDarkly
466
516
  end
467
517
 
468
518
  #
469
- # The default value for {#user_keys_capacity}.
519
+ # The default value for {#context_keys_capacity}.
470
520
  # @return [Integer] 1000
471
521
  #
472
- def self.default_user_keys_capacity
522
+ def self.default_context_keys_capacity
473
523
  1000
474
524
  end
475
525
 
476
526
  #
477
- # The default value for {#user_keys_flush_interval}.
527
+ # The default value for {#context_keys_flush_interval}.
478
528
  # @return [Float] 300
479
529
  #
480
- def self.default_user_keys_flush_interval
530
+ def self.default_context_keys_flush_interval
481
531
  300
482
532
  end
483
533
 
@@ -501,7 +551,7 @@ module LaunchDarkly
501
551
  #
502
552
  # Configuration options related to Big Segments.
503
553
  #
504
- # Big Segments are a specific type of user segments. For more information, read the LaunchDarkly
554
+ # Big Segments are a specific type of segments. For more information, read the LaunchDarkly
505
555
  # documentation: https://docs.launchdarkly.com/home/users/big-segments
506
556
  #
507
557
  # If your application uses Big Segments, you will need to create a `BigSegmentsConfig` that at a
@@ -515,8 +565,8 @@ module LaunchDarkly
515
565
  # client = LaunchDarkly::LDClient.new(my_sdk_key, config)
516
566
  #
517
567
  class BigSegmentsConfig
518
- DEFAULT_USER_CACHE_SIZE = 1000
519
- DEFAULT_USER_CACHE_TIME = 5
568
+ DEFAULT_CONTEXT_CACHE_SIZE = 1000
569
+ DEFAULT_CONTEXT_CACHE_TIME = 5
520
570
  DEFAULT_STATUS_POLL_INTERVAL = 5
521
571
  DEFAULT_STALE_AFTER = 2 * 60
522
572
 
@@ -524,15 +574,15 @@ module LaunchDarkly
524
574
  # Constructor for setting Big Segments options.
525
575
  #
526
576
  # @param store [LaunchDarkly::Interfaces::BigSegmentStore] the data store implementation
527
- # @param user_cache_size [Integer] See {#user_cache_size}.
528
- # @param user_cache_time [Float] See {#user_cache_time}.
577
+ # @param context_cache_size [Integer] See {#context_cache_size}.
578
+ # @param context_cache_time [Float] See {#context_cache_time}.
529
579
  # @param status_poll_interval [Float] See {#status_poll_interval}.
530
580
  # @param stale_after [Float] See {#stale_after}.
531
581
  #
532
- def initialize(store:, user_cache_size: nil, user_cache_time: nil, status_poll_interval: nil, stale_after: nil)
582
+ def initialize(store:, context_cache_size: nil, context_cache_time: nil, status_poll_interval: nil, stale_after: nil)
533
583
  @store = store
534
- @user_cache_size = user_cache_size.nil? ? DEFAULT_USER_CACHE_SIZE : user_cache_size
535
- @user_cache_time = user_cache_time.nil? ? DEFAULT_USER_CACHE_TIME : user_cache_time
584
+ @context_cache_size = context_cache_size.nil? ? DEFAULT_CONTEXT_CACHE_SIZE : context_cache_size
585
+ @context_cache_time = context_cache_time.nil? ? DEFAULT_CONTEXT_CACHE_TIME : context_cache_time
536
586
  @status_poll_interval = status_poll_interval.nil? ? DEFAULT_STATUS_POLL_INTERVAL : status_poll_interval
537
587
  @stale_after = stale_after.nil? ? DEFAULT_STALE_AFTER : stale_after
538
588
  end
@@ -542,14 +592,14 @@ module LaunchDarkly
542
592
  # @return [LaunchDarkly::Interfaces::BigSegmentStore]
543
593
  attr_reader :store
544
594
 
545
- # The maximum number of users whose Big Segment state will be cached by the SDK at any given time.
595
+ # The maximum number of contexts whose Big Segment state will be cached by the SDK at any given time.
546
596
  # @return [Integer]
547
- attr_reader :user_cache_size
597
+ attr_reader :context_cache_size
548
598
 
549
- # The maximum length of time (in seconds) that the Big Segment state for a user will be cached
599
+ # The maximum length of time (in seconds) that the Big Segment state for a context will be cached
550
600
  # by the SDK.
551
601
  # @return [Float]
552
- attr_reader :user_cache_time
602
+ attr_reader :context_cache_time
553
603
 
554
604
  # The interval (in seconds) at which the SDK will poll the Big Segment store to make sure it is
555
605
  # available and to determine how long ago it was updated.