dexbot 1.1.13 → 1.2.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.
Files changed (127) hide show
  1. package/README.md +1 -0
  2. package/dist/market_adapter/market_adapter.js +1 -1
  3. package/dist/market_adapter/market_adapter.js.map +1 -1
  4. package/dist/modules/bitshares-native/lru_cache.d.ts +20 -0
  5. package/dist/modules/bitshares-native/lru_cache.d.ts.map +1 -0
  6. package/dist/modules/bitshares-native/lru_cache.js +45 -0
  7. package/dist/modules/bitshares-native/lru_cache.js.map +1 -0
  8. package/dist/modules/bitshares-native/resolvers.d.ts +2 -18
  9. package/dist/modules/bitshares-native/resolvers.d.ts.map +1 -1
  10. package/dist/modules/bitshares-native/resolvers.js +2 -41
  11. package/dist/modules/bitshares-native/resolvers.js.map +1 -1
  12. package/dist/modules/bitshares-native/serial/chain_constants.d.ts +1 -0
  13. package/dist/modules/bitshares-native/serial/chain_constants.d.ts.map +1 -1
  14. package/dist/modules/bitshares-native/serial/chain_constants.js +3 -0
  15. package/dist/modules/bitshares-native/serial/chain_constants.js.map +1 -1
  16. package/dist/modules/bitshares-native/signing_client.d.ts.map +1 -1
  17. package/dist/modules/bitshares-native/signing_client.js +12 -1
  18. package/dist/modules/bitshares-native/signing_client.js.map +1 -1
  19. package/dist/modules/bitshares-native/subscriptions.d.ts.map +1 -1
  20. package/dist/modules/bitshares-native/subscriptions.js +42 -3
  21. package/dist/modules/bitshares-native/subscriptions.js.map +1 -1
  22. package/dist/modules/bitshares-native/transport.d.ts.map +1 -1
  23. package/dist/modules/bitshares-native/transport.js +77 -27
  24. package/dist/modules/bitshares-native/transport.js.map +1 -1
  25. package/dist/modules/bitshares-native/tx/builder.d.ts.map +1 -1
  26. package/dist/modules/bitshares-native/tx/builder.js +26 -16
  27. package/dist/modules/bitshares-native/tx/builder.js.map +1 -1
  28. package/dist/modules/bitshares-native/tx/tx_cache.d.ts +17 -0
  29. package/dist/modules/bitshares-native/tx/tx_cache.d.ts.map +1 -0
  30. package/dist/modules/bitshares-native/tx/tx_cache.js +62 -0
  31. package/dist/modules/bitshares-native/tx/tx_cache.js.map +1 -0
  32. package/dist/modules/bot_settings.d.ts.map +1 -1
  33. package/dist/modules/bot_settings.js +2 -1
  34. package/dist/modules/bot_settings.js.map +1 -1
  35. package/dist/modules/chain_orders.d.ts +4 -1
  36. package/dist/modules/chain_orders.d.ts.map +1 -1
  37. package/dist/modules/chain_orders.js +30 -1
  38. package/dist/modules/chain_orders.js.map +1 -1
  39. package/dist/modules/config.d.ts +6 -0
  40. package/dist/modules/config.d.ts.map +1 -1
  41. package/dist/modules/config.js +11 -0
  42. package/dist/modules/config.js.map +1 -1
  43. package/dist/modules/constants.d.ts +17 -1
  44. package/dist/modules/constants.d.ts.map +1 -1
  45. package/dist/modules/constants.js +84 -18
  46. package/dist/modules/constants.js.map +1 -1
  47. package/dist/modules/credit_runtime.d.ts.map +1 -1
  48. package/dist/modules/credit_runtime.js +40 -29
  49. package/dist/modules/credit_runtime.js.map +1 -1
  50. package/dist/modules/dexbot_class.d.ts +16 -12
  51. package/dist/modules/dexbot_class.d.ts.map +1 -1
  52. package/dist/modules/dexbot_class.js +183 -78
  53. package/dist/modules/dexbot_class.js.map +1 -1
  54. package/dist/modules/dexbot_credential_client.d.ts +1 -0
  55. package/dist/modules/dexbot_credential_client.d.ts.map +1 -1
  56. package/dist/modules/dexbot_credential_client.js +15 -6
  57. package/dist/modules/dexbot_credential_client.js.map +1 -1
  58. package/dist/modules/dexbot_maintenance_runtime.d.ts +1 -5
  59. package/dist/modules/dexbot_maintenance_runtime.d.ts.map +1 -1
  60. package/dist/modules/dexbot_maintenance_runtime.js +78 -42
  61. package/dist/modules/dexbot_maintenance_runtime.js.map +1 -1
  62. package/dist/modules/key_store.d.ts.map +1 -1
  63. package/dist/modules/key_store.js +2 -0
  64. package/dist/modules/key_store.js.map +1 -1
  65. package/dist/modules/launcher/child_env.d.ts.map +1 -1
  66. package/dist/modules/launcher/child_env.js +1 -0
  67. package/dist/modules/launcher/child_env.js.map +1 -1
  68. package/dist/modules/launcher/launch_modes.d.ts +2 -0
  69. package/dist/modules/launcher/launch_modes.d.ts.map +1 -1
  70. package/dist/modules/launcher/launch_modes.js +7 -6
  71. package/dist/modules/launcher/launch_modes.js.map +1 -1
  72. package/dist/modules/node_manager.d.ts +9 -0
  73. package/dist/modules/node_manager.d.ts.map +1 -1
  74. package/dist/modules/node_manager.js +35 -17
  75. package/dist/modules/node_manager.js.map +1 -1
  76. package/dist/modules/order/accounting.d.ts.map +1 -1
  77. package/dist/modules/order/accounting.js +56 -13
  78. package/dist/modules/order/accounting.js.map +1 -1
  79. package/dist/modules/order/async_lock.d.ts +33 -4
  80. package/dist/modules/order/async_lock.d.ts.map +1 -1
  81. package/dist/modules/order/async_lock.js +69 -7
  82. package/dist/modules/order/async_lock.js.map +1 -1
  83. package/dist/modules/order/grid.d.ts +435 -450
  84. package/dist/modules/order/grid.d.ts.map +1 -1
  85. package/dist/modules/order/grid.js +1621 -1548
  86. package/dist/modules/order/grid.js.map +1 -1
  87. package/dist/modules/order/grid_reconcile.d.ts +3 -73
  88. package/dist/modules/order/grid_reconcile.d.ts.map +1 -1
  89. package/dist/modules/order/grid_reconcile.js +11 -843
  90. package/dist/modules/order/grid_reconcile.js.map +1 -1
  91. package/dist/modules/order/grid_reconcile_internal.d.ts +8 -0
  92. package/dist/modules/order/grid_reconcile_internal.d.ts.map +1 -0
  93. package/dist/modules/order/grid_reconcile_internal.js +771 -0
  94. package/dist/modules/order/grid_reconcile_internal.js.map +1 -0
  95. package/dist/modules/order/logger.d.ts +1 -1
  96. package/dist/modules/order/logger.d.ts.map +1 -1
  97. package/dist/modules/order/logger.js +26 -2
  98. package/dist/modules/order/logger.js.map +1 -1
  99. package/dist/modules/order/manager.d.ts +40 -3
  100. package/dist/modules/order/manager.d.ts.map +1 -1
  101. package/dist/modules/order/manager.js +97 -15
  102. package/dist/modules/order/manager.js.map +1 -1
  103. package/dist/modules/order/runner.js +2 -2
  104. package/dist/modules/order/runner.js.map +1 -1
  105. package/dist/modules/order/strategy.js +3 -3
  106. package/dist/modules/order/strategy.js.map +1 -1
  107. package/dist/modules/order/sync_engine.d.ts +1 -1
  108. package/dist/modules/order/sync_engine.d.ts.map +1 -1
  109. package/dist/modules/order/sync_engine.js +121 -29
  110. package/dist/modules/order/sync_engine.js.map +1 -1
  111. package/dist/modules/order/utils/order.d.ts +17 -0
  112. package/dist/modules/order/utils/order.d.ts.map +1 -1
  113. package/dist/modules/order/utils/order.js +56 -19
  114. package/dist/modules/order/utils/order.js.map +1 -1
  115. package/dist/modules/order/utils/system.js +4 -4
  116. package/dist/modules/order/utils/system.js.map +1 -1
  117. package/dist/modules/order/utils/validate.d.ts.map +1 -1
  118. package/dist/modules/order/utils/validate.js +6 -8
  119. package/dist/modules/order/utils/validate.js.map +1 -1
  120. package/dist/scripts/print_grid.js +3 -3
  121. package/dist/scripts/print_grid.js.map +1 -1
  122. package/dist/scripts/test-credit-renewal.js +1 -1
  123. package/dist/scripts/test-credit-renewal.js.map +1 -1
  124. package/dist/unlock.d.ts.map +1 -1
  125. package/dist/unlock.js +26 -12
  126. package/dist/unlock.js.map +1 -1
  127. package/package.json +14 -4
@@ -17,6 +17,7 @@ interface CredentialClientOptions {
17
17
  batchId?: string | null;
18
18
  nodeUrl?: string;
19
19
  fallbackNodes?: string[];
20
+ onNodeFailed?: (nodeUrl: string) => void;
20
21
  }
21
22
  interface CredentialDaemonMeta {
22
23
  uncertainOnTimeout?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"dexbot_credential_client.d.ts","sourceRoot":"","sources":["../../modules/dexbot_credential_client.ts"],"names":[],"mappings":"AAmBA,UAAU,8BAA8B;IACpC,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,UAAU,uBAAuB;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,UAAU,oBAAoB;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,UAAU,wBAAwB;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC;CAC7B;AAkBD;;;;;;;;;;;;;;GAcG;AACH,cAAM,uBAAwB,SAAQ,KAAK;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,GAAG,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,8BAAmC;CAU5E;AAMD,iBAAS,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAmE5J;AAMD,iBAAS,uBAAuB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAW/E;AAED,iBAAe,uBAAuB,CAAC,SAAS,GAAE,MAAgC,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,CAYxI;AAMD,iBAAe,oCAAoC,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAuFpK;;;;;;;;;;;AAED,kBASE"}
1
+ {"version":3,"file":"dexbot_credential_client.d.ts","sourceRoot":"","sources":["../../modules/dexbot_credential_client.ts"],"names":[],"mappings":"AAmBA,UAAU,8BAA8B;IACpC,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,UAAU,uBAAuB;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,UAAU,oBAAoB;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,UAAU,wBAAwB;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC;CAC7B;AAkBD;;;;;;;;;;;;;;GAcG;AACH,cAAM,uBAAwB,SAAQ,KAAK;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,GAAG,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,8BAAmC;CAU5E;AAMD,iBAAS,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAmE5J;AAMD,iBAAS,uBAAuB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAW/E;AAED,iBAAe,uBAAuB,CAAC,SAAS,GAAE,MAAgC,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,CAYxI;AAMD,iBAAe,oCAAoC,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAgGpK;;;;;;;;;;;AAED,kBASE"}
@@ -176,6 +176,10 @@ async function executeOperationsViaCredentialDaemon(accountName, operations, opt
176
176
  const fallbackNodes = Array.isArray(options.fallbackNodes) ? options.fallbackNodes : [];
177
177
  const maxAttempts = 1 + fallbackNodes.length;
178
178
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
179
+ // attempt 0 uses options.nodeUrl (typically undefined, meaning the daemon's
180
+ // default node list); subsequent attempts cycle through fallbackNodes[].
181
+ // onNodeFailed is only invoked when nodeUrl is truthy, so the primary
182
+ // node is never reported through this callback — only the named fallbacks.
179
183
  const nodeUrl = attempt === 0 ? (options.nodeUrl || undefined) : fallbackNodes[attempt - 1];
180
184
  const payload = { type: 'execute-operations', accountName, operations };
181
185
  const sessionId = options.sessionId || null;
@@ -226,12 +230,17 @@ async function executeOperationsViaCredentialDaemon(accountName, operations, opt
226
230
  throw new Error(errMsg);
227
231
  }
228
232
  catch (err) {
229
- if (err instanceof BroadcastUncertainError && attempt < maxAttempts - 1) {
230
- const label = extractHostname(nodeUrl || '') || 'primary';
231
- const nextHost = extractHostname(fallbackNodes[attempt]);
232
- console.warn(`[cred-daemon-client] BROADCAST_DEADLINE on ${label}, retrying fallback ${nextHost}...`);
233
- await new Promise((resolve) => setTimeout(resolve, TIMING.BLOCKCHAIN_SETTLE_DELAY_MS));
234
- continue;
233
+ if (err instanceof BroadcastUncertainError) {
234
+ if (typeof options.onNodeFailed === 'function' && nodeUrl) {
235
+ options.onNodeFailed(nodeUrl);
236
+ }
237
+ if (attempt < maxAttempts - 1) {
238
+ const label = extractHostname(nodeUrl || '') || 'primary';
239
+ const nextHost = extractHostname(fallbackNodes[attempt]);
240
+ console.warn(`[cred-daemon-client] BROADCAST_DEADLINE on ${label}, retrying fallback ${nextHost}...`);
241
+ await new Promise((resolve) => setTimeout(resolve, TIMING.BLOCKCHAIN_SETTLE_DELAY_MS));
242
+ continue;
243
+ }
235
244
  }
236
245
  throw err;
237
246
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dexbot_credential_client.js","sourceRoot":"","sources":["../../modules/dexbot_credential_client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dexbot_credential_client.js","sourceRoot":"","sources":["../../modules/dexbot_credential_client.ts"],"names":[],"mappings":"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"}
@@ -206,13 +206,11 @@ declare function executeMaintenanceLogic(bot: any, context: any): Promise<void>;
206
206
  * @param {Object} [options] - Dust cancellation options
207
207
  * @param {import('./types').Order[]} [options.buy=[]] - Buy-side dust orders
208
208
  * @param {import('./types').Order[]} [options.sell=[]] - Sell-side dust orders
209
- * @param {boolean} [options.fillLockAlreadyHeld=false] - Skip fill-processing lock re-entry (caller already holds it)
210
209
  * @returns {Promise<{cancelledCount: number, batchResult: {aborted: boolean}|null}>}
211
210
  */
212
- declare function cancelDustOrders(bot: any, { buy: buyDust, sell: sellDust, fillLockAlreadyHeld }?: {
211
+ declare function cancelDustOrders(bot: any, { buy: buyDust, sell: sellDust }?: {
213
212
  buy?: any[];
214
213
  sell?: any[];
215
- fillLockAlreadyHeld?: boolean;
216
214
  }): Promise<{
217
215
  cancelledCount: number;
218
216
  batchResult: {
@@ -225,12 +223,10 @@ declare function cancelDustOrders(bot: any, { buy: buyDust, sell: sellDust, fill
225
223
  * @param {import('./dexbot_class').DEXBot} bot
226
224
  * @param {string} [context='periodic'] - Context label for logging
227
225
  * @param {Object} [options] - Maintenance options
228
- * @param {boolean} [options.fillLockAlreadyHeld=false] - Skip fill lock acquisition if already held
229
226
  * @param {boolean} [options.skipIdle=false] - Skip idle delay check
230
227
  * @returns {Promise<void>}
231
228
  */
232
229
  declare function runGridMaintenance(bot: any, context?: string, options?: {
233
- fillLockAlreadyHeld?: boolean;
234
230
  skipIdle?: boolean;
235
231
  }): Promise<void>;
236
232
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"dexbot_maintenance_runtime.d.ts","sourceRoot":"","sources":["../../modules/dexbot_maintenance_runtime.ts"],"names":[],"mappings":"AAyEA;;;;GAIG;AACH,iBAAS,gBAAgB,CAAC,GAAG,KAAA,WAG5B;AAED;;;;;;GAMG;AACH,iBAAS,+BAA+B,CAAC,QAAQ,KAAA,EAAE,MAAM,KAAA,OAaxD;AAED;;;;;GAKG;AACH,iBAAS,+BAA+B,CAAC,QAAQ,KAAA,EAAE,MAAM,KAAA,WAMxD;AA8HD;;;GAGG;AACH,iBAAS,sBAAsB;;;;;;;;;;;;EAgC9B;AAuGD;;;GAGG;AACH,iBAAe,oBAAoB,kBAElC;AAED;;;;;;GAMG;AACH,iBAAe,sCAAsC,CAAC,GAAG,KAAA,EAAE,OAAO,SAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4I9E;AAED;;;;;;GAMG;AACH,iBAAS,gCAAgC,CAAC,GAAG,KAAA,EAAE,OAAO,SAAY;;;;;;;;;;EA+DjE;AAyHD;;;;;;;GAOG;AACH,iBAAS,0BAA0B,CAAC,MAAM,KAAA,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,OA0BnG;AAED;;;;;;GAMG;AACH,iBAAS,iBAAiB,CAAC,GAAG,KAAA,EAAE,OAAO,GAAE;IACrC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACnB,oBAsGL;AAED;;;;;GAKG;AACH,iBAAe,yBAAyB,CAAC,GAAG,KAAA,oBAkB3C;AAED;;;;;GAKG;AACH,iBAAe,yBAAyB,CAAC,GAAG,KAAA,iBAkD3C;AAED;;;;;GAKG;AACH,iBAAe,yBAAyB,CAAC,GAAG,KAAA,iBAM3C;AAED;;;;GAIG;AACH,iBAAS,2BAA2B,CAAC,GAAG,KAAA,WAKvC;AAED;;;;GAIG;AACH,iBAAS,uBAAuB,CAAC,GAAG,KAAA,QA0DnC;AAED;;;;GAIG;AACH,iBAAe,sBAAsB,CAAC,GAAG,KAAA,iBAKxC;AAED;;;;GAIG;AACH,iBAAS,4BAA4B,CAAC,GAAG,KAAA,QAsHxC;AAED;;;GAGG;AACH,iBAAS,2BAA2B,CAAC,GAAG,KAAA,QAMvC;AAED;;;;;;;GAOG;AACH,iBAAe,2BAA2B,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,OAAO,SAAa,gBAiB1E;AAID;;;;;GAKG;AACH,iBAAS,wBAAwB,CAAC,OAAO,KAAA,EAAE,OAAO,KAAA,WAYjD;AAyGD;;;;;;;GAOG;AACH,iBAAe,uBAAuB,CAAC,GAAG,KAAA,EAAE,OAAO,KAAA,iBA4HlD;AAmCD;;;;;;;;;;;GAWG;AACH,iBAAe,gBAAgB,CAAC,GAAG,KAAA,EAAE,EAAE,GAAG,EAAE,OAAY,EAAE,IAAI,EAAE,QAAa,EAAE,mBAA2B,EAAE;;;;CAAK;;;;;GAyChH;AAED;;;;;;;;;GASG;AACH,iBAAe,kBAAkB,CAC7B,GAAG,KAAA,EACH,OAAO,SAAa,EACpB,OAAO,GAAE;IAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,iBAkDtE;AAID;;;;;;GAMG;AACH,iBAAe,yBAAyB,CAAC,GAAG,KAAA,iBAoD3C;AAED;;;;;;GAMG;AACH,iBAAe,UAAU,CAAC,GAAG,KAAA,EAAE,OAAO,KAAA,iBAmFrC;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,kBAyBE"}
1
+ {"version":3,"file":"dexbot_maintenance_runtime.d.ts","sourceRoot":"","sources":["../../modules/dexbot_maintenance_runtime.ts"],"names":[],"mappings":"AAyEA;;;;GAIG;AACH,iBAAS,gBAAgB,CAAC,GAAG,KAAA,WAG5B;AAED;;;;;;GAMG;AACH,iBAAS,+BAA+B,CAAC,QAAQ,KAAA,EAAE,MAAM,KAAA,OAaxD;AAED;;;;;GAKG;AACH,iBAAS,+BAA+B,CAAC,QAAQ,KAAA,EAAE,MAAM,KAAA,WAMxD;AA6HD;;;GAGG;AACH,iBAAS,sBAAsB;;;;;;;;;;;;EAgC9B;AAuGD;;;GAGG;AACH,iBAAe,oBAAoB,kBAElC;AAED;;;;;;GAMG;AACH,iBAAe,sCAAsC,CAAC,GAAG,KAAA,EAAE,OAAO,SAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4I9E;AAED;;;;;;GAMG;AACH,iBAAS,gCAAgC,CAAC,GAAG,KAAA,EAAE,OAAO,SAAY;;;;;;;;;;EA+DjE;AAyHD;;;;;;;GAOG;AACH,iBAAS,0BAA0B,CAAC,MAAM,KAAA,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,OA0BnG;AAED;;;;;;GAMG;AACH,iBAAS,iBAAiB,CAAC,GAAG,KAAA,EAAE,OAAO,GAAE;IACrC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACnB,oBAqGL;AAED;;;;;GAKG;AACH,iBAAe,yBAAyB,CAAC,GAAG,KAAA,oBAkB3C;AAED;;;;;GAKG;AACH,iBAAe,yBAAyB,CAAC,GAAG,KAAA,iBAkD3C;AAED;;;;;GAKG;AACH,iBAAe,yBAAyB,CAAC,GAAG,KAAA,iBAM3C;AAED;;;;GAIG;AACH,iBAAS,2BAA2B,CAAC,GAAG,KAAA,WAKvC;AAED;;;;GAIG;AACH,iBAAS,uBAAuB,CAAC,GAAG,KAAA,QA0DnC;AAED;;;;GAIG;AACH,iBAAe,sBAAsB,CAAC,GAAG,KAAA,iBAKxC;AAED;;;;GAIG;AACH,iBAAS,4BAA4B,CAAC,GAAG,KAAA,QAsHxC;AAED;;;GAGG;AACH,iBAAS,2BAA2B,CAAC,GAAG,KAAA,QAMvC;AAED;;;;;;;GAOG;AACH,iBAAe,2BAA2B,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,OAAO,SAAa,gBAiB1E;AAID;;;;;GAKG;AACH,iBAAS,wBAAwB,CAAC,OAAO,KAAA,EAAE,OAAO,KAAA,WAYjD;AAmGD;;;;;;;GAOG;AACH,iBAAe,uBAAuB,CAAC,GAAG,KAAA,EAAE,OAAO,KAAA,iBAoMlD;AA2CD;;;;;;;;;;GAUG;AACH,iBAAe,gBAAgB,CAAC,GAAG,KAAA,EAAE,EAAE,GAAG,EAAE,OAAY,EAAE,IAAI,EAAE,QAAa,EAAE;;;CAAK;;;;;GAyCnF;AAED;;;;;;;;GAQG;AACH,iBAAe,kBAAkB,CAC7B,GAAG,KAAA,EACH,OAAO,SAAa,EACpB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,iBAmCvC;AAID;;;;;;GAMG;AACH,iBAAe,yBAAyB,CAAC,GAAG,KAAA,iBAoD3C;AAED;;;;;;GAMG;AACH,iBAAe,UAAU,CAAC,GAAG,KAAA,EAAE,OAAO,KAAA,iBAmFrC;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,kBAyBE"}
@@ -8,7 +8,7 @@ const { BitShares, getNodeManager } = require('./bitshares_client');
8
8
  const chainOrders = require('./chain_orders');
9
9
  const { BroadcastUncertainError } = require('./dexbot_credential_client');
10
10
  const { Config, hasOpenOrdersSyncLoopMsSet, getOpenOrdersSyncLoopMs } = require('./config');
11
- const Grid = require('./order/grid');
11
+ const { isGridBloated, isGridBloatGraceActive, clearGridBloatFlag, loadGrid, recalculateGrid, monitorDivergence } = require('./order/grid');
12
12
  const { ORDER_STATES, ORDER_TYPES, TIMING, BTS_PRECISION, NATIVE_CLIENT } = require('./constants');
13
13
  const { PATHS } = require('./paths');
14
14
  const { buildRuntimeScriptPath, isDistCodeRoot } = require('./launcher/runtime_entry');
@@ -21,7 +21,7 @@ const { parseJsonWithComments } = require('./order/utils/system');
21
21
  const { cloneWeightDistribution, calculateOrderCreationFees, calculateSwapInAmount, floatToBlockchainInt, blockchainToFloat } = require('./order/utils/math');
22
22
  const { updateDynamicGridSnapshotSync } = require('../market_adapter/utils/dynamic_grid_snapshot');
23
23
  const { reconcileGridOrders } = require('./order/grid_reconcile');
24
- const { formatUnmatchedChainOrder, getSideBudget, correctAllPriceMismatches } = require('./order/utils/order');
24
+ const { formatUnmatchedChainOrder, getSideBudget, correctAllPriceMismatches, isOrderOnChain } = require('./order/utils/order');
25
25
  const { getStorage } = require('./storage');
26
26
  const storage = getStorage();
27
27
  const { ensureDir, safeUnlink } = require('./utils/fs_utils');
@@ -205,7 +205,6 @@ async function maybeRunTargetedDriftReconciliation(bot, context) {
205
205
  privateKey: bot.privateKey,
206
206
  chainOrders,
207
207
  chainOpenOrders: openOrders,
208
- fillLockAlreadyHeld: true,
209
208
  });
210
209
  await bot._executeBatchIfNeeded(reconcileResult, `targeted ${context} reconcile`);
211
210
  }
@@ -738,7 +737,7 @@ function performGridResync(bot, options = {}) {
738
737
  refreshDynamicWeightDistribution(self, 'grid resync');
739
738
  }
740
739
  const readFn = () => chainOrders.readOpenOrders(self.accountId);
741
- await Grid.recalculateGrid(self.manager, {
740
+ await recalculateGrid(self.manager, {
742
741
  readOpenOrdersFn: readFn,
743
742
  chainOrders,
744
743
  account: self.account,
@@ -763,7 +762,6 @@ function performGridResync(bot, options = {}) {
763
762
  await cancelDustOrders(self, {
764
763
  buy: resyncHealth.buyDustOrders,
765
764
  sell: resyncHealth.sellDustOrders,
766
- fillLockAlreadyHeld: true,
767
765
  });
768
766
  }
769
767
  catch (_dustErr) {
@@ -869,10 +867,10 @@ async function setupTriggerFileDetection(bot) {
869
867
  */
870
868
  async function performPeriodicGridChecks(bot) {
871
869
  if (typeof bot._runGridMaintenance === 'function') {
872
- await bot._runGridMaintenance('periodic', { fillLockAlreadyHeld: true });
870
+ await bot._runGridMaintenance('periodic');
873
871
  }
874
872
  else {
875
- await runGridMaintenance(bot, 'periodic', { fillLockAlreadyHeld: true });
873
+ await runGridMaintenance(bot, 'periodic');
876
874
  }
877
875
  }
878
876
  /**
@@ -914,7 +912,7 @@ function startOpenOrdersSyncLoop(bot) {
914
912
  bot.manager._fillProcessingLock.getQueueLength() === 0) {
915
913
  await bot.manager._fillProcessingLock.acquire(async () => {
916
914
  const chainOpenOrders = await readOpenOrdersFn.call(chainOrders, bot.accountId);
917
- const syncResult = await bot.manager.synchronizeWithChain(chainOpenOrders, 'readOpenOrders', { fillLockAlreadyHeld: true });
915
+ const syncResult = await bot.manager.synchronizeWithChain(chainOpenOrders, 'readOpenOrders');
918
916
  if (syncResult?.filledOrders && syncResult.filledOrders.length > 0) {
919
917
  bot._log(`Open-orders sync loop: ${syncResult.filledOrders.length} grid order(s) found filled on-chain. Triggering rebalance.`, 'info');
920
918
  bot._markGridActivity?.('open-orders sync fill');
@@ -1031,7 +1029,7 @@ function setupBlockchainFetchInterval(bot) {
1031
1029
  if (!bot.config.dryRun) {
1032
1030
  try {
1033
1031
  chainOpenOrders = await chainOrders.readOpenOrders(bot.accountId);
1034
- const syncResult = await bot.manager.synchronizeWithChain(chainOpenOrders, 'periodicBlockchainFetch', { fillLockAlreadyHeld: true });
1032
+ const syncResult = await bot.manager.synchronizeWithChain(chainOpenOrders, 'periodicBlockchainFetch');
1035
1033
  if (syncResult.filledOrders && syncResult.filledOrders.length > 0) {
1036
1034
  bot._log(`Periodic sync: ${syncResult.filledOrders.length} grid order(s) found filled on-chain. Triggering rebalance.`, 'info');
1037
1035
  bot._markGridActivity?.('periodic sync fill rebalance');
@@ -1158,14 +1156,8 @@ function scheduleMaintenanceAfterIdle(ctx, context, options = {}) {
1158
1156
  const delayMs = getMaintenanceIdleDelayMs(ctx);
1159
1157
  if (!(delayMs > 0))
1160
1158
  return;
1161
- // The caller will have returned (and released _fillProcessingLock, if it
1162
- // was held) by the time this deferred callback fires, so the deferred
1163
- // run must always acquire the lock itself. Override any caller-supplied
1164
- // fillLockAlreadyHeld=true so the deferred path can't deadlock against
1165
- // a lock the caller no longer owns.
1166
1159
  const timerOptions = {
1167
1160
  ...(options || {}),
1168
- fillLockAlreadyHeld: false,
1169
1161
  };
1170
1162
  ctx._maintenanceIdleTimer = setTimeout(() => {
1171
1163
  ctx._maintenanceIdleTimer = null;
@@ -1254,6 +1246,61 @@ async function executeMaintenanceLogic(bot, context) {
1254
1246
  bot._log(`[MAINT-COOLDOWN] Skipping ${context} maintenance after hard-abort recovery sync (remaining=${bot._maintenanceCooldownCycles})`, 'warn');
1255
1247
  return;
1256
1248
  }
1249
+ // Grid bloat re-check: if a previous loadGrid detected bloat and set
1250
+ // _gridBloatDetectedAt, verify the grid is still oversized after a grace
1251
+ // period. If it hasn't resolved and no structural resync is in flight,
1252
+ // trigger one. This catches bloat that occurred during startup (before
1253
+ // requestStructuralGridResync was wired) or bloat that survived a prior
1254
+ // resync attempt.
1255
+ if (bot.manager._gridBloatDetectedAt && typeof bot.manager.requestStructuralGridResync === 'function') {
1256
+ const grace = isGridBloatGraceActive(bot.manager);
1257
+ if (!grace.active) {
1258
+ const bloatResult = isGridBloated(bot.manager, bot.manager.orders);
1259
+ if (bloatResult.bloated) {
1260
+ const d = bloatResult.details;
1261
+ bot._log(`[GRID-BLOAT] Grid size ${d.gridSize} still exceeds expected maximum ${d.maxAllowed} ` +
1262
+ `after grace period (${grace.graceMs}ms). Triggering structural resync.`, 'warn');
1263
+ bot.manager.requestStructuralGridResync('grid-bloat-persistent', { reason: `Grid size ${d.gridSize} still exceeds max ${d.maxAllowed} after grace` }).catch((err) => {
1264
+ bot.manager?.logger?.log?.(`[GRID-BLOAT] Structural resync request failed: ${err.message}`, 'error');
1265
+ });
1266
+ }
1267
+ else {
1268
+ clearGridBloatFlag(bot.manager);
1269
+ bot._log('[GRID-BLOAT] Grid size returned to normal. Clearing bloat flag.', 'info');
1270
+ }
1271
+ }
1272
+ }
1273
+ // Gap 4: Periodic lightweight consistency check. Fetches open order count
1274
+ // from chain and compares to grid active order count. Triggers a targeted
1275
+ // sync when significant divergence is detected. Runs at most once per
1276
+ // LIGHTWEIGHT_SYNC_CHECK_INTERVAL_MS to limit blockchain query load.
1277
+ // Skip if the COW pipeline has active CREATEs in flight to avoid racing
1278
+ // with batch broadcasts — transient mismatches are expected during a COW cycle.
1279
+ if (!bot._batchInFlight &&
1280
+ !(bot.manager?._pendingBroadcasts?.size > 0) &&
1281
+ (bot._lightweightSyncCheckAt == null || Date.now() - bot._lightweightSyncCheckAt >= TIMING.LIGHTWEIGHT_SYNC_CHECK_INTERVAL_MS)) {
1282
+ bot._lightweightSyncCheckAt = Date.now();
1283
+ try {
1284
+ const chainOpenOrdersResult = await chainOrders.readOpenOrders(bot.accountId);
1285
+ const chainOrdersCount = chainOpenOrdersResult.length;
1286
+ const gridActive = Array.from(bot.manager.orders.values()).filter((o) => isOrderOnChain(o)).length;
1287
+ const diff = Math.abs(chainOrdersCount - gridActive);
1288
+ if (diff > 2) {
1289
+ bot._log(`[LIGHTWEIGHT-SYNC] Order count mismatch: chain=${chainOrdersCount}, grid=${gridActive} ` +
1290
+ `(diff=${diff}). Triggering targeted sync to reconcile.`, 'warn');
1291
+ if (bot.manager?.synchronizeWithChain) {
1292
+ await bot.manager.synchronizeWithChain(chainOpenOrdersResult, 'readOpenOrders');
1293
+ }
1294
+ }
1295
+ else if (diff > 0) {
1296
+ bot._log(`[LIGHTWEIGHT-SYNC] Order count mismatch: chain=${chainOrdersCount}, grid=${gridActive} ` +
1297
+ `(diff=${diff}). Minor divergence — expected during normal operation.`, 'debug');
1298
+ }
1299
+ }
1300
+ catch (e) {
1301
+ bot._log(`[LIGHTWEIGHT-SYNC] Check failed: ${e.message}`, 'debug');
1302
+ }
1303
+ }
1257
1304
  // Process any price corrections queued by prior sync operations before
1258
1305
  // the pipeline gate. Pending corrections block isPipelineEmpty, and no
1259
1306
  // other code path clears them outside of _consumeFillQueue (which only
@@ -1284,7 +1331,6 @@ async function executeMaintenanceLogic(bot, context) {
1284
1331
  const dustCancelResult = await cancelDustOrders(bot, {
1285
1332
  buy: healthResult.buyDustOrders,
1286
1333
  sell: healthResult.sellDustOrders,
1287
- fillLockAlreadyHeld: true,
1288
1334
  });
1289
1335
  if (dustCancelResult?.batchResult?.aborted) {
1290
1336
  return;
@@ -1292,7 +1338,7 @@ async function executeMaintenanceLogic(bot, context) {
1292
1338
  try {
1293
1339
  const persistedGridData = bot.accountOrders.loadGrid(true) || [];
1294
1340
  const calculatedGrid = Array.from(bot.manager.orders.values());
1295
- const divergence = await Grid.monitorDivergence(bot.manager, calculatedGrid, persistedGridData);
1341
+ const divergence = await monitorDivergence(bot.manager, calculatedGrid, persistedGridData);
1296
1342
  if (divergence.needsUpdate) {
1297
1343
  const hasRmsDivergence = !!(divergence.buy.rms || divergence.sell.rms);
1298
1344
  if (divergence.buy.ratio || divergence.sell.ratio) {
@@ -1359,9 +1405,17 @@ async function executeMaintenanceLogic(bot, context) {
1359
1405
  */
1360
1406
  async function cancelOrderWithNodeFallback(bot, order) {
1361
1407
  try {
1362
- const nodes = getNodeManager().getHealthyNodes();
1408
+ const nodeManager = getNodeManager();
1409
+ const nodes = nodeManager.getHealthyNodes();
1363
1410
  const fallbackNodes = nodes.length > 1 ? nodes.slice(1) : undefined;
1364
- return await chainOrders.cancelOrder(bot.account, bot.privateKey, order.orderId, fallbackNodes ? { fallbackNodes } : {});
1411
+ return await chainOrders.cancelOrder(bot.account, bot.privateKey, order.orderId, fallbackNodes
1412
+ ? {
1413
+ fallbackNodes,
1414
+ onNodeFailed: (nodeUrl) => {
1415
+ nodeManager.reportNodeFailure(nodeUrl, 'BROADCAST_DEADLINE', 'broadcast');
1416
+ },
1417
+ }
1418
+ : {});
1365
1419
  }
1366
1420
  catch (err) {
1367
1421
  if (err instanceof BroadcastUncertainError) {
@@ -1379,10 +1433,9 @@ async function cancelOrderWithNodeFallback(bot, order) {
1379
1433
  * @param {Object} [options] - Dust cancellation options
1380
1434
  * @param {import('./types').Order[]} [options.buy=[]] - Buy-side dust orders
1381
1435
  * @param {import('./types').Order[]} [options.sell=[]] - Sell-side dust orders
1382
- * @param {boolean} [options.fillLockAlreadyHeld=false] - Skip fill-processing lock re-entry (caller already holds it)
1383
1436
  * @returns {Promise<{cancelledCount: number, batchResult: {aborted: boolean}|null}>}
1384
1437
  */
1385
- async function cancelDustOrders(bot, { buy: buyDust = [], sell: sellDust = [], fillLockAlreadyHeld = false } = {}) {
1438
+ async function cancelDustOrders(bot, { buy: buyDust = [], sell: sellDust = [] } = {}) {
1386
1439
  const allDust = [...buyDust, ...sellDust];
1387
1440
  if (allDust.length === 0)
1388
1441
  return { cancelledCount: 0, batchResult: null };
@@ -1396,10 +1449,10 @@ async function cancelDustOrders(bot, { buy: buyDust = [], sell: sellDust = [], f
1396
1449
  if (cancelResult?.verifiedAfterFailure) {
1397
1450
  const accountRef = bot.accountId || bot.account;
1398
1451
  const chainOpenOrders = await chainOrders.readOpenOrders(accountRef);
1399
- await bot.manager.synchronizeWithChain(chainOpenOrders, 'readOpenOrders', { fillLockAlreadyHeld: true, protectCommittedOrders: true });
1452
+ await bot.manager.synchronizeWithChain(chainOpenOrders, 'readOpenOrders');
1400
1453
  }
1401
1454
  else {
1402
- await bot.manager.synchronizeWithChain({ orderId: order.orderId, clearSize: true }, 'cancelOrder', { fillLockAlreadyHeld });
1455
+ await bot.manager.synchronizeWithChain({ orderId: order.orderId, clearSize: true }, 'cancelOrder');
1403
1456
  }
1404
1457
  }
1405
1458
  catch (refetchErr) {
@@ -1433,15 +1486,10 @@ async function cancelDustOrders(bot, { buy: buyDust = [], sell: sellDust = [], f
1433
1486
  * @param {import('./dexbot_class').DEXBot} bot
1434
1487
  * @param {string} [context='periodic'] - Context label for logging
1435
1488
  * @param {Object} [options] - Maintenance options
1436
- * @param {boolean} [options.fillLockAlreadyHeld=false] - Skip fill lock acquisition if already held
1437
1489
  * @param {boolean} [options.skipIdle=false] - Skip idle delay check
1438
1490
  * @returns {Promise<void>}
1439
1491
  */
1440
1492
  async function runGridMaintenance(bot, context = 'periodic', options = {}) {
1441
- if (options === null || typeof options !== 'object' || Array.isArray(options)) {
1442
- throw new TypeError('Grid maintenance options must be an object');
1443
- }
1444
- const fillLockAlreadyHeld = options.fillLockAlreadyHeld === true;
1445
1493
  const skipIdle = options.skipIdle === true;
1446
1494
  if (!skipIdle) {
1447
1495
  const idleDelayMs = getMaintenanceIdleDelayMs(bot);
@@ -1455,13 +1503,6 @@ async function runGridMaintenance(bot, context = 'periodic', options = {}) {
1455
1503
  try {
1456
1504
  if (!bot.manager)
1457
1505
  return;
1458
- // Lock-ordering contract:
1459
- // - When fillLockAlreadyHeld=false this function acquires
1460
- // _fillProcessingLock first, then _divergenceLock (canonical order).
1461
- // - When fillLockAlreadyHeld=true the caller must already hold
1462
- // _fillProcessingLock; only _divergenceLock is acquired here.
1463
- // AsyncLock is NOT reentrant — acquiring in the reverse order anywhere
1464
- // else in the bot would deadlock against the path above.
1465
1506
  const runWithDivergenceLock = async () => {
1466
1507
  // Re-check orders size under the divergence lock to avoid a TOCTOU
1467
1508
  // race with concurrent order mutations. The previous placement
@@ -1471,14 +1512,9 @@ async function runGridMaintenance(bot, context = 'periodic', options = {}) {
1471
1512
  return;
1472
1513
  await executeMaintenanceLogic(bot, context);
1473
1514
  };
1474
- if (fillLockAlreadyHeld) {
1515
+ await bot.manager._fillProcessingLock.acquire(async () => {
1475
1516
  await bot.manager._divergenceLock.acquire(runWithDivergenceLock);
1476
- }
1477
- else {
1478
- await bot.manager._fillProcessingLock.acquire(async () => {
1479
- await bot.manager._divergenceLock.acquire(runWithDivergenceLock);
1480
- });
1481
- }
1517
+ });
1482
1518
  }
1483
1519
  catch (err) {
1484
1520
  bot._warn(`Error during ${context} grid maintenance: ${err.message}`);