Commit Graph

73932 Commits

Author SHA1 Message Date
Fredrik Adelöw cd8e20d7bb Merge pull request #34314 from backstage/freben/stitch-claim-transaction
Fix stitch queue race: wrap claim in transaction
2026-05-20 10:33:53 +02:00
Fredrik Adelöw 1d10fc41e8 Update changeset and PR description to cover both fix sites
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 09:59:37 +02:00
Fredrik Adelöw dd52890773 Use ternary with await for consistent style and better stack traces
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 09:49:08 +02:00
Fredrik Adelöw 139a784ad4 Skip transaction wrapping when locking is not used
Only wrap the SELECT+UPDATE in a transaction for MySQL/PostgreSQL
where FOR UPDATE SKIP LOCKED is actually used. For sqlite3 the
transaction adds unnecessary BEGIN/COMMIT overhead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 09:44:31 +02:00
Fredrik Adelöw afc872aac6 Fix implicit any types on transaction callback parameters
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 08:06:37 +02:00
Fredrik Adelöw 6713e9fe72 Apply same transaction fix to getProcessableEntities
Same FOR UPDATE SKIP LOCKED race: the processing loop's claim query
had the SELECT and UPDATE as separate auto-committed statements.
The existing caller already wraps in a transaction, but this makes
the function self-protecting if called without one.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-20 00:09:16 +02:00
Fredrik Adelöw f328b6f37e Merge pull request #34316 from backstage/freben/fix-empty-each-tests
fix: correct postgres env var casing in deploy_packages workflow
2026-05-19 23:34:19 +02:00
Fredrik Adelöw 8abfa78e4c Revert eachSupportedId guard — env var fix is sufficient
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 23:23:37 +02:00
Fredrik Adelöw 2c53691962 Fix postgres env var casing in deploy_packages workflow
The env vars used lowercase postgres18/postgres14 instead of uppercase
POSTGRES18/POSTGRES14, which didn't match the names expected by
TestDatabases. This caused all postgres-only test suites to see no
available databases and crash.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 23:21:47 +02:00
Patrik Oldsberg 6733eb1823 Merge pull request #34313 from backstage/worktree-v1.51-release-notes
Add v1.51.0 release notes
2026-05-19 23:21:12 +02:00
Fredrik Adelöw 03f0f3f953 Add changeset
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 23:19:18 +02:00
Fredrik Adelöw 1cbc3241a1 fix(backend-test-utils): prevent suite crash when no databases are available
When eachSupportedId() returned an empty array, describe.each([]) would
throw and crash the entire test suite. Return a placeholder ID instead,
so individual tests fail with a clear error rather than preventing the
entire suite from running.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 23:19:07 +02:00
Fredrik Adelöw 32548ad82c Use .modify() for conditional FOR UPDATE SKIP LOCKED
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 22:33:18 +02:00
Fredrik Adelöw d42f1ab765 Skip wrapping in transaction when caller already provides one
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 22:21:27 +02:00
benjdlambert 757bbfdbae restore changelog links in release notes
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 22:18:27 +02:00
Fredrik Adelöw 774d69884a Wrap stitch queue claim in a transaction to hold row locks
The SELECT FOR UPDATE SKIP LOCKED and the subsequent UPDATE of
next_stitch_at now run inside a single transaction. Previously the
row locks were released after the SELECT auto-committed, allowing
another worker to claim the same rows before the UPDATE ran.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 22:12:59 +02:00
benjdlambert 9683a46b57 address PR review feedback on v1.51.0 release notes
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 21:27:06 +02:00
Ben Lambert cfb9f07c28 Merge pull request #34228 from backstage/changeset-release/master 2026-05-19 21:21:29 +02:00
benjdlambert 82c81085b1 add v1.51.0 release notes
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 20:47:20 +02:00
github-actions[bot] b97fcb0a93 Version Packages 2026-05-19 18:28:24 +00:00
Patrik Oldsberg 0a44fb3cb8 Merge pull request #33895 from ganievs/fix-valkey-cluster-client
fix: use iovalkey Cluster for Valkey cluster mode
2026-05-19 20:14:27 +02:00
Ben Lambert e16b564c6f Merge pull request #34310 from backstage/copilot/copy-commits-from-pr-34066
MCP structured responses, OIDC error improvements, catalog model reference config
2026-05-19 20:12:47 +02:00
benjdlambert 3f5e7ec2b4 Improve MCP safeStringify, OIDC error messages, and catalog model reference config
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 19:27:45 +02:00
Ben Lambert a5a269c27a Merge pull request #34300 from backstage/github-omit-suspended-rest
feat(catalog-backend-module-github): add experimental REST-based suspended user check
2026-05-19 19:19:59 +02:00
Love Kumar Chauhan ca8951ae87 fix(mcp-actions-backend): return structured content and remove markdown formatting in tool responses
This change aligns the MCP tool execution responses with the specification by returning plain text in the 'content' array and providing the raw JSON in a new 'structuredContent' field. It also removes the unnecessary Markdown code block formatting that was previously added to tool results.

Fixes #34052

Signed-off-by: Love Kumar Chauhan <lovechauhan6564@gmail.com>

Co-authored-by: benjdlambert <3645856+benjdlambert@users.noreply.github.com>
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 18:48:50 +02:00
Ben Lambert 381cf2ae10 Merge pull request #34308 from backstage/freben/cached-service-cleanup
Fix cache eviction race in CachedUserInfoService
2026-05-19 18:37:27 +02:00
Ben Lambert 359d5a502f Merge pull request #34016 from backstage/benjdlambert/api-v1beta2-mcp-server 2026-05-19 16:01:11 +02:00
Ben Lambert 484c073be9 Merge pull request #34261 from backstage/session/scheming-finch-ks70 2026-05-19 16:00:41 +02:00
MT Lewis 7c43925d68 feat(catalog-backend-module-github): remove @public tags from non-public github library functions
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-05-19 14:45:34 +01:00
MT Lewis 253c014cc1 feat(catalog-backend-module-github): memoize isGitHubEnterprise check
We should mostly get these for free because of the
GitHub conditional request caching, but this is a
nice safety net and also probably saves us some
time.

Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-05-19 14:45:34 +01:00
MT Lewis 91d7d91317 feat(catalog-backend-module-github): restore previous sequential processing of connection nodes
Keeping this change as minimal as possible for
this first phase, will restore the parallel
processing in a later iteration.

Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-05-19 14:45:33 +01:00
MT Lewis 340977de5e feat(catalog-backend-module-github): rename options_ to wrappedOptions
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-05-19 14:45:33 +01:00
MT Lewis d745f1c39c feat(catalog-backend-module-github): add experimental REST-based suspended user check
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: MT Lewis <mtlewis@users.noreply.github.com>
2026-05-19 14:45:33 +01:00
Fredrik Adelöw 97d3bd4c7b Add changeset for cached service cleanup
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 15:27:22 +02:00
Fredrik Adelöw 4b4a614c5c Guard cache eviction on identity and use createDeferred in test
Only delete the cache entry on error if the map still holds the same
promise, preventing a stale rejection from evicting a newer entry.
Also switch the test to createDeferred for readability.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 15:26:58 +02:00
Fredrik Adelöw 6eacdc036e Merge pull request #34252 from backstage/freben/lazy-permission-user
permission: cache user info, clean up PolicyQueryUser, drop getPluginRequestToken
2026-05-19 15:20:48 +02:00
Patrik Oldsberg 1dbc1543f4 Merge pull request #34299 from backstage/rugvip/nav-item-gone
frontend-plugin-api: remove NavItemBlueprint
2026-05-19 14:44:58 +02:00
Fredrik Adelöw a9f5560b49 Address review feedback: use fake timers and type the shared cache map
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
2026-05-19 14:44:28 +02:00
Ben Lambert f0f6823a66 docs(scaffolder): update form decorators docs for promoted API (#34181)
* docs(scaffolder): update form decorators docs for promoted API

Signed-off-by: benjdlambert <ben@blam.sh>

* docs(scaffolder): address review feedback on form decorators docs

Signed-off-by: benjdlambert <ben@blam.sh>

---------

Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:24:58 +02:00
benjdlambert 3bf3c9d878 chore: remove unnecessary as const assertions
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:44 +02:00
benjdlambert 34e52d13e7 chore: regenerate API reports after rebase
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:35 +02:00
benjdlambert 6d98fcefe0 chore: regenerate API reports
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:35 +02:00
benjdlambert be71476943 chore: rename changeset, remove invalid example entity
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:34 +02:00
benjdlambert a674ec354d refactor: type McpServerApiEntity against ApiEntityV1alpha1
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:34 +02:00
benjdlambert 888955697b refactor: register mcp-server model in ai-model module, remove separate module
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:34 +02:00
benjdlambert 2003dcb4db refactor(catalog-model): move mcp-server model to opt-in backend module
Moves the mcp-server specType registration out of the default catalog
entity model into a separate backend module following the same pattern
as the AiResource module. Types and validators are now alpha exports.

Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:34 +02:00
benjdlambert 2a640474c2 chore: add invalid mcp-server example for validation demo
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:34 +02:00
benjdlambert 664d1da60f refactor(catalog-model): move mcp-server to v1alpha1 specType, drop v1alpha2
Registers mcp-server as a specType on v1alpha1/v1beta1 instead of
introducing a new v1alpha2 apiVersion. Adds addKindVersion to the
builder so separate layers can extend existing kinds.

Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:34 +02:00
benjdlambert 421af6a8d1 chore: add example MCP server API entity
Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:34 +02:00
benjdlambert 8dd6dce9ed feat(catalog-model): add addKindVersion builder method and move v1alpha2 to own layer
Adds addKindVersion to CatalogModelLayerBuilder so layers can add
versions to an existing kind without re-declaring its metadata.
Moves v1alpha2 API registration into ApiEntityV1alpha2.ts as a
separate model layer using the new method.

Signed-off-by: benjdlambert <ben@blam.sh>
2026-05-19 14:15:34 +02:00