@camunda8/orchestration-cluster-api 8.9.0-alpha.11 → 8.9.0-alpha.13

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,9 +1,21 @@
1
- # [8.9.0-alpha.11](https://github.com/camunda/orchestration-cluster-api-js/compare/v8.9.0-alpha.10...v8.9.0-alpha.11) (2026-03-06)
1
+ # [8.9.0-alpha.13](https://github.com/camunda/orchestration-cluster-api-js/compare/v8.9.0-alpha.12...v8.9.0-alpha.13) (2026-03-09)
2
+
3
+
4
+ ### Features
5
+
6
+ * add backoff-at-floor to backpressure algorithm ([a0504bc](https://github.com/camunda/orchestration-cluster-api-js/commit/a0504bcdfd3e24c47e168cddc59aeae957bfc8dd))
2
7
 
8
+ # [8.9.0-alpha.12](https://github.com/camunda/orchestration-cluster-api-js/compare/v8.9.0-alpha.11...v8.9.0-alpha.12) (2026-03-08)
9
+
10
+ ### Features
11
+
12
+ - build from hardened contract in 8.9 ([03ef35a](https://github.com/camunda/orchestration-cluster-api-js/commit/03ef35a9cda1913bf11bd42b07ae95829d4118cc))
13
+
14
+ # [8.9.0-alpha.11](https://github.com/camunda/orchestration-cluster-api-js/compare/v8.9.0-alpha.10...v8.9.0-alpha.11) (2026-03-06)
3
15
 
4
16
  ### Features
5
17
 
6
- * add per-operation retry config. New tuning for backpressure ([9dd921a](https://github.com/camunda/orchestration-cluster-api-js/commit/9dd921a0eae67d56d0e8a7d6423ac7d8a3edd3b4))
18
+ - add per-operation retry config. New tuning for backpressure ([9dd921a](https://github.com/camunda/orchestration-cluster-api-js/commit/9dd921a0eae67d56d0e8a7d6423ac7d8a3edd3b4))
7
19
 
8
20
  # [8.9.0-alpha.10](https://github.com/camunda/orchestration-cluster-api-js/compare/v8.9.0-alpha.9...v8.9.0-alpha.10) (2026-03-05)
9
21
 
@@ -5754,9 +5754,9 @@ var zDecisionInstanceResult = z.object({
5754
5754
  description: "The name of the DMN decision."
5755
5755
  }),
5756
5756
  decisionDefinitionType: zDecisionDefinitionTypeEnum,
5757
- decisionDefinitionVersion: z.optional(z.int().register(z.globalRegistry, {
5757
+ decisionDefinitionVersion: z.int().register(z.globalRegistry, {
5758
5758
  description: "The version of the decision."
5759
- })),
5759
+ }),
5760
5760
  decisionEvaluationInstanceKey: zDecisionEvaluationInstanceKey,
5761
5761
  decisionEvaluationKey: zDecisionEvaluationKey,
5762
5762
  elementInstanceKey: z.union([
@@ -6658,7 +6658,7 @@ var zProblemDetail = z.object({
6658
6658
  var zProcessDefinitionFilter = z.object({
6659
6659
  name: z.optional(zStringFilterProperty),
6660
6660
  isLatestVersion: z.optional(z.boolean().register(z.globalRegistry, {
6661
- description: "Whether to only return the latest version of each process definition.\nWhen using this filter, pagination functionality is limited, you can only paginate forward using `after` and `limit`.\nThe response contains no `startCursor` in the `page`, and requests ignore the `from` and `before` in the `page`.\n"
6661
+ description: "Whether to only return the latest version of each process definition.\nWhen using this filter, pagination functionality is limited, you can only paginate forward using `after` and `limit`.\nThe response contains no `startCursor` in the `page`, and requests ignore the `from` and `before` in the `page`.\nWhen using this filter, sorting is limited to `processDefinitionId` and `tenantId` fields only.\n"
6662
6662
  })),
6663
6663
  resourceName: z.optional(z.string().register(z.globalRegistry, {
6664
6664
  description: "Resource name of this process definition."
@@ -7683,7 +7683,8 @@ var zProcessInstanceSearchQuerySortRequest = z.object({
7683
7683
  "endDate",
7684
7684
  "state",
7685
7685
  "hasIncident",
7686
- "tenantId"
7686
+ "tenantId",
7687
+ "businessId"
7687
7688
  ]).register(z.globalRegistry, {
7688
7689
  description: "The field to sort by."
7689
7690
  }),
@@ -9126,7 +9127,8 @@ var zBaseProcessInstanceFilterFields = z.object({
9126
9127
  description: "Whether the element instance has an incident or not."
9127
9128
  })),
9128
9129
  incidentErrorHashCode: z.optional(zIntegerFilterProperty),
9129
- tags: z.optional(zTagSet)
9130
+ tags: z.optional(zTagSet),
9131
+ businessId: z.optional(zStringFilterProperty)
9130
9132
  }).register(z.globalRegistry, {
9131
9133
  description: "Base process instance search filter."
9132
9134
  });
@@ -12424,7 +12426,7 @@ function installAuthInterceptor(client2, getStrategy, getAuthHeaders) {
12424
12426
  }
12425
12427
 
12426
12428
  // src/runtime/version.ts
12427
- var packageVersion = "8.9.0-alpha.11";
12429
+ var packageVersion = "8.9.0-alpha.13";
12428
12430
 
12429
12431
  // src/runtime/supportLogger.ts
12430
12432
  var NoopSupportLogger = class {
@@ -13224,6 +13226,7 @@ async function executeWithHttpRetry(fn, policy, logger, classify = defaultHttpCl
13224
13226
  var BackpressureManager = class {
13225
13227
  logger;
13226
13228
  now;
13229
+ sleep;
13227
13230
  cfg;
13228
13231
  severity = "healthy";
13229
13232
  consecutive = 0;
@@ -13236,9 +13239,12 @@ var BackpressureManager = class {
13236
13239
  observeOnly = false;
13237
13240
  healthySince = 0;
13238
13241
  // timestamp when severity last became healthy
13242
+ backoffMs = 0;
13243
+ // current backoff delay in ms (0 = no backoff)
13239
13244
  constructor(opts = {}) {
13240
13245
  this.logger = opts.logger;
13241
13246
  this.now = opts.now || (() => Date.now());
13247
+ this.sleep = opts.sleep || ((ms) => new Promise((r) => setTimeout(r, ms)));
13242
13248
  this.cfg = {
13243
13249
  enabled: true,
13244
13250
  initialMaxConcurrency: null,
@@ -13252,6 +13258,9 @@ var BackpressureManager = class {
13252
13258
  maxWaiters: 1e3,
13253
13259
  healthyRecoveryMultiplier: 1.5,
13254
13260
  unlimitedAfterHealthyMs: 3e4,
13261
+ backoffInitialMs: 25,
13262
+ backoffMaxMs: 2e3,
13263
+ backoffEscalate: 2,
13255
13264
  ...opts.config
13256
13265
  };
13257
13266
  this.observeOnly = !!this.cfg.observeOnly;
@@ -13267,7 +13276,8 @@ var BackpressureManager = class {
13267
13276
  // When disabled, report unlimited semantics explicitly
13268
13277
  permitsMax: this.cfg.enabled === false ? null : this.permitsMax,
13269
13278
  permitsCurrent: this.cfg.enabled === false ? 0 : this.permitsCurrent,
13270
- waiters: this.waiters.length
13279
+ waiters: this.waiters.length,
13280
+ backoffMs: this.backoffMs
13271
13281
  };
13272
13282
  }
13273
13283
  log(evt, data, prevSeverity) {
@@ -13289,6 +13299,10 @@ var BackpressureManager = class {
13289
13299
  if (this.observeOnly) return;
13290
13300
  if (!this.isEnabled()) return;
13291
13301
  if (this.permitsMax === null) return;
13302
+ if (this.backoffMs > 0) {
13303
+ await this.sleep(this.backoffMs);
13304
+ if (this.permitsMax === null) return;
13305
+ }
13292
13306
  if (this.permitsCurrent < (this.permitsMax || 0)) {
13293
13307
  this.permitsCurrent++;
13294
13308
  return;
@@ -13352,11 +13366,23 @@ var BackpressureManager = class {
13352
13366
  } else if (this.severity === "soft") {
13353
13367
  if (!this.observeOnly) this.scalePermits(this.cfg.reduceFactor);
13354
13368
  }
13369
+ if (!this.observeOnly && this.permitsMax !== null && this.permitsMax <= this.cfg.floorConcurrency && this.severity === "severe") {
13370
+ if (this.backoffMs === 0) {
13371
+ this.backoffMs = this.cfg.backoffInitialMs;
13372
+ } else {
13373
+ this.backoffMs = Math.min(this.cfg.backoffMaxMs, this.backoffMs * this.cfg.backoffEscalate);
13374
+ }
13375
+ this.log("backoff.escalate", { delayMs: this.backoffMs });
13376
+ }
13355
13377
  if (this.severity !== prevSeverity)
13356
13378
  this.log("severity", { severity: this.severity }, prevSeverity);
13357
13379
  }
13358
13380
  recordHealthyHint() {
13359
13381
  if (!this.cfg.enabled && !this.observeOnly) return;
13382
+ if (this.backoffMs > 0) {
13383
+ this.backoffMs = 0;
13384
+ this.log("backoff.clear", { reason: "healthy-hint" });
13385
+ }
13360
13386
  const now2 = this.now();
13361
13387
  this.maybeRecover(now2);
13362
13388
  }
@@ -13380,13 +13406,23 @@ var BackpressureManager = class {
13380
13406
  this.healthySince = now2;
13381
13407
  }
13382
13408
  if (this.severity === "healthy") this.consecutive = 0;
13383
- if (prev !== this.severity) this.log("severity", { severity: this.severity }, prev);
13409
+ if (prev !== this.severity) {
13410
+ if (this.backoffMs > 0) {
13411
+ this.backoffMs = 0;
13412
+ this.log("backoff.clear", { reason: "severity-decay" });
13413
+ }
13414
+ this.log("severity", { severity: this.severity }, prev);
13415
+ }
13384
13416
  }
13385
13417
  if (this.permitsMax !== null) {
13386
13418
  const bootstrapCap = this.cfg.initialMaxConcurrency ?? 16;
13387
13419
  if (this.severity !== "healthy") {
13388
13420
  if (this.permitsMax < bootstrapCap) {
13389
13421
  this.permitsMax = Math.min(bootstrapCap, this.permitsMax + this.cfg.recoveryStep);
13422
+ if (this.permitsMax > this.cfg.floorConcurrency && this.backoffMs > 0) {
13423
+ this.backoffMs = 0;
13424
+ this.log("backoff.clear", { reason: "left-floor" });
13425
+ }
13390
13426
  this.log("permits.recover", { max: this.permitsMax, phase: "additive" }, this.severity);
13391
13427
  this.release();
13392
13428
  }
@@ -13394,6 +13430,7 @@ var BackpressureManager = class {
13394
13430
  if (this.healthySince > 0 && now2 - this.healthySince >= this.cfg.unlimitedAfterHealthyMs) {
13395
13431
  this.permitsMax = null;
13396
13432
  this.permitsCurrent = 0;
13433
+ this.backoffMs = 0;
13397
13434
  while (this.waiters.length) {
13398
13435
  const w = this.waiters.shift();
13399
13436
  try {
@@ -23513,4 +23550,4 @@ export {
23513
23550
  withTimeoutTE,
23514
23551
  eventuallyTE
23515
23552
  };
23516
- //# sourceMappingURL=chunk-TA4NPVIS.js.map
23553
+ //# sourceMappingURL=chunk-ULXL7H75.js.map