@rivetkit/workflow-engine 2.3.17 → 2.3.18-rc.1

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.
@@ -1437,6 +1437,7 @@ function deserializeName(bytes) {
1437
1437
  // src/storage.ts
1438
1438
  var MAX_KV_BATCH_ENTRIES = 128;
1439
1439
  var MAX_KV_BATCH_PAYLOAD_BYTES = 976 * 1024;
1440
+ var MAX_CONCURRENT_DELETES = 64;
1440
1441
  function createStorage() {
1441
1442
  return {
1442
1443
  nameRegistry: [],
@@ -1616,18 +1617,8 @@ async function flush(storage, driver, onHistoryUpdated, pendingDeletions) {
1616
1617
  }
1617
1618
  }
1618
1619
  if (pendingDeletions) {
1619
- const deleteOps = [];
1620
- for (const prefix of pendingDeletions.prefixes) {
1621
- deleteOps.push(driver.deletePrefix(prefix));
1622
- }
1623
- for (const range of pendingDeletions.ranges) {
1624
- deleteOps.push(driver.deleteRange(range.start, range.end));
1625
- }
1626
- for (const key of pendingDeletions.keys) {
1627
- deleteOps.push(driver.delete(key));
1628
- }
1629
- if (deleteOps.length > 0) {
1630
- await Promise.all(deleteOps);
1620
+ const didChange = await runDeletes(driver, pendingDeletions);
1621
+ if (didChange) {
1631
1622
  historyUpdated = true;
1632
1623
  }
1633
1624
  }
@@ -1669,10 +1660,36 @@ function splitBatchWrites(writes) {
1669
1660
  }
1670
1661
  return chunks;
1671
1662
  }
1663
+ function splitBatchDeletes(keys) {
1664
+ const chunks = [];
1665
+ for (let i = 0; i < keys.length; i += MAX_KV_BATCH_ENTRIES) {
1666
+ chunks.push(keys.slice(i, i + MAX_KV_BATCH_ENTRIES));
1667
+ }
1668
+ return chunks;
1669
+ }
1670
+ async function runDeletes(driver, deletions) {
1671
+ const ops = [
1672
+ ...deletions.prefixes.map((prefix) => () => driver.deletePrefix(prefix)),
1673
+ ...deletions.ranges.map(
1674
+ (range) => () => driver.deleteRange(range.start, range.end)
1675
+ ),
1676
+ ...splitBatchDeletes(deletions.keys).map(
1677
+ (chunk) => () => driver.batchDelete(chunk)
1678
+ )
1679
+ ];
1680
+ if (ops.length === 0) {
1681
+ return false;
1682
+ }
1683
+ for (let i = 0; i < ops.length; i += MAX_CONCURRENT_DELETES) {
1684
+ await Promise.all(
1685
+ ops.slice(i, i + MAX_CONCURRENT_DELETES).map((op) => op())
1686
+ );
1687
+ }
1688
+ return true;
1689
+ }
1672
1690
  async function deleteEntriesWithPrefix(storage, driver, prefixLocation, onHistoryUpdated) {
1673
1691
  const deletions = collectDeletionsForPrefix(storage, prefixLocation);
1674
- await driver.deletePrefix(deletions.prefixes[0]);
1675
- await Promise.all(deletions.keys.map((key) => driver.delete(key)));
1692
+ await runDeletes(driver, deletions);
1676
1693
  if (deletions.keys.length > 0 && onHistoryUpdated) {
1677
1694
  onHistoryUpdated();
1678
1695
  }
@@ -4321,4 +4338,4 @@ async function executeWorkflow(workflowId, workflowFn, input, driver, messageDri
4321
4338
 
4322
4339
 
4323
4340
  exports.extractErrorInfo = extractErrorInfo; exports.CriticalError = CriticalError; exports.RollbackError = RollbackError; exports.RollbackCheckpointError = RollbackCheckpointError; exports.SleepError = SleepError; exports.MessageWaitError = MessageWaitError; exports.EvictedError = EvictedError; exports.HistoryDivergedError = HistoryDivergedError; exports.StepExhaustedError = StepExhaustedError; exports.StepFailedError = StepFailedError; exports.JoinError = JoinError; exports.RaceError = RaceError; exports.CancelledError = CancelledError; exports.EntryInProgressError = EntryInProgressError; exports.keyStartsWith = keyStartsWith; exports.compareKeys = compareKeys; exports.keyToHex = keyToHex; exports.isLoopIterationMarker = isLoopIterationMarker; exports.registerName = registerName; exports.resolveName = resolveName; exports.locationToKey = locationToKey; exports.appendName = appendName; exports.appendLoopIteration = appendLoopIteration; exports.emptyLocation = emptyLocation; exports.parentLocation = parentLocation; exports.isLocationPrefix = isLocationPrefix; exports.locationsEqual = locationsEqual; exports.createStorage = createStorage; exports.createHistorySnapshot = createHistorySnapshot; exports.generateId = generateId; exports.createEntry = createEntry; exports.getOrCreateMetadata = getOrCreateMetadata; exports.loadStorage = loadStorage; exports.loadMetadata = loadMetadata; exports.flush = flush; exports.deleteEntriesWithPrefix = deleteEntriesWithPrefix; exports.getEntry = getEntry; exports.setEntry = setEntry; exports.DEFAULT_MAX_RETRIES = DEFAULT_MAX_RETRIES; exports.DEFAULT_RETRY_BACKOFF_BASE = DEFAULT_RETRY_BACKOFF_BASE; exports.DEFAULT_RETRY_BACKOFF_MAX = DEFAULT_RETRY_BACKOFF_MAX; exports.DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL = DEFAULT_LOOP_HISTORY_PRUNE_INTERVAL; exports.DEFAULT_STEP_TIMEOUT = DEFAULT_STEP_TIMEOUT; exports.WorkflowContextImpl = WorkflowContextImpl; exports.sleep = sleep; exports.Loop = Loop; exports.runWorkflow = runWorkflow; exports.replayWorkflowFromStep = replayWorkflowFromStep;
4324
- //# sourceMappingURL=chunk-KLHCG2KY.cjs.map
4341
+ //# sourceMappingURL=chunk-32422MOM.cjs.map