Skip to content

fix: Release collection issues for java-core (Java Server SDK), react-client-sdk, and vue-client-sdk#366

Merged
aaron-zeisler merged 5 commits intomainfrom
aaronz/SDK-2015/release-collection-issues
Mar 13, 2026
Merged

fix: Release collection issues for java-core (Java Server SDK), react-client-sdk, and vue-client-sdk#366
aaron-zeisler merged 5 commits intomainfrom
aaronz/SDK-2015/release-collection-issues

Conversation

@aaron-zeisler
Copy link
Contributor

@aaron-zeisler aaron-zeisler commented Mar 11, 2026

Summary

I was working w/ Ember from the docs team, helping her find a way to integrate with sdk-meta in order to populate the "Supported Versions" page programmatically. After she integrated with the javascript library this repository publishes, she found that the latest versions reported for java-server-sdk and react-client-sdk don't align with the actual most recent versions.

I investigated and found that those repositories started adding prefixes to the release tags, and the last version before using prefixes is what sdk-meta is reporting as the most recent version. I also found that the vue-client-sdk had the same issue.

This pull request fixes the issues around switching to prefixed release tags.

  • Draft releases and releases without dates: Filtered out draft releases and releases missing a publish date to avoid ingesting incomplete data. While I was testing locally, I ran into an error, and a draft release (with no release date) was causing the problem.

  • Missing releases due to tag-prefix: The java-core, react-client-sdk, and vue-client-sdk repos switched to prefixed release tags (e.g. launchdarkly-java-server-sdk-7.8.0) but their metadata didn't specify a tag-prefix, so the crawl couldn't match new releases. Added the correct tag-prefix to each repo's cached metadata.

  • Same-repo backfill: When a repo changes its tag format, old unprefixed releases and new prefixed releases coexist in the same repo. Added support for same-repo backfill files ("same-repo": true) so the crawl ingests both tag formats. The crawl now runs in three ordered phases — old-repo backfills first, same-repo backfills second, then the main crawl — so that repos.json always points to the current canonical repository. Used INSERT ... ON CONFLICT DO NOTHING on sdk_repos to allow an SDK to be associated with multiple repositories without conflicts.

How I tested this

I was able to test this on my local development machine. I had to temporarily comment out the parts that retrieve the metadata files from the separate repositories. I instead used the cached versions in the /metadata directory. I verified that everything in repos.json and releases.json looked better after the changes.

Related pull requests


Note

Medium Risk
Moderate risk because it changes the crawl/ingest ordering and skip logic, which can affect which repos and releases end up in generated products. Changes are localized to metadata ingestion and add safeguards for bad release data (drafts/missing dates).

Overview
Fixes release ingestion for repos that switched to prefixed tags by adding releases.tag-prefix to cached metadata for launchdarkly_java-core, launchdarkly_react-client-sdk, and launchdarkly_vue-client-sdk, plus new backfill/ entries marked "same-repo": true to capture legacy unprefixed tags.

Updates scripts/crawl.sh to run backfills in two phases (old-repo first, same-repo second) and to only skip repos during the main crawl when the backfill is not same-repo. The ingest pipeline is hardened by ignoring duplicate sdk_repos inserts (ON CONFLICT DO NOTHING) and by filtering out draft/undated GitHub releases during release parsing.

Written by Cursor Bugbot for commit 1453461. This will update automatically on new commits. Configure here.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

@aaron-zeisler aaron-zeisler force-pushed the aaronz/SDK-2015/release-collection-issues branch from 0a9cb23 to 5c3ca6a Compare March 11, 2026 18:08
As I was trying to run the crawler on my development computer, I was
running to an error while the "ingest" tool was running. The error
was "invalid date for v10.2.0" on the Swift SDK. This specific
version is a draft release, which means it does not yet have a
publishedDate.

I've updated the code so releases that draft releases and any releases
without a date are excluded from processing.
@aaron-zeisler
Copy link
Contributor Author

Here's the diff of the SQL that will be applied after these changes:

1471a1472,1477
> INSERT INTO sdk_releases VALUES('java-server-sdk',7,10,0,'2025-06-30T13:46:45Z');
> INSERT INTO sdk_releases VALUES('java-server-sdk',7,10,1,'2025-06-30T14:28:43Z');
> INSERT INTO sdk_releases VALUES('java-server-sdk',7,10,2,'2025-08-26T19:34:34Z');
> INSERT INTO sdk_releases VALUES('java-server-sdk',7,11,0,'2026-02-04T22:05:29Z');
> INSERT INTO sdk_releases VALUES('java-server-sdk',7,12,0,'2026-02-12T21:14:37Z');
> INSERT INTO sdk_releases VALUES('java-server-sdk',7,13,0,'2026-03-12T15:34:55Z');
1478a1485,1487
> INSERT INTO sdk_releases VALUES('java-server-sdk',7,8,0,'2025-05-09T19:32:50Z');
> INSERT INTO sdk_releases VALUES('java-server-sdk',7,9,0,'2025-05-23T15:41:52Z');
> INSERT INTO sdk_releases VALUES('java-server-sdk',7,9,1,'2025-06-25T14:38:24Z');
2057a2067,2074
> INSERT INTO sdk_releases VALUES('react-client-sdk',3,4,0,'2024-08-05T15:48:37Z');
> INSERT INTO sdk_releases VALUES('react-client-sdk',3,5,0,'2024-10-18T17:47:59Z');
> INSERT INTO sdk_releases VALUES('react-client-sdk',3,6,0,'2024-11-04T16:35:16Z');
> INSERT INTO sdk_releases VALUES('react-client-sdk',3,6,1,'2025-01-30T18:53:06Z');
> INSERT INTO sdk_releases VALUES('react-client-sdk',3,7,0,'2025-05-14T18:28:14Z');
> INSERT INTO sdk_releases VALUES('react-client-sdk',3,8,0,'2025-05-29T20:17:48Z');
> INSERT INTO sdk_releases VALUES('react-client-sdk',3,8,1,'2025-05-30T19:58:47Z');
> INSERT INTO sdk_releases VALUES('react-client-sdk',3,9,0,'2025-09-30T16:50:53Z');
2728a2746,2751
> INSERT INTO sdk_releases VALUES('vue',2,2,1,'2024-08-05T15:58:11Z');
> INSERT INTO sdk_releases VALUES('vue',2,2,2,'2024-08-05T16:08:33Z');
> INSERT INTO sdk_releases VALUES('vue',2,3,0,'2024-10-18T21:23:42Z');
> INSERT INTO sdk_releases VALUES('vue',2,3,1,'2025-04-30T21:08:20Z');
> INSERT INTO sdk_releases VALUES('vue',2,4,0,'2025-05-30T18:14:11Z');
> INSERT INTO sdk_releases VALUES('vue',2,4,1,'2025-05-30T20:04:23Z');

and here's the diff of the products/releases.json file:

diff --git a/products/releases.json b/products/releases.json
index fc91810..45fd60d 100644
--- a/products/releases.json
+++ b/products/releases.json
@@ -1692,11 +1692,47 @@
     }
   ],
   "java-server-sdk": [
+    {
+      "major": 7,
+      "minor": 13,
+      "date": "2026-03-12T15:34:55Z",
+      "eol": null
+    },
+    {
+      "major": 7,
+      "minor": 12,
+      "date": "2026-02-12T21:14:37Z",
+      "eol": "2027-03-12T00:00:00Z"
+    },
+    {
+      "major": 7,
+      "minor": 11,
+      "date": "2026-02-04T22:05:29Z",
+      "eol": "2027-02-12T00:00:00Z"
+    },
+    {
+      "major": 7,
+      "minor": 10,
+      "date": "2025-06-30T13:46:45Z",
+      "eol": "2027-02-04T00:00:00Z"
+    },
+    {
+      "major": 7,
+      "minor": 9,
+      "date": "2025-05-23T15:41:52Z",
+      "eol": "2026-06-30T00:00:00Z"
+    },
+    {
+      "major": 7,
+      "minor": 8,
+      "date": "2025-05-09T19:32:50Z",
+      "eol": "2026-05-23T00:00:00Z"
+    },
     {
       "major": 7,
       "minor": 7,
       "date": "2025-01-22T16:52:45Z",
-      "eol": null
+      "eol": "2026-05-09T00:00:00Z"
     },
     {
       "major": 7,
@@ -3122,11 +3158,47 @@
     }
   ],
   "react-client-sdk": [
+    {
+      "major": 3,
+      "minor": 9,
+      "date": "2025-09-30T16:50:53Z",
+      "eol": null
+    },
+    {
+      "major": 3,
+      "minor": 8,
+      "date": "2025-05-29T20:17:48Z",
+      "eol": "2026-09-30T00:00:00Z"
+    },
+    {
+      "major": 3,
+      "minor": 7,
+      "date": "2025-05-14T18:28:14Z",
+      "eol": "2026-05-29T00:00:00Z"
+    },
+    {
+      "major": 3,
+      "minor": 6,
+      "date": "2024-11-04T16:35:16Z",
+      "eol": "2026-05-14T00:00:00Z"
+    },
+    {
+      "major": 3,
+      "minor": 5,
+      "date": "2024-10-18T17:47:59Z",
+      "eol": "2025-11-04T00:00:00Z"
+    },
+    {
+      "major": 3,
+      "minor": 4,
+      "date": "2024-08-05T15:48:37Z",
+      "eol": "2025-10-18T00:00:00Z"
+    },
     {
       "major": 3,
       "minor": 3,
       "date": "2024-05-23T21:53:04Z",
-      "eol": null
+      "eol": "2025-08-05T00:00:00Z"
     },
     {
       "major": 3,
@@ -4596,11 +4668,23 @@
     }
   ],
   "vue": [
+    {
+      "major": 2,
+      "minor": 4,
+      "date": "2025-05-30T18:14:11Z",
+      "eol": null
+    },
+    {
+      "major": 2,
+      "minor": 3,
+      "date": "2024-10-18T21:23:42Z",
+      "eol": "2026-05-30T00:00:00Z"
+    },
     {
       "major": 2,
       "minor": 2,
       "date": "2024-05-01T21:55:21Z",
-      "eol": null
+      "eol": "2025-10-18T00:00:00Z"
     },
     {
       "major": 2,

@aaron-zeisler aaron-zeisler force-pushed the aaronz/SDK-2015/release-collection-issues branch from 5c3ca6a to a1be441 Compare March 12, 2026 18:05
@aaron-zeisler aaron-zeisler force-pushed the aaronz/SDK-2015/release-collection-issues branch from a1be441 to 34be015 Compare March 12, 2026 22:20
… format

Repos that switched from unprefixed to prefixed release tags need
both tag formats ingested. Backfill files with "skip": false are
still processed by the main crawl. INSERT OR IGNORE on sdk_repos
and sdk_releases prevents conflicts between the two passes.
@aaron-zeisler aaron-zeisler force-pushed the aaronz/SDK-2015/release-collection-issues branch from 34be015 to 1453461 Compare March 12, 2026 22:30
Copy link
Member

@kinyoklion kinyoklion left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do think, in the longer-term, we may want a better way to evolve tags, but that this will work.

@aaron-zeisler aaron-zeisler merged commit 5f08dcf into main Mar 13, 2026
7 checks passed
@aaron-zeisler aaron-zeisler deleted the aaronz/SDK-2015/release-collection-issues branch March 13, 2026 16:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants