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 Mar 13, 2026
Conversation
This was referenced Mar 11, 2026
Merged
There was a problem hiding this comment.
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.
0a9cb23 to
5c3ca6a
Compare
kinyoklion
reviewed
Mar 12, 2026
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.
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, |
5c3ca6a to
a1be441
Compare
aaron-zeisler
commented
Mar 12, 2026
a1be441 to
34be015
Compare
… 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.
34be015 to
1453461
Compare
kinyoklion
approved these changes
Mar 13, 2026
Member
kinyoklion
left a comment
There was a problem hiding this comment.
I do think, in the longer-term, we may want a better way to evolve tags, but that this will work.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 atag-prefix, so the crawl couldn't match new releases. Added the correcttag-prefixto 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 thatrepos.jsonalways points to the current canonical repository. UsedINSERT ... ON CONFLICT DO NOTHINGonsdk_reposto 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-prefixto cached metadata forlaunchdarkly_java-core,launchdarkly_react-client-sdk, andlaunchdarkly_vue-client-sdk, plus newbackfill/entries marked"same-repo": trueto capture legacy unprefixed tags.Updates
scripts/crawl.shto run backfills in two phases (old-repo first, same-repo second) and to only skip repos during the main crawl when the backfill is notsame-repo. The ingest pipeline is hardened by ignoring duplicatesdk_reposinserts (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.