splitclient-rb 8.11.0.pre.rc2-java → 8.11.1.pre.beta1-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: 3a2782e6eb0c794db92a6ce250bc1ba59fc26d6d175890a10ff52bc1e9140988
4
- data.tar.gz: 5abd2c9f8b6e59771146559bb3b4542a83c8a7ee12bb59da893492c1f89bc22d
3
+ metadata.gz: 91de48719fc97eb68e981de8723b662c12a1f17901b3d7824656b28e15b9d280
4
+ data.tar.gz: 29093048e75b06ee0f9e0571e334e6e138daf75264bd005324b1d5ca9f315bee
5
5
  SHA512:
6
- metadata.gz: 29f9bb03ad89ee9c5cdd349cd97110c518bf43e22d2638a515ce7c950f89689139405604d7f17519e57f11e0d804717397f547debe744273ee7322d99f977ddb
7
- data.tar.gz: 5d85ab2d0146f3de0f2b25df5b111a532db02ac4001a08ec1f747f899bf243e90362d89cfad5cb38c4335ef694ee39e336d9bdda50cee9d31595577b750b875c
6
+ metadata.gz: 98cfd22217681674d5d800030231bd286488041bfc7c91b35ed86cbbed67f1dcdf3ca9f25c5035e7a163d0a3a94986efd61d405e1e6e8545df87dc444422e01c
7
+ data.tar.gz: 22dec0083c54840c07cced8de89adce7f42db2a25fbf268e25129044215ff872e2c78da5e49a0646af1cc5f8a32a64b00886b3705e3d2b5a7fcb9a2f4e68a3b7
data/CHANGES.txt CHANGED
@@ -1,5 +1,10 @@
1
1
  CHANGES
2
2
 
3
+ 8.11.0 (Mar, 12, 2026)
4
+ - Added the ability to listen to different events triggered by the SDK. Read more in our docs.
5
+ - SDK_UPDATE notify when a flag or user segment has changed
6
+ - SDK_READY notify when the SDK is ready to evaluate
7
+
3
8
  8.10.1 (Jan 28, 2025)
4
9
  - Fixed rule-based segment matcher to exit when a conition is met.
5
10
  - Fixed impressions properties format in redis mode.
data/LICENSE CHANGED
@@ -157,7 +157,7 @@ Apache License
157
157
  file or class name and description of purpose be included on the
158
158
  same "printed page" as the copyright notice for easier
159
159
  identification within third-party archives.
160
- Copyright [yyyy] [name of copyright owner]
160
+ Copyright 2025 Harness Corporation
161
161
  Licensed under the Apache License, Version 2.0 (the "License");
162
162
  you may not use this file except in compliance with the License.
163
163
  You may obtain a copy of the License at
@@ -4,8 +4,6 @@ module SplitIoClient
4
4
  module Engine
5
5
  module Events
6
6
  class EventsManager
7
- include SplitIoClient::Engine::Models
8
-
9
7
  def initialize(events_manager_config, events_delivery, config)
10
8
  @manager_config = events_manager_config
11
9
  @events_delivery = events_delivery
@@ -20,15 +18,15 @@ module SplitIoClient
20
18
 
21
19
  @mutex.synchronize do
22
20
  # SDK ready already fired
23
- if sdk_event == SdkEvent::SDK_READY && event_already_triggered(sdk_event)
24
- @active_subscriptions[sdk_event] = EventActiveSubscriptions.new(true, event_handler)
21
+ if sdk_event == Engine::Models::SdkEvent::SDK_READY && event_already_triggered(sdk_event)
22
+ @active_subscriptions[sdk_event] = Engine::Models::EventActiveSubscriptions.new(true, event_handler)
25
23
  @config.logger.debug('EventsManager: Firing SDK_READY event for new subscription') if @config.debug_enabled
26
24
  fire_sdk_event(sdk_event, nil)
27
25
  return
28
26
  end
29
27
 
30
28
  @config.logger.debug("EventsManager: Register event: #{sdk_event}") if @config.debug_enabled
31
- @active_subscriptions[sdk_event] = EventActiveSubscriptions.new(false, event_handler)
29
+ @active_subscriptions[sdk_event] = Engine::Models::EventActiveSubscriptions.new(false, event_handler)
32
30
  end
33
31
  end
34
32
 
@@ -52,7 +50,7 @@ module SplitIoClient
52
50
  # if client is not subscribed to SDK_READY
53
51
  if check_if_register_needed(sorted_event)
54
52
  @config.logger.debug('EventsManager: Registering SDK_READY event as fired') if @config.debug_enabled
55
- @active_subscriptions[SdkEvent::SDK_READY] = EventActiveSubscriptions.new(true, nil)
53
+ @active_subscriptions[Engine::Models::SdkEvent::SDK_READY] = Engine::Models::EventActiveSubscriptions.new(true, nil)
56
54
  end
57
55
  end
58
56
  end
@@ -68,7 +66,7 @@ module SplitIoClient
68
66
  private
69
67
 
70
68
  def check_if_register_needed(sorted_event)
71
- sorted_event == SdkEvent::SDK_READY &&
69
+ sorted_event == Engine::Models::SdkEvent::SDK_READY &&
72
70
  get_event_handler(sorted_event).nil? &&
73
71
  !@active_subscriptions.include?(sorted_event)
74
72
  end
@@ -112,7 +110,7 @@ module SplitIoClient
112
110
  end
113
111
 
114
112
  def get_sdk_event_if_applicable(sdk_internal_event)
115
- final_sdk_event = ValidSdkEvent.new(nil, false)
113
+ final_sdk_event = Engine::Models::ValidSdkEvent.new(nil, false)
116
114
 
117
115
  events_to_fire = []
118
116
  require_any_sdk_event = check_require_any(sdk_internal_event)
@@ -120,7 +118,7 @@ module SplitIoClient
120
118
  if (!event_already_triggered(require_any_sdk_event.sdk_event) &&
121
119
  execution_limit(require_any_sdk_event.sdk_event) == 1) ||
122
120
  execution_limit(require_any_sdk_event.sdk_event) == -1
123
- final_sdk_event = ValidSdkEvent.new(
121
+ final_sdk_event = Engine::Models::ValidSdkEvent.new(
124
122
  require_any_sdk_event.sdk_event,
125
123
  check_prerequisites(require_any_sdk_event.sdk_event) &&
126
124
  check_suppressed_by(require_any_sdk_event.sdk_event)
@@ -180,10 +178,10 @@ module SplitIoClient
180
178
  end
181
179
 
182
180
  def check_require_any(sdk_internal_event)
183
- valid_sdk_event = ValidSdkEvent.new(nil, false)
181
+ valid_sdk_event = Engine::Models::ValidSdkEvent.new(nil, false)
184
182
  @manager_config.require_any.each do |name, val|
185
183
  if val.include?(sdk_internal_event)
186
- valid_sdk_event = ValidSdkEvent.new(name, true)
184
+ valid_sdk_event = Engine::Models::ValidSdkEvent.new(name, true)
187
185
  return valid_sdk_event
188
186
  end
189
187
  end
@@ -40,7 +40,7 @@ module SplitIoClient
40
40
  break if matched
41
41
  end
42
42
 
43
- @logger.debug("[InRuleSegmentMatcher] #{@segment_name} is in rule based segment -> #{matched}")
43
+ @config.logger.debug("[InRuleSegmentMatcher] #{@segment_name} is in rule based segment -> #{matched}") if @config.debug_enabled
44
44
  matched
45
45
  end
46
46
 
@@ -6,14 +6,8 @@ module SplitIoClient
6
6
  SYNC_MODE_STREAMING = 0
7
7
  SYNC_MODE_POLLING = 1
8
8
 
9
- def initialize(config,
10
- synchronizer,
11
- telemetry_runtime_producer,
12
- telemetry_synchronizer,
13
- status_manager,
14
- sse_handler,
15
- push_manager,
16
- status_queue)
9
+ def initialize(config, synchronizer, telemetry_runtime_producer, telemetry_synchronizer,
10
+ status_manager, sse_handler, push_manager, status_queue)
17
11
  @config = config
18
12
  @synchronizer = synchronizer
19
13
  @telemetry_runtime_producer = telemetry_runtime_producer
@@ -23,6 +17,7 @@ module SplitIoClient
23
17
  @push_manager = push_manager
24
18
  @status_queue = status_queue
25
19
  @sse_connected = Concurrent::AtomicBoolean.new(false)
20
+ @back_off = Engine::BackOff.new(1, 3)
26
21
  end
27
22
 
28
23
  def start
@@ -119,7 +114,7 @@ module SplitIoClient
119
114
  end
120
115
 
121
116
  def process_disconnect(reconnect)
122
- unless @sse_connected.value
117
+ unless @sse_connected.value || reconnect
123
118
  @config.logger.debug('Streaming already disconnected.') if @config.debug_enabled
124
119
  return
125
120
  end
@@ -130,6 +125,9 @@ module SplitIoClient
130
125
  record_telemetry(Telemetry::Domain::Constants::SYNC_MODE, SYNC_MODE_POLLING)
131
126
 
132
127
  if reconnect
128
+ wait_interval = @back_off.interval
129
+ @config.logger.debug("Retrying streaming connection in: #{wait_interval} seconds")
130
+ sleep(wait_interval)
133
131
  @push_manager.stop_sse
134
132
  @synchronizer.sync_all
135
133
  @push_manager.start_sse
@@ -155,6 +153,7 @@ module SplitIoClient
155
153
 
156
154
  case status
157
155
  when Constants::PUSH_CONNECTED
156
+ @back_off.reset
158
157
  process_connected
159
158
  when Constants::PUSH_RETRYABLE_ERROR
160
159
  process_disconnect(true)
@@ -86,7 +86,7 @@ module SplitIoClient
86
86
  end
87
87
 
88
88
  def connect_stream(latch)
89
- return Constants::PUSH_NONRETRYABLE_ERROR unless socket_write(latch)
89
+ return Constants::PUSH_RETRYABLE_ERROR unless socket_write(latch)
90
90
  while connected? || @first_event.value
91
91
  begin
92
92
  if IO.select([@socket], nil, nil, @read_timeout)
@@ -1,3 +1,3 @@
1
1
  module SplitIoClient
2
- VERSION = '8.11.0-rc2'
2
+ VERSION = '8.11.1-beta1'
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: splitclient-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.11.0.pre.rc2
4
+ version: 8.11.1.pre.beta1
5
5
  platform: java
6
6
  authors:
7
7
  - Split Software
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-03-11 00:00:00.000000000 Z
10
+ date: 2026-07-16 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: allocation_stats