posthog-ruby 3.15.1 → 3.15.2
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 +4 -4
- data/lib/posthog/feature_flags.rb +23 -6
- data/lib/posthog/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 87c4c21f1799cc12f7e4792f728194091a4e3abfe28fa26315469c43cbefd6ba
|
|
4
|
+
data.tar.gz: 4fa4b2455dcf53c3e805616af1e5eb5ae266729f90832f4c4491147c6626f71d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b1fce8fb104ff14b8564649222d729fdd6feda8d3382119eee8c034663108edb972932aaee7d17de6d87911816986e55236a554ce19ba107e032bc04f4fdab7d
|
|
7
|
+
data.tar.gz: b95fecee03f14f695410f76230e8e1284286c4835cd8f4c2ef66779fc57a27bda7e7c3e892a989207ebd85d1f9531a6034a041dade066d776707ae03c7227661
|
|
@@ -36,8 +36,9 @@ module PostHog
|
|
|
36
36
|
# @param feature_flag_request_timeout_seconds [Integer] Timeout for feature flag requests.
|
|
37
37
|
# @param on_error [Proc, nil] Callback invoked as `on_error.call(status, error)`.
|
|
38
38
|
# @param flag_definition_cache_provider [Object, nil] Optional {FlagDefinitionCacheProvider} implementation.
|
|
39
|
-
# @param feature_flag_request_max_retries [Integer, nil] Retries after a transient network error
|
|
40
|
-
# request. Defaults to {Defaults::FeatureFlags::FLAG_REQUEST_MAX_RETRIES}.
|
|
39
|
+
# @param feature_flag_request_max_retries [Integer, nil] Retries after a transient network error or retryable
|
|
40
|
+
# HTTP response status on a flag request. Defaults to {Defaults::FeatureFlags::FLAG_REQUEST_MAX_RETRIES}.
|
|
41
|
+
# Set to 0 to disable retrying.
|
|
41
42
|
def initialize(
|
|
42
43
|
polling_interval,
|
|
43
44
|
personal_api_key,
|
|
@@ -1234,7 +1235,12 @@ module PostHog
|
|
|
1234
1235
|
data['token'] = @project_api_key
|
|
1235
1236
|
req.body = data.to_json
|
|
1236
1237
|
|
|
1237
|
-
_request(
|
|
1238
|
+
_request(
|
|
1239
|
+
uri,
|
|
1240
|
+
req,
|
|
1241
|
+
@feature_flag_request_timeout_seconds,
|
|
1242
|
+
retry_status_codes: RETRYABLE_FLAGS_REQUEST_STATUS_CODES
|
|
1243
|
+
)
|
|
1238
1244
|
end
|
|
1239
1245
|
|
|
1240
1246
|
def _request_remote_config_payload(flag_key)
|
|
@@ -1256,14 +1262,15 @@ module PostHog
|
|
|
1256
1262
|
Errno::ECONNRESET,
|
|
1257
1263
|
EOFError
|
|
1258
1264
|
].freeze
|
|
1265
|
+
RETRYABLE_FLAGS_REQUEST_STATUS_CODES = [502, 504].freeze
|
|
1259
1266
|
|
|
1260
|
-
def _request(uri, request_object, timeout = nil, include_etag: false)
|
|
1267
|
+
def _request(uri, request_object, timeout = nil, include_etag: false, retry_status_codes: [])
|
|
1261
1268
|
request_object['User-Agent'] = "posthog-ruby/#{PostHog::VERSION}"
|
|
1262
1269
|
request_timeout = timeout || 10
|
|
1263
1270
|
backoff_policy = nil
|
|
1264
1271
|
attempts = 0
|
|
1265
1272
|
|
|
1266
|
-
|
|
1273
|
+
loop do
|
|
1267
1274
|
attempts += 1
|
|
1268
1275
|
Net::HTTP.start(
|
|
1269
1276
|
uri.hostname,
|
|
@@ -1277,6 +1284,16 @@ module PostHog
|
|
|
1277
1284
|
status_code = res.code.to_i
|
|
1278
1285
|
etag = include_etag ? res['ETag'] : nil
|
|
1279
1286
|
|
|
1287
|
+
if retry_status_codes.include?(status_code) && attempts <= @feature_flag_request_max_retries
|
|
1288
|
+
backoff_policy ||= BackoffPolicy.new
|
|
1289
|
+
interval = backoff_policy.next_interval.to_f / 1000
|
|
1290
|
+
logger.debug(
|
|
1291
|
+
"Retrying request to #{_mask_tokens_in_url(uri.to_s)} after HTTP #{status_code} (attempt #{attempts})"
|
|
1292
|
+
)
|
|
1293
|
+
sleep(interval)
|
|
1294
|
+
next
|
|
1295
|
+
end
|
|
1296
|
+
|
|
1280
1297
|
# Handle 304 Not Modified - return special response indicating no change
|
|
1281
1298
|
if status_code == 304
|
|
1282
1299
|
logger.debug("#{request_object.method} #{_mask_tokens_in_url(uri.to_s)} returned 304 Not Modified")
|
|
@@ -1304,7 +1321,7 @@ module PostHog
|
|
|
1304
1321
|
interval = backoff_policy.next_interval.to_f / 1000
|
|
1305
1322
|
logger.debug("Retrying request to #{_mask_tokens_in_url(uri.to_s)} after #{e.class} (attempt #{attempts})")
|
|
1306
1323
|
sleep(interval)
|
|
1307
|
-
|
|
1324
|
+
next
|
|
1308
1325
|
end
|
|
1309
1326
|
logger.debug("Unable to complete request to #{_mask_tokens_in_url(uri.to_s)}")
|
|
1310
1327
|
raise
|
data/lib/posthog/version.rb
CHANGED