From 556e230d537b60dca5c580f624fad2ae19097e13 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Tue, 3 Jun 2025 14:30:05 -0300 Subject: [PATCH 1/2] Enhance proxy fallback handling --- CHANGES.txt | 3 +++ package-lock.json | 4 ++-- package.json | 2 +- src/sync/polling/fetchers/splitChangesFetcher.ts | 4 ++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 499e296f..0d91bba4 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,6 @@ +2.4.1 (June 3, 2025) + - Bugfix - Enhanced the Proxy fallback to flag spec version 1.2 to support some Fetch API implementations that might fail to handle Proxy 400 responses. + 2.4.0 (May 27, 2025) - Added support for rule-based segments. These segments determine membership at runtime by evaluating their configured rules against the user attributes provided to the SDK. - Added support for feature flag prerequisites. This allows customers to define dependency conditions between flags, which are evaluated before any allowlists or targeting rules. diff --git a/package-lock.json b/package-lock.json index afd5917c..ea4ce2f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@splitsoftware/splitio-commons", - "version": "2.4.0", + "version": "2.4.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@splitsoftware/splitio-commons", - "version": "2.4.0", + "version": "2.4.1", "license": "Apache-2.0", "dependencies": { "@types/ioredis": "^4.28.0", diff --git a/package.json b/package.json index 60d02afa..27b15da2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-commons", - "version": "2.4.0", + "version": "2.4.1", "description": "Split JavaScript SDK common components", "main": "cjs/index.js", "module": "esm/index.js", diff --git a/src/sync/polling/fetchers/splitChangesFetcher.ts b/src/sync/polling/fetchers/splitChangesFetcher.ts index 79fd971c..381de5ff 100644 --- a/src/sync/polling/fetchers/splitChangesFetcher.ts +++ b/src/sync/polling/fetchers/splitChangesFetcher.ts @@ -40,9 +40,9 @@ export function splitChangesFetcherFactory(fetchSplitChanges: IFetchSplitChanges } let splitsPromise = fetchSplitChanges(since, noCache, till, settings.sync.flagSpecVersion === FLAG_SPEC_VERSION ? rbSince : undefined) - // Handle proxy error with spec 1.3 .catch((err) => { - if (err.statusCode === 400 && sdkEndpointOverridden(settings) && settings.sync.flagSpecVersion === FLAG_SPEC_VERSION) { + // Handle proxy error with spec 1.3 + if ((!err.statusCode || err.statusCode === 400) && sdkEndpointOverridden(settings) && settings.sync.flagSpecVersion === FLAG_SPEC_VERSION) { log.error(LOG_PREFIX_SYNC_SPLITS + 'Proxy error detected. Retrying with spec 1.2. If you are using Split Proxy, please upgrade to latest version'); lastProxyCheckTimestamp = Date.now(); settings.sync.flagSpecVersion = '1.2'; // fallback to 1.2 spec From 2fffacb774f85d7e2d80e41b0b80670aba23b0d5 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Tue, 3 Jun 2025 14:37:54 -0300 Subject: [PATCH 2/2] Update changelog entry --- CHANGES.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 0d91bba4..47faaa87 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,5 +1,5 @@ 2.4.1 (June 3, 2025) - - Bugfix - Enhanced the Proxy fallback to flag spec version 1.2 to support some Fetch API implementations that might fail to handle Proxy 400 responses. + - Bugfix - Improved the Proxy fallback to flag spec version 1.2 to handle cases where the Proxy does not return an end-of-stream marker in 400 status code responses. 2.4.0 (May 27, 2025) - Added support for rule-based segments. These segments determine membership at runtime by evaluating their configured rules against the user attributes provided to the SDK.