@dbos-inc/dbos-sdk 0.7.25-preview → 0.8.12-preview

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 (125) hide show
  1. package/dist/src/cloud-cli/applications/configure.d.ts.map +1 -1
  2. package/dist/src/cloud-cli/applications/configure.js +12 -2
  3. package/dist/src/cloud-cli/applications/configure.js.map +1 -1
  4. package/dist/src/cloud-cli/applications/delete-app.js +1 -1
  5. package/dist/src/cloud-cli/applications/delete-app.js.map +1 -1
  6. package/dist/src/cloud-cli/applications/deploy-app-code.d.ts.map +1 -1
  7. package/dist/src/cloud-cli/applications/deploy-app-code.js +10 -2
  8. package/dist/src/cloud-cli/applications/deploy-app-code.js.map +1 -1
  9. package/dist/src/cloud-cli/applications/get-app-logs.js +1 -1
  10. package/dist/src/cloud-cli/applications/get-app-logs.js.map +1 -1
  11. package/dist/src/cloud-cli/applications/list-apps.js +1 -1
  12. package/dist/src/cloud-cli/applications/list-apps.js.map +1 -1
  13. package/dist/src/cloud-cli/applications/register-app.js +1 -1
  14. package/dist/src/cloud-cli/applications/register-app.js.map +1 -1
  15. package/dist/src/cloud-cli/applications/update-app.d.ts.map +1 -1
  16. package/dist/src/cloud-cli/applications/update-app.js +3 -2
  17. package/dist/src/cloud-cli/applications/update-app.js.map +1 -1
  18. package/dist/src/cloud-cli/cli.js +19 -7
  19. package/dist/src/cloud-cli/cli.js.map +1 -1
  20. package/dist/src/cloud-cli/login.d.ts.map +1 -1
  21. package/dist/src/cloud-cli/login.js +3 -2
  22. package/dist/src/cloud-cli/login.js.map +1 -1
  23. package/dist/src/cloud-cli/register.js +1 -1
  24. package/dist/src/cloud-cli/register.js.map +1 -1
  25. package/dist/src/cloud-cli/userdb.d.ts +2 -0
  26. package/dist/src/cloud-cli/userdb.d.ts.map +1 -1
  27. package/dist/src/cloud-cli/userdb.js +102 -8
  28. package/dist/src/cloud-cli/userdb.js.map +1 -1
  29. package/dist/src/communicator.d.ts +3 -2
  30. package/dist/src/communicator.d.ts.map +1 -1
  31. package/dist/src/communicator.js.map +1 -1
  32. package/dist/src/context.d.ts +3 -3
  33. package/dist/src/context.d.ts.map +1 -1
  34. package/dist/src/context.js +8 -8
  35. package/dist/src/context.js.map +1 -1
  36. package/dist/src/dbos-executor.d.ts +19 -7
  37. package/dist/src/dbos-executor.d.ts.map +1 -1
  38. package/dist/src/dbos-executor.js +186 -67
  39. package/dist/src/dbos-executor.js.map +1 -1
  40. package/dist/src/dbos-runtime/cli.d.ts +0 -1
  41. package/dist/src/dbos-runtime/cli.d.ts.map +1 -1
  42. package/dist/src/dbos-runtime/cli.js +14 -2
  43. package/dist/src/dbos-runtime/cli.js.map +1 -1
  44. package/dist/src/dbos-runtime/config.d.ts +3 -0
  45. package/dist/src/dbos-runtime/config.d.ts.map +1 -1
  46. package/dist/src/dbos-runtime/config.js +0 -1
  47. package/dist/src/dbos-runtime/config.js.map +1 -1
  48. package/dist/src/dbos-runtime/debug.d.ts +4 -0
  49. package/dist/src/dbos-runtime/debug.d.ts.map +1 -0
  50. package/dist/src/dbos-runtime/debug.js +23 -0
  51. package/dist/src/dbos-runtime/debug.js.map +1 -0
  52. package/dist/src/dbos-runtime/runtime.d.ts +2 -2
  53. package/dist/src/dbos-runtime/runtime.d.ts.map +1 -1
  54. package/dist/src/dbos-runtime/runtime.js +20 -21
  55. package/dist/src/dbos-runtime/runtime.js.map +1 -1
  56. package/dist/src/debugger/debug_workflow.d.ts +8 -8
  57. package/dist/src/debugger/debug_workflow.d.ts.map +1 -1
  58. package/dist/src/debugger/debug_workflow.js +107 -36
  59. package/dist/src/debugger/debug_workflow.js.map +1 -1
  60. package/dist/src/httpServer/handler.d.ts +1 -1
  61. package/dist/src/httpServer/handler.d.ts.map +1 -1
  62. package/dist/src/httpServer/handler.js +14 -14
  63. package/dist/src/httpServer/handler.js.map +1 -1
  64. package/dist/src/httpServer/server.d.ts +4 -4
  65. package/dist/src/httpServer/server.d.ts.map +1 -1
  66. package/dist/src/httpServer/server.js +17 -17
  67. package/dist/src/httpServer/server.js.map +1 -1
  68. package/dist/src/{dbos-runtime → staticAnalysis}/TypeParser.d.ts +4 -0
  69. package/dist/src/staticAnalysis/TypeParser.d.ts.map +1 -0
  70. package/dist/src/{dbos-runtime → staticAnalysis}/TypeParser.js +34 -1
  71. package/dist/src/staticAnalysis/TypeParser.js.map +1 -0
  72. package/dist/src/{dbos-runtime → staticAnalysis}/openApi.d.ts.map +1 -1
  73. package/dist/src/{dbos-runtime → staticAnalysis}/openApi.js +1 -31
  74. package/dist/src/staticAnalysis/openApi.js.map +1 -0
  75. package/dist/src/staticAnalysis/tsDiagUtil.d.ts.map +1 -0
  76. package/dist/src/staticAnalysis/tsDiagUtil.js.map +1 -0
  77. package/dist/src/system_database.d.ts +22 -9
  78. package/dist/src/system_database.d.ts.map +1 -1
  79. package/dist/src/system_database.js +44 -42
  80. package/dist/src/system_database.js.map +1 -1
  81. package/dist/src/telemetry/collector.d.ts +5 -5
  82. package/dist/src/telemetry/collector.d.ts.map +1 -1
  83. package/dist/src/telemetry/collector.js +5 -17
  84. package/dist/src/telemetry/collector.js.map +1 -1
  85. package/dist/src/telemetry/exporters.d.ts +11 -24
  86. package/dist/src/telemetry/exporters.d.ts.map +1 -1
  87. package/dist/src/telemetry/exporters.js +42 -129
  88. package/dist/src/telemetry/exporters.js.map +1 -1
  89. package/dist/src/telemetry/index.d.ts +6 -2
  90. package/dist/src/telemetry/index.d.ts.map +1 -1
  91. package/dist/src/telemetry/index.js +16 -0
  92. package/dist/src/telemetry/index.js.map +1 -1
  93. package/dist/src/telemetry/logs.d.ts +35 -11
  94. package/dist/src/telemetry/logs.d.ts.map +1 -1
  95. package/dist/src/telemetry/logs.js +158 -53
  96. package/dist/src/telemetry/logs.js.map +1 -1
  97. package/dist/src/telemetry/traces.d.ts +1 -6
  98. package/dist/src/telemetry/traces.d.ts.map +1 -1
  99. package/dist/src/telemetry/traces.js +2 -34
  100. package/dist/src/telemetry/traces.js.map +1 -1
  101. package/dist/src/testing/testing_runtime.d.ts +1 -1
  102. package/dist/src/testing/testing_runtime.d.ts.map +1 -1
  103. package/dist/src/testing/testing_runtime.js +8 -2
  104. package/dist/src/testing/testing_runtime.js.map +1 -1
  105. package/dist/src/transaction.d.ts +1 -1
  106. package/dist/src/transaction.d.ts.map +1 -1
  107. package/dist/src/workflow.d.ts +16 -1
  108. package/dist/src/workflow.d.ts.map +1 -1
  109. package/dist/src/workflow.js +103 -61
  110. package/dist/src/workflow.js.map +1 -1
  111. package/examples/hello/README.md +1 -1
  112. package/examples/hello/dbos-config.yaml +3 -0
  113. package/package.json +3 -2
  114. package/dist/src/dbos-runtime/TypeParser.d.ts.map +0 -1
  115. package/dist/src/dbos-runtime/TypeParser.js.map +0 -1
  116. package/dist/src/dbos-runtime/openApi.js.map +0 -1
  117. package/dist/src/dbos-runtime/tsDiagUtil.d.ts.map +0 -1
  118. package/dist/src/dbos-runtime/tsDiagUtil.js.map +0 -1
  119. package/dist/src/telemetry/signals.d.ts +0 -20
  120. package/dist/src/telemetry/signals.d.ts.map +0 -1
  121. package/dist/src/telemetry/signals.js +0 -11
  122. package/dist/src/telemetry/signals.js.map +0 -1
  123. /package/dist/src/{dbos-runtime → staticAnalysis}/openApi.d.ts +0 -0
  124. /package/dist/src/{dbos-runtime → staticAnalysis}/tsDiagUtil.d.ts +0 -0
  125. /package/dist/src/{dbos-runtime → staticAnalysis}/tsDiagUtil.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"communicator.d.ts","sourceRoot":"","sources":["../../src/communicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,aAAa,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGzD,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAErG,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IAEtD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,uBAAwB,SAAQ,eAAgB,YAAW,mBAAmB;IAEzF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAGjB,eAAe,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM;CAY/I"}
1
+ {"version":3,"file":"communicator.d.ts","sourceRoot":"","sources":["../../src/communicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAErG,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IAEtD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,uBAAwB,SAAQ,eAAgB,YAAW,mBAAmB;IACzF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAGjB,eAAe,EAAE,mBAAmB,GAAG,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM;CAYtK"}
@@ -1 +1 @@
1
- {"version":3,"file":"communicator.js","sourceRoot":"","sources":["../../src/communicator.ts"],"names":[],"mappings":";;;AAGA,uCAAyD;AAkBzD,MAAa,uBAAwB,SAAQ,yBAAe;IAEjD,UAAU,CAAS;IACnB,cAAc,CAAU;IACxB,eAAe,CAAS;IACxB,WAAW,CAAS;IACpB,WAAW,CAAS;IAE7B,iCAAiC;IACjC,YAAY,eAAoC,EAAE,UAAkB,EAAE,IAAU,EAAE,MAAc,EAAE,MAA0B,EAAE,QAAgB;QAC5I,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;QACpD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;QAC3C,IAAI,eAAe,CAAC,iBAAiB,EAAE;YACrC,mEAAmE;YAClE,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,iBAAiB,CAAC;SAC7D;IACH,CAAC;CACF;AArBD,0DAqBC"}
1
+ {"version":3,"file":"communicator.js","sourceRoot":"","sources":["../../src/communicator.ts"],"names":[],"mappings":";;;AAGA,uCAAyD;AAmBzD,MAAa,uBAAwB,SAAQ,yBAAe;IACjD,UAAU,CAAS;IACnB,cAAc,CAAU;IACxB,eAAe,CAAS;IACxB,WAAW,CAAS;IACpB,WAAW,CAAS;IAE7B,iCAAiC;IACjC,YAAY,eAA2D,EAAE,UAAkB,EAAE,IAAU,EAAE,MAAc,EAAE,MAA0B,EAAE,QAAgB;QACnK,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;QACpD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;QAC3C,IAAI,eAAe,CAAC,iBAAiB,EAAE;YACrC,mEAAmE;YACnE,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,iBAAiB,CAAC;SAC5D;IACH,CAAC;CACF;AApBD,0DAoBC"}
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
3
  import { Span } from "@opentelemetry/sdk-trace-base";
4
- import { WinstonLogger as Logger, Logger as DBOSLogger } from "./telemetry/logs";
4
+ import { GlobalLogger as Logger, Logger as DBOSLogger } from "./telemetry/logs";
5
5
  import { IncomingHttpHeaders } from "http";
6
6
  import { ParsedUrlQuery } from "querystring";
7
7
  import { DBOSExecutor } from "./dbos-executor";
@@ -47,11 +47,11 @@ export declare class DBOSContextImpl implements DBOSContext {
47
47
  * TODO : move logger and application, getConfig to a BaseContext which is at the root of all contexts
48
48
  */
49
49
  export declare class InitContext {
50
- readonly wfe: DBOSExecutor;
50
+ readonly dbosExec: DBOSExecutor;
51
51
  readonly logger: Logger;
52
52
  private userDatabase;
53
53
  private application;
54
- constructor(wfe: DBOSExecutor);
54
+ constructor(dbosExec: DBOSExecutor);
55
55
  createUserSchema(): Promise<void>;
56
56
  dropUserSchema(): Promise<void>;
57
57
  queryUserDB<R>(sql: string, ...params: unknown[]): Promise<R[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEpB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IACzC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC;CAC/C;AAED,qBAAa,eAAgB,YAAW,WAAW;IAQrC,QAAQ,CAAC,aAAa,EAAE,MAAM;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI;IAP/D,OAAO,EAAE,WAAW,CAAM;IAC1B,iBAAiB,EAAE,MAAM,CAAM;IAC/B,kBAAkB,EAAE,MAAM,EAAE,CAAM;IAClC,WAAW,EAAE,MAAM,CAAM;IACzB,YAAY,EAAE,MAAM,CAAM;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAEP,aAAa,EAAE,MAAM,EAAW,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,eAAe;IAW5G,mCAAmC;IAEnC,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IACxC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC;CAmB9C;AAGD;;GAEG;AACH,qBAAa,WAAW;IASV,QAAQ,CAAC,QAAQ,EAAE,YAAY;IAP3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAGxB,OAAO,CAAC,YAAY,CAAe;IAEnC,OAAO,CAAC,WAAW,CAAM;gBAEJ,QAAQ,EAAE,YAAY;IAO3C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAK/D,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IACxC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC;CAmB9C"}
@@ -16,7 +16,6 @@ class DBOSContextImpl {
16
16
  constructor(operationName, span, logger, parentCtx) {
17
17
  this.operationName = operationName;
18
18
  this.span = span;
19
- this.logger = new logs_1.Logger(logger, this);
20
19
  if (parentCtx) {
21
20
  this.request = parentCtx.request;
22
21
  this.authenticatedUser = parentCtx.authenticatedUser;
@@ -24,6 +23,7 @@ class DBOSContextImpl {
24
23
  this.assumedRole = parentCtx.assumedRole;
25
24
  this.workflowUUID = parentCtx.workflowUUID;
26
25
  }
26
+ this.logger = new logs_1.Logger(logger, this);
27
27
  }
28
28
  /*** Application configuration ***/
29
29
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -50,18 +50,18 @@ exports.DBOSContextImpl = DBOSContextImpl;
50
50
  * TODO : move logger and application, getConfig to a BaseContext which is at the root of all contexts
51
51
  */
52
52
  class InitContext {
53
- wfe;
53
+ dbosExec;
54
54
  logger;
55
55
  // All private Not exposed
56
56
  userDatabase;
57
57
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
58
  application;
59
- constructor(wfe) {
60
- this.wfe = wfe;
61
- this.logger = wfe.logger;
62
- this.userDatabase = wfe.userDatabase;
59
+ constructor(dbosExec) {
60
+ this.dbosExec = dbosExec;
61
+ this.logger = dbosExec.logger;
62
+ this.userDatabase = dbosExec.userDatabase;
63
63
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
64
- this.application = wfe.config.application;
64
+ this.application = dbosExec.config.application;
65
65
  }
66
66
  createUserSchema() {
67
67
  return this.userDatabase.createSchema();
@@ -83,7 +83,7 @@ class InitContext {
83
83
  }
84
84
  // If the key is found and the default value is provided, check whether the value is of the same type.
85
85
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
86
- const value = (0, lodash_1.get)(this.wfe.config.application, key);
86
+ const value = (0, lodash_1.get)(this.dbosExec.config.application, key);
87
87
  if (defaultValue && typeof value !== typeof defaultValue) {
88
88
  throw new error_1.DBOSConfigKeyTypeError(key, typeof defaultValue, typeof value);
89
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { Transaction, TransactionConfig } from './transaction';
4
4
  import { CommunicatorConfig, Communicator } from './communicator';
5
5
  import { TelemetryCollector } from './telemetry/collector';
6
6
  import { Tracer } from './telemetry/traces';
7
- import { WinstonLogger as Logger } from './telemetry/logs';
7
+ import { GlobalLogger as Logger } from './telemetry/logs';
8
8
  import { TelemetryConfig } from './telemetry';
9
9
  import { PoolConfig } from 'pg';
10
10
  import { SystemDatabase } from './system_database';
@@ -13,6 +13,7 @@ import { MethodRegistrationBase } from './decorators';
13
13
  export interface DBOSNull {
14
14
  }
15
15
  export declare const dbosNull: DBOSNull;
16
+ export declare const DBOSExecutorIDHeader = "dbos-executor-id";
16
17
  export interface DBOSConfig {
17
18
  readonly poolConfig: PoolConfig;
18
19
  readonly userDbclient?: UserDatabaseName;
@@ -23,27 +24,37 @@ export interface DBOSConfig {
23
24
  readonly dbClientMetadata?: any;
24
25
  readonly debugProxy?: string;
25
26
  }
26
- interface WorkflowInfo<T extends any[], R> {
27
- workflow: Workflow<T, R>;
27
+ interface WorkflowInfo {
28
+ workflow: Workflow<any, any>;
28
29
  config: WorkflowConfig;
29
30
  }
31
+ interface TransactionInfo {
32
+ transaction: Transaction<any, any>;
33
+ config: TransactionConfig;
34
+ }
35
+ interface CommunicatorInfo {
36
+ communicator: Communicator<any, any>;
37
+ config: CommunicatorConfig;
38
+ }
30
39
  export declare class DBOSExecutor {
31
40
  #private;
32
41
  readonly config: DBOSConfig;
33
42
  initialized: boolean;
34
43
  userDatabase: UserDatabase;
35
44
  readonly systemDatabase: SystemDatabase;
36
- readonly tempWorkflowName = "temp_workflow";
37
- readonly workflowInfoMap: Map<string, WorkflowInfo<any, any>>;
38
- readonly transactionConfigMap: Map<string, TransactionConfig>;
39
- readonly communicatorConfigMap: Map<string, CommunicatorConfig>;
45
+ static readonly tempWorkflowName = "temp_workflow";
46
+ readonly workflowInfoMap: Map<string, WorkflowInfo>;
47
+ readonly transactionInfoMap: Map<string, TransactionInfo>;
48
+ readonly communicatorInfoMap: Map<string, CommunicatorInfo>;
40
49
  readonly registeredOperations: Array<MethodRegistrationBase>;
41
50
  readonly pendingWorkflowMap: Map<string, Promise<unknown>>;
51
+ readonly pendingAsyncWrites: Map<string, Promise<unknown>>;
42
52
  readonly telemetryCollector: TelemetryCollector;
43
53
  readonly flushBufferIntervalMs: number;
44
54
  readonly flushBufferID: NodeJS.Timeout;
45
55
  static readonly defaultNotificationTimeoutSec = 60;
46
56
  readonly debugMode: boolean;
57
+ static systemDBSchemaName: string;
47
58
  readonly logger: Logger;
48
59
  readonly tracer: Tracer;
49
60
  entities: Function[];
@@ -73,6 +84,7 @@ export declare class DBOSExecutor {
73
84
  * It runs to completion all pending workflows that were executing when the previous executor failed.
74
85
  */
75
86
  recoverPendingWorkflows(executorIDs?: string[]): Promise<WorkflowHandle<any>[]>;
87
+ executeWorkflowUUID(workflowUUID: string): Promise<WorkflowHandle<unknown>>;
76
88
  /**
77
89
  * Periodically flush the workflow output buffer to the system database.
78
90
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dbos-executor.d.ts","sourceRoot":"","sources":["../../src/dbos-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dbos-executor.d.ts","sourceRoot":"","sources":["../../src/dbos-executor.ts"],"names":[],"mappings":"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"}
@@ -3,14 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DBOSExecutor = exports.dbosNull = void 0;
6
+ exports.DBOSExecutor = exports.DBOSExecutorIDHeader = exports.dbosNull = void 0;
7
7
  /* eslint-disable @typescript-eslint/no-explicit-any */
8
8
  const error_1 = require("./error");
9
9
  const workflow_1 = require("./workflow");
10
- const exporters_1 = require("./telemetry/exporters");
10
+ const transaction_1 = require("./transaction");
11
11
  const collector_1 = require("./telemetry/collector");
12
12
  const traces_1 = require("./telemetry/traces");
13
13
  const logs_1 = require("./telemetry/logs");
14
+ const exporters_1 = require("./telemetry/exporters");
14
15
  const system_database_1 = require("./system_database");
15
16
  const uuid_1 = require("uuid");
16
17
  const user_database_1 = require("./user_database");
@@ -19,7 +20,14 @@ const api_1 = require("@opentelemetry/api");
19
20
  const knex_1 = __importDefault(require("knex"));
20
21
  const context_1 = require("./context");
21
22
  const debug_workflow_1 = require("./debugger/debug_workflow");
23
+ const serialize_error_1 = require("serialize-error");
22
24
  exports.dbosNull = {};
25
+ exports.DBOSExecutorIDHeader = "dbos-executor-id";
26
+ const TempWorkflowType = {
27
+ transaction: "transaction",
28
+ external: "external",
29
+ send: "send",
30
+ };
23
31
  class DBOSExecutor {
24
32
  config;
25
33
  initialized;
@@ -28,11 +36,11 @@ class DBOSExecutor {
28
36
  // System Database
29
37
  systemDatabase;
30
38
  // Temporary workflows are created by calling transaction/send/recv directly from the executor class
31
- tempWorkflowName = "temp_workflow";
39
+ static tempWorkflowName = "temp_workflow";
32
40
  workflowInfoMap = new Map([
33
41
  // We initialize the map with an entry for temporary workflows.
34
42
  [
35
- this.tempWorkflowName,
43
+ DBOSExecutor.tempWorkflowName,
36
44
  {
37
45
  // eslint-disable-next-line @typescript-eslint/require-await
38
46
  workflow: async () => this.logger.error("UNREACHABLE: Indirect invoke of temp workflow"),
@@ -40,15 +48,17 @@ class DBOSExecutor {
40
48
  },
41
49
  ],
42
50
  ]);
43
- transactionConfigMap = new Map();
44
- communicatorConfigMap = new Map();
51
+ transactionInfoMap = new Map();
52
+ communicatorInfoMap = new Map();
45
53
  registeredOperations = [];
46
- pendingWorkflowMap = new Map(); // Map from workflowUUID to workflow promise.
54
+ pendingWorkflowMap = new Map(); // Map from workflowUUID to workflow promise
55
+ pendingAsyncWrites = new Map(); // Map from workflowUUID to asynchronous write promise
47
56
  telemetryCollector;
48
57
  flushBufferIntervalMs = 1000;
49
58
  flushBufferID;
50
59
  static defaultNotificationTimeoutSec = 60;
51
60
  debugMode;
61
+ static systemDBSchemaName = "public";
52
62
  logger;
53
63
  tracer;
54
64
  // eslint-disable-next-line @typescript-eslint/ban-types
@@ -57,9 +67,28 @@ class DBOSExecutor {
57
67
  constructor(config, systemDatabase) {
58
68
  this.config = config;
59
69
  this.debugMode = config.debugProxy ? true : false;
60
- this.logger = (0, logs_1.createGlobalLogger)(this.config.telemetry?.logs);
70
+ if (config.telemetry?.OTLPExporter) {
71
+ const OTLPExporter = new exporters_1.TelemetryExporter(config.telemetry.OTLPExporter);
72
+ this.telemetryCollector = new collector_1.TelemetryCollector(OTLPExporter);
73
+ }
74
+ else {
75
+ // We always an collector to drain the signals queue, even if we don't have an exporter.
76
+ this.telemetryCollector = new collector_1.TelemetryCollector();
77
+ }
78
+ this.logger = new logs_1.GlobalLogger(this.telemetryCollector, this.config.telemetry?.logs);
79
+ this.tracer = new traces_1.Tracer(this.telemetryCollector);
61
80
  if (this.debugMode) {
62
81
  this.logger.info("Running in debug mode!");
82
+ try {
83
+ const url = new URL(this.config.debugProxy);
84
+ this.config.poolConfig.host = url.hostname;
85
+ this.config.poolConfig.port = parseInt(url.port, 10);
86
+ this.logger.info(`Debugging mode proxy: ${this.config.poolConfig.host}:${this.config.poolConfig.port}`);
87
+ }
88
+ catch (err) {
89
+ this.logger.error(err);
90
+ throw err;
91
+ }
63
92
  }
64
93
  if (systemDatabase) {
65
94
  this.logger.debug("Using provided system database"); // XXX print the name or something
@@ -75,31 +104,11 @@ class DBOSExecutor {
75
104
  }
76
105
  }, this.flushBufferIntervalMs);
77
106
  this.logger.debug("Started workflow status buffer worker");
78
- // Add Jaeger exporter if tracing is enabled
79
- const telemetryExporters = [];
80
- if (this.config.telemetry?.traces?.enabled && !this.debugMode) {
81
- telemetryExporters.push(new exporters_1.JaegerExporter(this.config.telemetry?.traces?.endpoint));
82
- this.logger.debug("Loaded Jaeger Telemetry Exporter");
83
- }
84
- this.telemetryCollector = new collector_1.TelemetryCollector(telemetryExporters);
85
- this.tracer = new traces_1.Tracer(this.telemetryCollector);
86
107
  this.initialized = false;
87
108
  }
88
109
  configureDbClient() {
89
110
  const userDbClient = this.config.userDbclient;
90
- const userDBConfig = JSON.parse(JSON.stringify(this.config.poolConfig)); // Deep copy
91
- if (this.debugMode) {
92
- try {
93
- const url = new URL(this.config.debugProxy);
94
- userDBConfig.host = url.hostname;
95
- userDBConfig.port = parseInt(url.port, 10);
96
- this.logger.info(`Debugging mode proxy: ${userDBConfig.host}:${userDBConfig.port}`);
97
- }
98
- catch (err) {
99
- this.logger.error(err);
100
- return;
101
- }
102
- }
111
+ const userDBConfig = this.config.poolConfig;
103
112
  if (userDbClient === user_database_1.UserDatabaseName.PRISMA) {
104
113
  // TODO: make Prisma work with debugger proxy.
105
114
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires
@@ -112,8 +121,9 @@ class DBOSExecutor {
112
121
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires
113
122
  const DataSourceExports = require("typeorm");
114
123
  try {
124
+ this.userDatabase = new user_database_1.TypeORMDatabase(
115
125
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
116
- this.userDatabase = new user_database_1.TypeORMDatabase(new DataSourceExports.DataSource({
126
+ new DataSourceExports.DataSource({
117
127
  type: "postgres",
118
128
  host: userDBConfig.host,
119
129
  port: userDBConfig.port,
@@ -121,11 +131,12 @@ class DBOSExecutor {
121
131
  password: userDBConfig.password,
122
132
  database: userDBConfig.database,
123
133
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
124
- entities: this.entities
134
+ entities: this.entities,
125
135
  }));
126
136
  }
127
137
  catch (s) {
128
- this.logger.error("Error loading TypeORM user database");
138
+ s.message = `Error loading TypeORM user database: ${s.message}`;
139
+ this.logger.error(s);
129
140
  }
130
141
  this.logger.debug("Loaded TypeORM user database");
131
142
  }
@@ -139,7 +150,7 @@ class DBOSExecutor {
139
150
  password: userDBConfig.password,
140
151
  database: userDBConfig.database,
141
152
  ssl: userDBConfig.ssl,
142
- }
153
+ },
143
154
  };
144
155
  this.userDatabase = new user_database_1.KnexUserDatabase((0, knex_1.default)(knexConfig));
145
156
  this.logger.debug("Loaded Knex user database");
@@ -194,16 +205,14 @@ class DBOSExecutor {
194
205
  // Debug mode doesn't need to initialize the DBs. Everything should appear to be read-only.
195
206
  if (!this.debugMode) {
196
207
  await this.systemDatabase.init();
197
- await this.telemetryCollector.init(this.registeredOperations);
198
208
  await this.userDatabase.init(); // Skip user DB init because we're using the proxy.
199
209
  await this.recoverPendingWorkflows();
200
210
  }
201
211
  }
202
212
  catch (err) {
203
- if (err instanceof Error) {
204
- this.logger.error(`failed to initialize workflow executor: ${err.message}`, err, err.stack);
205
- throw new error_1.DBOSInitializationError(err.message);
206
- }
213
+ err.message = `failed to initialize workflow executor: ${err.message}`;
214
+ this.logger.error(err);
215
+ throw new error_1.DBOSInitializationError(`failed to initialize workflow executor: ${err.message}`);
207
216
  }
208
217
  this.initialized = true;
209
218
  // Only execute init code if under non-debug mode
@@ -223,6 +232,10 @@ class DBOSExecutor {
223
232
  this.logger.info("Waiting for pending workflows to finish.");
224
233
  await Promise.allSettled(this.pendingWorkflowMap.values());
225
234
  }
235
+ if (this.pendingAsyncWrites.size > 0) {
236
+ this.logger.info("Waiting for pending buffer flushes to finish");
237
+ await Promise.allSettled(this.pendingAsyncWrites.values());
238
+ }
226
239
  clearInterval(this.flushBufferID);
227
240
  await this.flushWorkflowStatusBuffer();
228
241
  await this.systemDatabase.destroy();
@@ -231,7 +244,7 @@ class DBOSExecutor {
231
244
  }
232
245
  /* WORKFLOW OPERATIONS */
233
246
  #registerWorkflow(wf, config = {}) {
234
- if (wf.name === this.tempWorkflowName || this.workflowInfoMap.has(wf.name)) {
247
+ if (wf.name === DBOSExecutor.tempWorkflowName || this.workflowInfoMap.has(wf.name)) {
235
248
  throw new error_1.DBOSError(`Repeated workflow name: ${wf.name}`);
236
249
  }
237
250
  const workflowInfo = {
@@ -241,16 +254,24 @@ class DBOSExecutor {
241
254
  this.workflowInfoMap.set(wf.name, workflowInfo);
242
255
  }
243
256
  #registerTransaction(txn, params = {}) {
244
- if (this.transactionConfigMap.has(txn.name)) {
257
+ if (this.transactionInfoMap.has(txn.name)) {
245
258
  throw new error_1.DBOSError(`Repeated Transaction name: ${txn.name}`);
246
259
  }
247
- this.transactionConfigMap.set(txn.name, params);
260
+ const txnInfo = {
261
+ transaction: txn,
262
+ config: params,
263
+ };
264
+ this.transactionInfoMap.set(txn.name, txnInfo);
248
265
  }
249
266
  #registerCommunicator(comm, params = {}) {
250
- if (this.communicatorConfigMap.has(comm.name)) {
267
+ if (this.communicatorInfoMap.has(comm.name)) {
251
268
  throw new error_1.DBOSError(`Repeated Commmunicator name: ${comm.name}`);
252
269
  }
253
- this.communicatorConfigMap.set(comm.name, params);
270
+ const commInfo = {
271
+ communicator: comm,
272
+ config: params,
273
+ };
274
+ this.communicatorInfoMap.set(comm.name, commInfo);
254
275
  }
255
276
  async workflow(wf, params, ...args) {
256
277
  if (this.debugMode) {
@@ -261,31 +282,58 @@ class DBOSExecutor {
261
282
  // If callerUUID and functionID are set, it means the workflow is invoked from within a workflow.
262
283
  async internalWorkflow(wf, params, callerUUID, callerFunctionID, ...args) {
263
284
  const workflowUUID = params.workflowUUID ? params.workflowUUID : this.#generateUUID();
285
+ const presetUUID = params.workflowUUID ? true : false;
264
286
  const wInfo = this.workflowInfoMap.get(wf.name);
265
287
  if (wInfo === undefined) {
266
288
  throw new error_1.DBOSNotRegisteredError(wf.name);
267
289
  }
268
290
  const wConfig = wInfo.config;
269
- const wCtxt = new workflow_1.WorkflowContextImpl(this, params.parentCtx, workflowUUID, wConfig, wf.name);
291
+ const wCtxt = new workflow_1.WorkflowContextImpl(this, params.parentCtx, workflowUUID, wConfig, wf.name, presetUUID);
270
292
  wCtxt.span.setAttributes({ args: JSON.stringify(args) }); // TODO enforce skipLogging & request for hashing
271
- // Synchronously set the workflow's status to PENDING and record workflow inputs. Not needed for temporary workflows.
293
+ let executorID = "local";
294
+ if (wCtxt.request.headers && wCtxt.request.headers[exports.DBOSExecutorIDHeader]) {
295
+ executorID = wCtxt.request.headers[exports.DBOSExecutorIDHeader];
296
+ }
297
+ const internalStatus = {
298
+ workflowUUID: workflowUUID,
299
+ status: workflow_1.StatusString.PENDING,
300
+ name: wf.name,
301
+ authenticatedUser: wCtxt.authenticatedUser,
302
+ output: undefined,
303
+ error: "",
304
+ assumedRole: wCtxt.assumedRole,
305
+ authenticatedRoles: wCtxt.authenticatedRoles,
306
+ request: wCtxt.request,
307
+ executorID: executorID,
308
+ };
309
+ // Synchronously set the workflow's status to PENDING and record workflow inputs.
272
310
  if (!wCtxt.isTempWorkflow) {
273
- args = await this.systemDatabase.initWorkflowStatus(workflowUUID, wf.name, wCtxt.authenticatedUser, wCtxt.assumedRole, wCtxt.authenticatedRoles, wCtxt.request, args);
311
+ args = await this.systemDatabase.initWorkflowStatus(internalStatus, args);
312
+ }
313
+ else {
314
+ // For temporary workflows, instead asynchronously record inputs.
315
+ const setWorkflowInputs = this.systemDatabase
316
+ .setWorkflowInputs(workflowUUID, args)
317
+ .catch((error) => {
318
+ error.message = `Error asynchronously setting workflow inputs: ${error.message}`;
319
+ this.logger.error(error);
320
+ })
321
+ .finally(() => {
322
+ this.pendingAsyncWrites.delete(workflowUUID);
323
+ });
324
+ this.pendingAsyncWrites.set(workflowUUID, setWorkflowInputs);
274
325
  }
275
326
  const runWorkflow = async () => {
276
- // Check if the workflow previously ran.
277
- const previousOutput = await this.systemDatabase.checkWorkflowOutput(workflowUUID);
278
- if (previousOutput !== exports.dbosNull) {
279
- wCtxt.span.setAttribute("cached", true);
280
- wCtxt.span.setStatus({ code: api_1.SpanStatusCode.OK });
281
- this.tracer.endSpan(wCtxt.span);
282
- return previousOutput;
283
- }
284
327
  let result;
285
328
  // Execute the workflow.
286
329
  try {
287
330
  result = await wf(wCtxt, ...args);
288
- this.systemDatabase.bufferWorkflowOutput(workflowUUID, result);
331
+ if (wCtxt.isTempWorkflow) {
332
+ internalStatus.name = `${DBOSExecutor.tempWorkflowName}-${wCtxt.tempWfOperationType}-${wCtxt.tempWfOperationName}`;
333
+ }
334
+ internalStatus.output = result;
335
+ internalStatus.status = workflow_1.StatusString.SUCCESS;
336
+ this.systemDatabase.bufferWorkflowOutput(workflowUUID, internalStatus);
289
337
  wCtxt.span.setStatus({ code: api_1.SpanStatusCode.OK });
290
338
  }
291
339
  catch (err) {
@@ -300,7 +348,12 @@ class DBOSExecutor {
300
348
  // Record the error.
301
349
  const e = err;
302
350
  this.logger.error(e);
303
- await this.systemDatabase.recordWorkflowError(workflowUUID, e);
351
+ if (wCtxt.isTempWorkflow) {
352
+ internalStatus.name = `${DBOSExecutor.tempWorkflowName}-${wCtxt.tempWfOperationType}-${wCtxt.tempWfOperationName}`;
353
+ }
354
+ internalStatus.error = JSON.stringify((0, serialize_error_1.serializeError)(e));
355
+ internalStatus.status = workflow_1.StatusString.ERROR;
356
+ await this.systemDatabase.recordWorkflowError(workflowUUID, internalStatus);
304
357
  // TODO: Log errors, but not in the tests when they're expected.
305
358
  wCtxt.span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: e.message });
306
359
  throw err;
@@ -309,6 +362,21 @@ class DBOSExecutor {
309
362
  finally {
310
363
  this.tracer.endSpan(wCtxt.span);
311
364
  }
365
+ // Asynchronously flush the result buffer.
366
+ const resultBufferFlush = this.userDatabase
367
+ .transaction(async (client) => {
368
+ if (wCtxt.resultBuffer.size > 0) {
369
+ await wCtxt.flushResultBuffer(client);
370
+ }
371
+ }, { isolationLevel: transaction_1.IsolationLevel.ReadCommitted })
372
+ .catch((error) => {
373
+ error.message = `Error asynchronously flushing result buffer: ${error.message}`;
374
+ this.logger.error(error);
375
+ })
376
+ .finally(() => {
377
+ this.pendingAsyncWrites.delete(workflowUUID);
378
+ });
379
+ this.pendingAsyncWrites.set(workflowUUID, resultBufferFlush);
312
380
  return result;
313
381
  };
314
382
  const workflowPromise = runWorkflow();
@@ -358,6 +426,8 @@ class DBOSExecutor {
358
426
  // Create a workflow and call transaction.
359
427
  const temp_workflow = async (ctxt, ...args) => {
360
428
  const ctxtImpl = ctxt;
429
+ ctxtImpl.tempWfOperationType = TempWorkflowType.transaction;
430
+ ctxtImpl.tempWfOperationName = txn.name;
361
431
  return await ctxtImpl.transaction(txn, ...args);
362
432
  };
363
433
  return (await this.workflow(temp_workflow, params, ...args)).getResult();
@@ -366,6 +436,8 @@ class DBOSExecutor {
366
436
  // Create a workflow and call external.
367
437
  const temp_workflow = async (ctxt, ...args) => {
368
438
  const ctxtImpl = ctxt;
439
+ ctxtImpl.tempWfOperationType = TempWorkflowType.external;
440
+ ctxtImpl.tempWfOperationName = commFn.name;
369
441
  return await ctxtImpl.external(commFn, ...args);
370
442
  };
371
443
  return (await this.workflow(temp_workflow, params, ...args)).getResult();
@@ -373,6 +445,8 @@ class DBOSExecutor {
373
445
  async send(destinationUUID, message, topic, idempotencyKey) {
374
446
  // Create a workflow and call send.
375
447
  const temp_workflow = async (ctxt, destinationUUID, message, topic) => {
448
+ const ctxtImpl = ctxt;
449
+ ctxtImpl.tempWfOperationType = TempWorkflowType.send;
376
450
  return await ctxt.send(destinationUUID, message, topic);
377
451
  };
378
452
  const workflowUUID = idempotencyKey ? destinationUUID + idempotencyKey : undefined;
@@ -408,23 +482,68 @@ class DBOSExecutor {
408
482
  const handlerArray = [];
409
483
  for (const workflowUUID of pendingWorkflows) {
410
484
  try {
411
- const wfStatus = await this.systemDatabase.getWorkflowStatus(workflowUUID);
412
- const inputs = await this.systemDatabase.getWorkflowInputs(workflowUUID);
413
- if (!inputs || !wfStatus) {
414
- this.logger.error(`Failed to find inputs during recover, workflow UUID: ${workflowUUID}`);
415
- continue;
416
- }
417
- const wfInfo = this.workflowInfoMap.get(wfStatus.workflowName);
418
- const parentCtx = this.#getRecoveryContext(workflowUUID, wfStatus);
419
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
420
- handlerArray.push(await this.workflow(wfInfo.workflow, { workflowUUID: workflowUUID, parentCtx: parentCtx ?? undefined }, ...inputs));
485
+ handlerArray.push(await this.executeWorkflowUUID(workflowUUID));
421
486
  }
422
487
  catch (e) {
423
- this.logger.warn(`Recovery of workflow ${workflowUUID} failed:`, e);
488
+ this.logger.warn(`Recovery of workflow ${workflowUUID} failed: ${e.message}`);
424
489
  }
425
490
  }
426
491
  return handlerArray;
427
492
  }
493
+ async executeWorkflowUUID(workflowUUID) {
494
+ const wfStatus = await this.systemDatabase.getWorkflowStatus(workflowUUID);
495
+ const inputs = await this.systemDatabase.getWorkflowInputs(workflowUUID);
496
+ if (!inputs || !wfStatus) {
497
+ this.logger.error(`Failed to find inputs for workflowUUID: ${workflowUUID}`);
498
+ throw new error_1.DBOSError(`Failed to find inputs for workflow UUID: ${workflowUUID}`);
499
+ }
500
+ const parentCtx = this.#getRecoveryContext(workflowUUID, wfStatus);
501
+ const wfInfo = this.workflowInfoMap.get(wfStatus.workflowName);
502
+ if (wfInfo) {
503
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
504
+ return this.workflow(wfInfo.workflow, { workflowUUID: workflowUUID, parentCtx: parentCtx ?? undefined }, ...inputs);
505
+ }
506
+ // Should be temporary workflows. Parse the name of the workflow.
507
+ const wfName = wfStatus.workflowName;
508
+ const nameArr = wfName.split("-");
509
+ if (!nameArr[0].startsWith(DBOSExecutor.tempWorkflowName)) {
510
+ throw new error_1.DBOSError(`This should never happen! Cannot find workflow info for a non-temporary workflow! UUID ${workflowUUID}, name ${wfName}`);
511
+ }
512
+ let temp_workflow;
513
+ if (nameArr[1] === TempWorkflowType.transaction) {
514
+ const txnInfo = this.transactionInfoMap.get(nameArr[2]);
515
+ if (!txnInfo) {
516
+ throw new error_1.DBOSError(`Cannot find transaction info for UUID ${workflowUUID}, name ${wfName}`);
517
+ }
518
+ temp_workflow = async (ctxt, ...args) => {
519
+ const ctxtImpl = ctxt;
520
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument
521
+ return await ctxtImpl.transaction(txnInfo.transaction, ...args);
522
+ };
523
+ }
524
+ else if (nameArr[1] === TempWorkflowType.external) {
525
+ const commInfo = this.communicatorInfoMap.get(nameArr[2]);
526
+ if (!commInfo) {
527
+ throw new error_1.DBOSError(`Cannot find transaction info for UUID ${workflowUUID}, name ${wfName}`);
528
+ }
529
+ temp_workflow = async (ctxt, ...args) => {
530
+ const ctxtImpl = ctxt;
531
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument
532
+ return await ctxtImpl.external(commInfo.communicator, ...args);
533
+ };
534
+ }
535
+ else if (nameArr[1] === TempWorkflowType.send) {
536
+ temp_workflow = async (ctxt, ...args) => {
537
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
538
+ return await ctxt.send(args[0], args[1], args[2]);
539
+ };
540
+ }
541
+ else {
542
+ throw new error_1.DBOSError(`Unrecognized temporary workflow! UUID ${workflowUUID}, name ${wfName}`);
543
+ }
544
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
545
+ return this.workflow(temp_workflow, { workflowUUID: workflowUUID, parentCtx: parentCtx ?? undefined }, ...inputs);
546
+ }
428
547
  #getRecoveryContext(workflowUUID, status) {
429
548
  const span = this.tracer.startSpan(status.workflowName);
430
549
  span.setAttributes({