1"use strict";(self.webpackChunkbackstage_microsite=self.webpackChunkbackstage_microsite||[]).push([["12301"],{627822(e,a,t){t.r(a),t.d(a,{assets:()=>i,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>n,toc:()=>d});var n=t(912178),s=t(474848),c=t(28453);let l={},r="Release v1.52.0-next.2",i={},d=[{value:"@backstage/[email protected]",id:"backstagebackend-defaults0173-next2",level:2},{value:"Patch Changes",id:"patch-changes",level:3},{value:"@backstage/[email protected]",id:"backstagecore-components01811-next2",level:2},{value:"Patch Changes",id:"patch-changes-1",level:3},{value:"@backstage/[email protected]",id:"backstagecreate-app084-next2",level:2},{value:"Patch Changes",id:"patch-changes-2",level:3},{value:"@backstage/[email protected]",id:"backstageplugin-catalog-backend380-next1",level:2},{value:"Patch Changes",id:"patch-changes-3",level:3},{value:"@backstage/[email protected]",id:"backstageplugin-catalog-backend-module-msgraph0102-next2",level:2},{value:"Patch Changes",id:"patch-changes-4",level:3}];function o(e){let a={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",ul:"ul",...(0,c.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(a.header,{children:(0,s.jsx)(a.h1,{id:"release-v1520-next2",children:"Release v1.52.0-next.2"})}),"\n",(0,s.jsxs)(a.p,{children:["Upgrade Helper: ",(0,s.jsx)(a.a,{href:"https://backstage.github.io/upgrade-helper/?to=1.52.0-next.2",children:"https://backstage.github.io/upgrade-helper/?to=1.52.0-next.2"})]}),"\n",(0,s.jsx)(a.h2,{id:"backstagebackend-defaults0173-next2",children:"@backstage/[email protected]"}),"\n",(0,s.jsx)(a.h3,{id:"patch-changes",children:"Patch Changes"}),"\n",(0,s.jsxs)(a.ul,{children:["\n",(0,s.jsx)(a.li,{children:"89a95ca: Fixed the task worker retry loop to respect the abort signal. Previously, when a task worker encountered an unexpected error, the retry loop would continue indefinitely even after the worker was signaled to stop. The retry loop now checks the abort signal before retrying and passes it to the retry delay, allowing the worker to shut down gracefully."}),"\n"]}),"\n",(0,s.jsx)(a.h2,{id:"backstagecore-components01811-next2",children:"@backstage/[email protected]"}),"\n",(0,s.jsx)(a.h3,{id:"patch-changes-1",children:"Patch Changes"}),"\n",(0,s.jsxs)(a.ul,{children:["\n",(0,s.jsxs)(a.li,{children:["c161e1c: Lazy-load ",(0,s.jsx)(a.code,{children:"react-syntax-highlighter"})," and ",(0,s.jsx)(a.code,{children:"@dagrejs/dagre"})," so they are no longer pulled in eagerly through the barrel export. This reduces the upfront module cost of importing from ",(0,s.jsx)(a.code,{children:"@backstage/core-components"})," by roughly 10 MB. The public API is unchanged."]}),"\n"]}),"\n",(0,s.jsx)(a.h2,{id:"backstagecreate-app084-next2",children:"@backstage/[email protected]"}),"\n",(0,s.jsx)(a.h3,{id:"patch-changes-2",children:"Patch Changes"}),"\n",(0,s.jsxs)(a.ul,{children:["\n",(0,s.jsx)(a.li,{children:"Bumped create-app version."}),"\n"]}),"\n",(0,s.jsx)(a.h2,{id:"backstageplugin-catalog-backend380-next1",children:"@backstage/[email protected]"}),"\n",(0,s.jsx)(a.h3,{id:"patch-changes-3",children:"Patch Changes"}),"\n",(0,s.jsxs)(a.ul,{children:["\n",(0,s.jsxs)(a.li,{children:["9698738: Dropped the legacy ",(0,s.jsx)(a.code,{children:"search_entity_id_idx"})," index which is now redundant with the covering unique index on ",(0,s.jsx)(a.code,{children:"(entity_id, key, value)"}),". The old index caused the query planner to choose an inefficient scan pattern for catalog list queries with multiple sort fields, leading to severely degraded performance on large catalogs."]}),"\n",(0,s.jsxs)(a.li,{children:["ccfa4f1: Optimized ",(0,s.jsx)(a.code,{children:"entitiesBatch"})," on PostgreSQL to use ",(0,s.jsx)(a.code,{children:"= ANY(array)"})," instead of ",(0,s.jsx)(a.code,{children:"WHERE IN ($1, $2, ...)"}),". This produces a single stable query plan regardless of batch size, instead of up to 200 different plans that pollute the query plan cache. On PostgreSQL, batching is no longer needed
1so all entity refs are fetched in a single query."]}),"\n",(0,s.jsxs)(a.li,{children:["24775dc: Added a migration that tunes PostgreSQL automatic vacuum thresholds on the ",(0,s.jsx)(a.code,{children:"search"}),", ",(0,s.jsx)(a.code,{children:"final_entities"}),", ",(0,s.jsx)(a.code,{children:"relations"}),", and ",(0,s.jsx)(a.code,{children:"refresh_state_references"})," tables, and fixes column statistics for ",(0,s.jsx)(a.code,{children:"entity_id"})," in the ",(0,s.jsx)(a.code,{children:"search"})," table. This prevents the query planner from falling back to sequential scans when table maintenance falls behind, keeping catalog queries fast on large installations."]}),"\n"]}),"\n",(0,s.jsx)(a.h2,{id:"backstageplugin-catalog-backend-module-msgraph0102-next2",children:"@backstage/[email protected]"}),"\n",(0,s.jsx)(a.h3,{id:"patch-changes-4",children:"Patch Changes"}),"\n",(0,s.jsxs)(a.ul,{children:["\n",(0,s.jsxs)(a.li,{children:["e6493b9: Fixed a bug where setting ",(0,s.jsx)(a.code,{children:"user.select"})," to an empty array would cause all users to be dropped from the catalog instead of using the default set of fields."]}),"\n"]})]})}function h(e={}){let{wrapper:a}={...(0,c.R)(),...e.components};return a?(0,s.jsx)(a,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},28453(e,a,t){t.d(a,{R:()=>l,x:()=>r});var n=t(296540);let s={},c=n.createContext(s);function l(e){let a=n.useContext(c);return n.useMemo(function(){return"function"==typeof e?e(a):{...a,...e}},[a,e])}function r(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),n.createElement(c.Provider,{value:a},e.children)}},912178(e){e.exports=JSON.parse('{"id":"releases/v1.52.0-next.2-changelog","title":"Release v1.52.0-next.2","description":"Upgrade Helper//backstage.github.io/upgrade-helper/?to=1.52.0-next.2","source":"@site/versioned_docs/version-stable/releases/v1.52.0-next.2-changelog.md","sourceDirName":"releases","slug":"/releases/v1.52.0-next.2-changelog","permalink":"/docs/releases/v1.52.0-next.2-changelog","draft":false,"unlisted":false,"editUrl":"https://github.com/backstage/backstage/edit/master/docs/releases/v1.52.0-next.2-changelog.md","tags":[],"version":"stable","frontMatter":{}}')}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.