launchdarkly-server-sdk 8.16.0-java → 8.17.0-java

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
  SHA256:
3
- metadata.gz: 25043399c4f7e560c960cc986594ce8b10429ec6eed52b8135118fa275372934
4
- data.tar.gz: 7523588588b501d116d9242879b4e94f47ec572b564f23edbaf9865f2f8a8720
3
+ metadata.gz: 2ae14db1c781b4710d0d0f9487ee7eb0453c81cec33d48deff97ed189fdb864a
4
+ data.tar.gz: d8b6ed68295b5ca5bec082bfe6a638e9b2b840e5d72764ca3e53fd5f347a589e
5
5
  SHA512:
6
- metadata.gz: bfa66ad588f27caf67823547ea121ff78932a3501f3fb8249197a98701a1583a4ab15fd4da879d1d9d712a978ab9f35eab0b0f2ec5a2f6c9eb8086866b8ae0db
7
- data.tar.gz: b29084439f3be12f0119b7b96b378e923de63f0d82418e1050e1b527258f8afb3da1a3b9e58e7b45dc2798be3f849f074ec165d81633cc6b26f26354785c2275
6
+ metadata.gz: 163471afe99cdb36fcba1a63cea9d7ba31cfddaa052684f16e8b0d5f847450fc4e127e88ca6d91244d68c42946d05205cf23b100dc8942ad2406004f2dfcb8c1
7
+ data.tar.gz: 39d3fb3d49c3506130b0cc26c8299867fa30e1c1bb946c8f961cec131b4b2f02f21d3c372bbfa6558ab26ade14ba12a9643a308434400b354b03e2d566eb2da2
@@ -362,6 +362,9 @@ module LaunchDarkly
362
362
  # This payload filter key only applies to the default streaming and polling data sources. It will not affect TestData or FileData
363
363
  # data sources, nor will it be applied to any data source provided through the {#data_source} config property.
364
364
  #
365
+ # Payload filtering is not supported with the FDv2 data system, so this key has no effect on requests made by FDv2
366
+ # data sources.
367
+ #
365
368
  attr_reader :payload_filter_key
366
369
 
367
370
  #
@@ -54,6 +54,11 @@ module LaunchDarkly
54
54
  @config = config
55
55
  @data_system_config = data_system_config
56
56
  @logger = config.logger
57
+
58
+ unless config.payload_filter_key.nil?
59
+ @logger.warn { "[LDClient] Payload filtering is not supported with the FDv2 data system; the configured payload filter has no effect on FDv2 requests" }
60
+ end
61
+
57
62
  @synchronizer_builders = data_system_config.synchronizers || []
58
63
  @fdv1_fallback_synchronizer_builder = data_system_config.fdv1_fallback_synchronizer
59
64
  @disabled = @config.offline?
@@ -4,22 +4,39 @@ require "concurrent/atomics"
4
4
 
5
5
  module LaunchDarkly
6
6
  module Impl
7
+ #
8
+ # Runs a task again and again on a worker thread, with a fixed interval
9
+ # between runs.
10
+ #
11
+ # The worker waits on an event instead of calling `sleep`, so `stop` can
12
+ # wake it at once even if `stop` runs before the worker starts waiting.
13
+ #
14
+ # @private
15
+ #
7
16
  class RepeatingTask
8
17
  attr_reader :name
9
18
 
19
+ #
20
+ # @param interval [Numeric] seconds between the start of one run and the start of the next
21
+ # @param start_delay [Numeric, nil] seconds to wait before the first run
22
+ # @param task [Proc] the code to run
23
+ # @param logger [Logger]
24
+ # @param name [String] the name given to the worker thread
25
+ #
10
26
  def initialize(interval, start_delay, task, logger, name)
11
27
  @interval = interval
12
28
  @start_delay = start_delay
13
29
  @task = task
14
30
  @logger = logger
15
31
  @stopped = Concurrent::AtomicBoolean.new(false)
32
+ @stop_event = Concurrent::Event.new
16
33
  @worker = nil
17
34
  @name = name
18
35
  end
19
36
 
20
37
  def start
21
38
  @worker = Thread.new do
22
- sleep(@start_delay) unless @start_delay.nil? || @start_delay == 0
39
+ @stop_event.wait(@start_delay) unless @start_delay.nil? || @start_delay == 0
23
40
 
24
41
  until @stopped.value do
25
42
  started_at = Time.now
@@ -29,19 +46,23 @@ module LaunchDarkly
29
46
  Impl::Util.log_exception(@logger, "Uncaught exception from repeating task", e)
30
47
  end
31
48
  delta = @interval - (Time.now - started_at)
32
- if delta > 0
33
- sleep(delta)
34
- end
49
+ @stop_event.wait(delta) if delta > 0
35
50
  end
36
51
  end
37
52
 
38
53
  @worker.name = @name
39
54
  end
40
55
 
56
+ #
57
+ # Stops the worker thread and waits for it to finish.
58
+ #
59
+ # This method is safe to call more than once, before `start`, and from
60
+ # inside the task itself.
61
+ #
41
62
  def stop
42
63
  if @stopped.make_true
64
+ @stop_event.set
43
65
  if @worker && @worker.alive? && @worker != Thread.current
44
- @worker.run # causes the thread to wake up if it's currently in a sleep
45
66
  @worker.join
46
67
  end
47
68
  end
@@ -487,7 +487,7 @@ module LaunchDarkly
487
487
  #
488
488
  class FlagRuleBuilder
489
489
  # @api private
490
- FlagRuleClause = Struct.new(:contextKind, :attribute, :op, :values, :negate, keyword_init: true) # rubocop:disable Naming/MethodName:
490
+ FlagRuleClause = Struct.new(:contextKind, :attribute, :op, :values, :negate, keyword_init: true) # rubocop:disable Naming/MethodName
491
491
 
492
492
  # @api private
493
493
  def initialize(flag_builder)
@@ -1,3 +1,3 @@
1
1
  module LaunchDarkly
2
- VERSION = "8.16.0" # x-release-please-version
2
+ VERSION = "8.17.0" # x-release-please-version
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: launchdarkly-server-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.16.0
4
+ version: 8.17.0
5
5
  platform: java
6
6
  authors:
7
7
  - LaunchDarkly
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-09-08 00:00:00.000000000 Z
10
+ date: 2026-09-14 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: aws-sdk-dynamodb