@backstage/plugin-catalog-backend 1.14.0 → 1.15.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,44 @@
1
1
  # @backstage/plugin-catalog-backend
2
2
 
3
+ ## 1.15.0-next.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8d756968f9: Introduce a new optional config parameter `catalog.stitchingStrategy.mode`,
8
+ which can have the values `'immediate'` (default) and `'deferred'`. The default
9
+ is for stitching to work as it did before this change, which means that it
10
+ happens "in-band" (blocking) immediately when each processing task finishes.
11
+ When set to `'deferred'`, stitching is instead deferred to happen on a separate
12
+ asynchronous worker queue just like processing.
13
+
14
+ Deferred stitching should make performance smoother when ingesting large amounts
15
+ of entities, and reduce p99 processing times and repeated over-stitching of
16
+ hot spot entities when fan-out/fan-in in terms of relations is very large. It
17
+ does however also come with some performance cost due to the queuing with how
18
+ much wall-clock time some types of task take.
19
+
20
+ ### Patch Changes
21
+
22
+ - 6694b369a3: Update the OpenAPI spec with more complete error responses and request bodies using Optic. Also, updates the test cases to use the new `supertest` pass through from `@backstage/backend-openapi-utils`.
23
+ - Updated dependencies
24
+ - @backstage/backend-openapi-utils@0.1.0-next.0
25
+ - @backstage/backend-common@0.19.9-next.0
26
+ - @backstage/integration@1.7.1
27
+ - @backstage/backend-plugin-api@0.6.7-next.0
28
+ - @backstage/backend-tasks@0.5.12-next.0
29
+ - @backstage/catalog-client@1.4.5
30
+ - @backstage/catalog-model@1.4.3
31
+ - @backstage/config@1.1.1
32
+ - @backstage/errors@1.2.3
33
+ - @backstage/types@1.1.1
34
+ - @backstage/plugin-auth-node@0.4.1-next.0
35
+ - @backstage/plugin-catalog-common@1.0.17
36
+ - @backstage/plugin-catalog-node@1.4.8-next.0
37
+ - @backstage/plugin-events-node@0.2.16-next.0
38
+ - @backstage/plugin-permission-common@0.7.9
39
+ - @backstage/plugin-permission-node@0.7.18-next.0
40
+ - @backstage/plugin-search-backend-module-catalog@0.1.11-next.0
41
+
3
42
  ## 1.14.0
4
43
 
5
44
  ### Minor Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-catalog-backend",
3
- "version": "1.14.0",
3
+ "version": "1.15.0-next.0",
4
4
  "main": "../dist/alpha.cjs.js",
5
5
  "types": "../dist/alpha.d.ts"
6
6
  }
package/config.d.ts CHANGED
@@ -145,6 +145,19 @@ export interface Config {
145
145
  */
146
146
  orphanStrategy?: 'keep' | 'delete';
147
147
 
148
+ /**
149
+ * The strategy to use when stitching together the final entities.
150
+ */
151
+ stitchingStrategy?:
152
+ | {
153
+ /** Perform stitching in-band immediately when needed */
154
+ mode: 'immediate';
155
+ }
156
+ | {
157
+ /** Defer stitching to be performed asynchronously */
158
+ mode: 'deferred';
159
+ };
160
+
148
161
  /**
149
162
  * The interval at which the catalog should process its entities.
150
163
  *
package/dist/alpha.cjs.js CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var alpha = require('@backstage/plugin-catalog-common/alpha');
6
6
  var pluginPermissionNode = require('@backstage/plugin-permission-node');
7
- var CatalogBuilder = require('./cjs/CatalogBuilder-9cfeea71.cjs.js');
7
+ var CatalogBuilder = require('./cjs/CatalogBuilder-2ff47757.cjs.js');
8
8
  var backendPluginApi = require('@backstage/backend-plugin-api');
9
9
  var alpha$1 = require('@backstage/plugin-catalog-node/alpha');
10
10
  var backendCommon = require('@backstage/backend-common');
@@ -31,6 +31,7 @@ require('fast-json-stable-stringify');
31
31
  require('lodash/uniq');
32
32
  require('lodash/chunk');
33
33
  require('zod');
34
+ require('@backstage/types');
34
35
  require('@backstage/catalog-client');
35
36
  require('yn');
36
37
  require('@backstage/backend-openapi-utils');
@@ -38,7 +39,6 @@ require('@backstage/plugin-auth-node');
38
39
  require('@backstage/plugin-permission-common');
39
40
  require('minimatch');
40
41
  require('@backstage/config');
41
- require('@backstage/types');
42
42
 
43
43
  const { conditions, createConditionalDecision } = pluginPermissionNode.createConditionExports({
44
44
  pluginId: "catalog",