@harperfast/harper 5.2.0-beta.4 → 5.2.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.
Files changed (320) hide show
  1. package/bin/backup.ts +169 -0
  2. package/bin/cliOperations.ts +92 -73
  3. package/bin/copyDb.ts +21 -4
  4. package/bin/harper.ts +43 -55
  5. package/bin/help.ts +216 -0
  6. package/components/Application.ts +236 -46
  7. package/components/ApplicationScope.ts +26 -0
  8. package/components/EntryHandler.ts +410 -105
  9. package/components/RuntimeModuleTracker.ts +189 -0
  10. package/components/Scope.ts +120 -30
  11. package/components/componentLoader.ts +177 -25
  12. package/components/deployLifecycle.ts +119 -33
  13. package/components/mcp/toolRegistry.ts +10 -0
  14. package/components/mcp/tools/application.ts +12 -5
  15. package/components/mcp/tools/operations.ts +9 -0
  16. package/components/mcp/tools/schemas/operationDescriptions.ts +3 -0
  17. package/components/mcp/tools/schemas/operations.ts +9 -0
  18. package/components/operations.js +5 -6
  19. package/components/operationsValidation.js +32 -2
  20. package/components/scopeMount.ts +150 -0
  21. package/config/configUtils.ts +12 -9
  22. package/config-root.schema.json +14 -0
  23. package/dataLayer/backupManifest.ts +102 -0
  24. package/dataLayer/blobBackup.ts +286 -0
  25. package/dataLayer/harperBridge/ResourceBridge.ts +69 -5
  26. package/dataLayer/hdbInfoController.ts +8 -0
  27. package/dataLayer/restoreMarker.ts +276 -0
  28. package/dataLayer/rocksdbBackup.ts +1100 -0
  29. package/dataLayer/schemaDescribe.ts +2 -1
  30. package/dist/bin/backup.d.ts +9 -0
  31. package/dist/bin/backup.js +192 -0
  32. package/dist/bin/backup.js.map +1 -0
  33. package/dist/bin/cliOperations.d.ts +13 -0
  34. package/dist/bin/cliOperations.js +89 -70
  35. package/dist/bin/cliOperations.js.map +1 -1
  36. package/dist/bin/copyDb.js +13 -2
  37. package/dist/bin/copyDb.js.map +1 -1
  38. package/dist/bin/harper.d.ts +13 -0
  39. package/dist/bin/harper.js +45 -56
  40. package/dist/bin/harper.js.map +1 -1
  41. package/dist/bin/help.d.ts +8 -0
  42. package/dist/bin/help.js +192 -0
  43. package/dist/bin/help.js.map +1 -0
  44. package/dist/components/Application.d.ts +16 -1
  45. package/dist/components/Application.js +210 -38
  46. package/dist/components/Application.js.map +1 -1
  47. package/dist/components/ApplicationScope.d.ts +7 -0
  48. package/dist/components/ApplicationScope.js +22 -0
  49. package/dist/components/ApplicationScope.js.map +1 -1
  50. package/dist/components/EntryHandler.d.ts +4 -4
  51. package/dist/components/EntryHandler.js +386 -95
  52. package/dist/components/EntryHandler.js.map +1 -1
  53. package/dist/components/RuntimeModuleTracker.d.ts +11 -0
  54. package/dist/components/RuntimeModuleTracker.js +189 -0
  55. package/dist/components/RuntimeModuleTracker.js.map +1 -0
  56. package/dist/components/Scope.d.ts +38 -1
  57. package/dist/components/Scope.js +117 -28
  58. package/dist/components/Scope.js.map +1 -1
  59. package/dist/components/componentLoader.d.ts +2 -6
  60. package/dist/components/componentLoader.js +160 -18
  61. package/dist/components/componentLoader.js.map +1 -1
  62. package/dist/components/deployLifecycle.d.ts +6 -2
  63. package/dist/components/deployLifecycle.js +109 -31
  64. package/dist/components/deployLifecycle.js.map +1 -1
  65. package/dist/components/mcp/toolRegistry.d.ts +7 -0
  66. package/dist/components/mcp/toolRegistry.js +10 -0
  67. package/dist/components/mcp/toolRegistry.js.map +1 -1
  68. package/dist/components/mcp/tools/application.js +11 -5
  69. package/dist/components/mcp/tools/application.js.map +1 -1
  70. package/dist/components/mcp/tools/operations.js +9 -0
  71. package/dist/components/mcp/tools/operations.js.map +1 -1
  72. package/dist/components/mcp/tools/schemas/operationDescriptions.js +2 -0
  73. package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
  74. package/dist/components/mcp/tools/schemas/operations.js +9 -0
  75. package/dist/components/mcp/tools/schemas/operations.js.map +1 -1
  76. package/dist/components/operations.js +6 -6
  77. package/dist/components/operations.js.map +1 -1
  78. package/dist/components/operationsValidation.js +34 -2
  79. package/dist/components/operationsValidation.js.map +1 -1
  80. package/dist/components/scopeMount.d.ts +86 -0
  81. package/dist/components/scopeMount.js +131 -0
  82. package/dist/components/scopeMount.js.map +1 -0
  83. package/dist/config/configUtils.js +13 -9
  84. package/dist/config/configUtils.js.map +1 -1
  85. package/dist/dataLayer/backupManifest.d.ts +26 -0
  86. package/dist/dataLayer/backupManifest.js +97 -0
  87. package/dist/dataLayer/backupManifest.js.map +1 -0
  88. package/dist/dataLayer/blobBackup.d.ts +87 -0
  89. package/dist/dataLayer/blobBackup.js +282 -0
  90. package/dist/dataLayer/blobBackup.js.map +1 -0
  91. package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +3 -0
  92. package/dist/dataLayer/harperBridge/ResourceBridge.js +45 -5
  93. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  94. package/dist/dataLayer/hdbInfoController.js +4 -0
  95. package/dist/dataLayer/hdbInfoController.js.map +1 -1
  96. package/dist/dataLayer/restoreMarker.d.ts +122 -0
  97. package/dist/dataLayer/restoreMarker.js +261 -0
  98. package/dist/dataLayer/restoreMarker.js.map +1 -0
  99. package/dist/dataLayer/rocksdbBackup.d.ts +127 -0
  100. package/dist/dataLayer/rocksdbBackup.js +1039 -0
  101. package/dist/dataLayer/rocksdbBackup.js.map +1 -0
  102. package/dist/dataLayer/schemaDescribe.js +2 -1
  103. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  104. package/dist/resources/DatabaseTransaction.d.ts +55 -0
  105. package/dist/resources/DatabaseTransaction.js +282 -109
  106. package/dist/resources/DatabaseTransaction.js.map +1 -1
  107. package/dist/resources/ResourceInterface.d.ts +8 -5
  108. package/dist/resources/ResourceInterface.js.map +1 -1
  109. package/dist/resources/Resources.js +22 -4
  110. package/dist/resources/Resources.js.map +1 -1
  111. package/dist/resources/Table.d.ts +6 -5
  112. package/dist/resources/Table.js +114 -37
  113. package/dist/resources/Table.js.map +1 -1
  114. package/dist/resources/analytics/write.js +6 -6
  115. package/dist/resources/analytics/write.js.map +1 -1
  116. package/dist/resources/blob.d.ts +8 -1
  117. package/dist/resources/blob.js +31 -14
  118. package/dist/resources/blob.js.map +1 -1
  119. package/dist/resources/databases.d.ts +59 -1
  120. package/dist/resources/databases.js +386 -41
  121. package/dist/resources/databases.js.map +1 -1
  122. package/dist/resources/jsResource.d.ts +4 -26
  123. package/dist/resources/jsResource.js +5 -59
  124. package/dist/resources/jsResource.js.map +1 -1
  125. package/dist/resources/models/Models.d.ts +11 -1
  126. package/dist/resources/models/Models.js +10 -1
  127. package/dist/resources/models/Models.js.map +1 -1
  128. package/dist/resources/models/backendRegistry.d.ts +9 -0
  129. package/dist/resources/models/backendRegistry.js +10 -0
  130. package/dist/resources/models/backendRegistry.js.map +1 -1
  131. package/dist/resources/models/openaiStream.d.ts +16 -1
  132. package/dist/resources/models/openaiStream.js +113 -21
  133. package/dist/resources/models/openaiStream.js.map +1 -1
  134. package/dist/resources/models/v1/chatCompletions.d.ts +54 -0
  135. package/dist/resources/models/v1/chatCompletions.js +115 -0
  136. package/dist/resources/models/v1/chatCompletions.js.map +1 -0
  137. package/dist/resources/models/v1/embeddings.d.ts +11 -0
  138. package/dist/resources/models/v1/embeddings.js +71 -0
  139. package/dist/resources/models/v1/embeddings.js.map +1 -0
  140. package/dist/resources/models/v1/errors.d.ts +54 -0
  141. package/dist/resources/models/v1/errors.js +130 -0
  142. package/dist/resources/models/v1/errors.js.map +1 -0
  143. package/dist/resources/models/v1/index.d.ts +36 -0
  144. package/dist/resources/models/v1/index.js +75 -0
  145. package/dist/resources/models/v1/index.js.map +1 -0
  146. package/dist/resources/models/v1/models.d.ts +26 -0
  147. package/dist/resources/models/v1/models.js +44 -0
  148. package/dist/resources/models/v1/models.js.map +1 -0
  149. package/dist/resources/models/v1/translation.d.ts +133 -0
  150. package/dist/resources/models/v1/translation.js +298 -0
  151. package/dist/resources/models/v1/translation.js.map +1 -0
  152. package/dist/resources/roles.d.ts +1 -1
  153. package/dist/resources/roles.js +54 -7
  154. package/dist/resources/roles.js.map +1 -1
  155. package/dist/resources/transaction.js +0 -3
  156. package/dist/resources/transaction.js.map +1 -1
  157. package/dist/security/jsLoader.js +84 -33
  158. package/dist/security/jsLoader.js.map +1 -1
  159. package/dist/security/role.js +4 -0
  160. package/dist/security/role.js.map +1 -1
  161. package/dist/security/superUserGuard.d.ts +7 -0
  162. package/dist/security/superUserGuard.js +23 -0
  163. package/dist/security/superUserGuard.js.map +1 -0
  164. package/dist/security/tokenAuthentication.d.ts +0 -1
  165. package/dist/security/tokenAuthentication.js +6 -2
  166. package/dist/security/tokenAuthentication.js.map +1 -1
  167. package/dist/security/user.d.ts +6 -1
  168. package/dist/security/user.js +23 -1
  169. package/dist/security/user.js.map +1 -1
  170. package/dist/server/REST.js +25 -9
  171. package/dist/server/REST.js.map +1 -1
  172. package/dist/server/fastifyRoutes.js +15 -1
  173. package/dist/server/fastifyRoutes.js.map +1 -1
  174. package/dist/server/http.d.ts +23 -2
  175. package/dist/server/http.js +99 -12
  176. package/dist/server/http.js.map +1 -1
  177. package/dist/server/itc/serverHandlers.js +7 -1
  178. package/dist/server/itc/serverHandlers.js.map +1 -1
  179. package/dist/server/jobs/jobProcess.js +20 -1
  180. package/dist/server/jobs/jobProcess.js.map +1 -1
  181. package/dist/server/jobs/jobRunner.js +10 -0
  182. package/dist/server/jobs/jobRunner.js.map +1 -1
  183. package/dist/server/jobs/jobs.js +11 -0
  184. package/dist/server/jobs/jobs.js.map +1 -1
  185. package/dist/server/middlewareChain.d.ts +10 -1
  186. package/dist/server/middlewareChain.js +81 -21
  187. package/dist/server/middlewareChain.js.map +1 -1
  188. package/dist/server/operationsServer.d.ts +0 -2
  189. package/dist/server/operationsServer.js.map +1 -1
  190. package/dist/server/serverHelpers/multipartParser.js +9 -0
  191. package/dist/server/serverHelpers/multipartParser.js.map +1 -1
  192. package/dist/server/serverHelpers/operationAuthorizationState.d.ts +2 -0
  193. package/dist/server/serverHelpers/operationAuthorizationState.js +13 -0
  194. package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -0
  195. package/dist/server/serverHelpers/registeredOperations.d.ts +3 -2
  196. package/dist/server/serverHelpers/registeredOperations.js +14 -13
  197. package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
  198. package/dist/server/serverHelpers/serverHandlers.js +27 -7
  199. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  200. package/dist/server/serverHelpers/serverUtilities.d.ts +1 -1
  201. package/dist/server/serverHelpers/serverUtilities.js +21 -7
  202. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  203. package/dist/server/static.js +68 -21
  204. package/dist/server/static.js.map +1 -1
  205. package/dist/server/storageReclamation.d.ts +17 -0
  206. package/dist/server/storageReclamation.js +90 -6
  207. package/dist/server/storageReclamation.js.map +1 -1
  208. package/dist/server/threads/socketRouter.js +20 -0
  209. package/dist/server/threads/socketRouter.js.map +1 -1
  210. package/dist/server/threads/threadServer.js +12 -0
  211. package/dist/server/threads/threadServer.js.map +1 -1
  212. package/dist/sqlEngine/diff/differential.js +7 -3
  213. package/dist/sqlEngine/diff/differential.js.map +1 -1
  214. package/dist/sqlTranslator/index.js +6 -1
  215. package/dist/sqlTranslator/index.js.map +1 -1
  216. package/dist/upgrade/upgradePrompt.d.ts +2 -2
  217. package/dist/upgrade/upgradePrompt.js +22 -3
  218. package/dist/upgrade/upgradePrompt.js.map +1 -1
  219. package/dist/utility/OperationFunctionCaller.js +25 -6
  220. package/dist/utility/OperationFunctionCaller.js.map +1 -1
  221. package/dist/utility/errors/commonErrors.d.ts +1 -0
  222. package/dist/utility/errors/commonErrors.js +1 -0
  223. package/dist/utility/errors/commonErrors.js.map +1 -1
  224. package/dist/utility/hdbTerms.d.ts +13 -1
  225. package/dist/utility/hdbTerms.js +13 -1
  226. package/dist/utility/hdbTerms.js.map +1 -1
  227. package/dist/utility/install/installer.js +32 -0
  228. package/dist/utility/install/installer.js.map +1 -1
  229. package/dist/utility/logging/harper_logger.d.ts +47 -0
  230. package/dist/utility/logging/harper_logger.js +803 -38
  231. package/dist/utility/logging/harper_logger.js.map +1 -1
  232. package/dist/utility/operation_authorization.js +13 -3
  233. package/dist/utility/operation_authorization.js.map +1 -1
  234. package/npm-shrinkwrap.json +198 -193
  235. package/package.json +12 -7
  236. package/resources/DESIGN.md +2 -0
  237. package/resources/DatabaseTransaction.ts +310 -104
  238. package/resources/ResourceInterface.ts +8 -5
  239. package/resources/Resources.ts +22 -4
  240. package/resources/Table.ts +341 -263
  241. package/resources/analytics/write.ts +22 -20
  242. package/resources/blob.ts +31 -14
  243. package/resources/databases.ts +387 -46
  244. package/resources/jsResource.ts +5 -62
  245. package/resources/models/Models.ts +14 -1
  246. package/resources/models/backendRegistry.ts +10 -0
  247. package/resources/models/openaiStream.ts +131 -19
  248. package/resources/models/v1/chatCompletions.ts +128 -0
  249. package/resources/models/v1/embeddings.ts +70 -0
  250. package/resources/models/v1/errors.ts +141 -0
  251. package/resources/models/v1/index.ts +72 -0
  252. package/resources/models/v1/models.ts +53 -0
  253. package/resources/models/v1/translation.ts +362 -0
  254. package/resources/roles.ts +67 -7
  255. package/resources/transaction.ts +0 -3
  256. package/security/jsLoader.ts +84 -30
  257. package/security/role.ts +7 -0
  258. package/security/superUserGuard.ts +20 -0
  259. package/security/tokenAuthentication.ts +6 -3
  260. package/security/user.ts +26 -1
  261. package/server/DESIGN.md +61 -34
  262. package/server/REST.ts +25 -9
  263. package/server/fastifyRoutes.ts +20 -1
  264. package/server/http.ts +100 -13
  265. package/server/itc/serverHandlers.js +7 -1
  266. package/server/jobs/jobProcess.ts +18 -1
  267. package/server/jobs/jobRunner.ts +10 -0
  268. package/server/jobs/jobs.ts +11 -0
  269. package/server/middlewareChain.ts +79 -20
  270. package/server/operationsServer.ts +0 -2
  271. package/server/serverHelpers/multipartParser.ts +9 -0
  272. package/server/serverHelpers/operationAuthorizationState.ts +11 -0
  273. package/server/serverHelpers/registeredOperations.ts +19 -15
  274. package/server/serverHelpers/serverHandlers.js +28 -7
  275. package/server/serverHelpers/serverUtilities.ts +29 -7
  276. package/server/static.ts +87 -23
  277. package/server/storageReclamation.ts +104 -8
  278. package/server/threads/socketRouter.ts +20 -0
  279. package/server/threads/threadServer.js +11 -0
  280. package/sqlTranslator/index.ts +6 -1
  281. package/static/defaultConfig.yaml +3 -0
  282. package/studio/web/assets/{Chat-DK3GlWEb.js → Chat-aApwhRmz.js} +2 -2
  283. package/studio/web/assets/{Chat-DK3GlWEb.js.map → Chat-aApwhRmz.js.map} +1 -1
  284. package/studio/web/assets/{FloatingChat-fBcC1Ew_.js → FloatingChat-sC0H91n9.js} +4 -4
  285. package/studio/web/assets/{FloatingChat-fBcC1Ew_.js.map → FloatingChat-sC0H91n9.js.map} +1 -1
  286. package/studio/web/assets/{apiToken-DJo1nakA.js → apiToken-DZ8JhHOI.js} +2 -2
  287. package/studio/web/assets/{apiToken-DJo1nakA.js.map → apiToken-DZ8JhHOI.js.map} +1 -1
  288. package/studio/web/assets/{applications-BDfH8urd.js → applications-9SEVLIO5.js} +2 -2
  289. package/studio/web/assets/{applications-BDfH8urd.js.map → applications-9SEVLIO5.js.map} +1 -1
  290. package/studio/web/assets/{index-BHo3c2Gk.js → index-Dy3uDGXb.js} +6 -6
  291. package/studio/web/assets/index-Dy3uDGXb.js.map +1 -0
  292. package/studio/web/assets/{index.lazy-BTo0y6UM.js → index.lazy-CN1zq4I4.js} +4 -4
  293. package/studio/web/assets/{index.lazy-BTo0y6UM.js.map → index.lazy-CN1zq4I4.js.map} +1 -1
  294. package/studio/web/assets/{notifications-CMxvWNnz.js → notifications-BFAF07xr.js} +2 -2
  295. package/studio/web/assets/{notifications-CMxvWNnz.js.map → notifications-BFAF07xr.js.map} +1 -1
  296. package/studio/web/assets/{notifications-D3GoB26g.js → notifications-CKlYVvVN.js} +2 -2
  297. package/studio/web/assets/{notifications-D3GoB26g.js.map → notifications-CKlYVvVN.js.map} +1 -1
  298. package/studio/web/assets/{profile-Doj5FVDE.js → profile-A1zhEdFG.js} +2 -2
  299. package/studio/web/assets/{profile-Doj5FVDE.js.map → profile-A1zhEdFG.js.map} +1 -1
  300. package/studio/web/assets/{setComponentFile-yinsqJy0.js → setComponentFile-SEtBt_GV.js} +2 -2
  301. package/studio/web/assets/{setComponentFile-yinsqJy0.js.map → setComponentFile-SEtBt_GV.js.map} +1 -1
  302. package/studio/web/assets/{setup-DJwR0BHd.js → setup-BisINqdH.js} +2 -2
  303. package/studio/web/assets/{setup-DJwR0BHd.js.map → setup-BisINqdH.js.map} +1 -1
  304. package/studio/web/assets/{status-Br_AbsJs.js → status-BuQoCc7l.js} +2 -2
  305. package/studio/web/assets/{status-Br_AbsJs.js.map → status-BuQoCc7l.js.map} +1 -1
  306. package/studio/web/assets/{swagger-ui-react-02XH5sVf.js → swagger-ui-react-CAi_s1PC.js} +2 -2
  307. package/studio/web/assets/{swagger-ui-react-02XH5sVf.js.map → swagger-ui-react-CAi_s1PC.js.map} +1 -1
  308. package/studio/web/assets/{tsMode-D1DMKY7h.js → tsMode-DT74tlkM.js} +2 -2
  309. package/studio/web/assets/{tsMode-D1DMKY7h.js.map → tsMode-DT74tlkM.js.map} +1 -1
  310. package/studio/web/assets/{useEntityRestURL-DtRblRgw.js → useEntityRestURL-CGRGc1n7.js} +2 -2
  311. package/studio/web/assets/{useEntityRestURL-DtRblRgw.js.map → useEntityRestURL-CGRGc1n7.js.map} +1 -1
  312. package/studio/web/index.html +1 -1
  313. package/upgrade/upgradePrompt.ts +22 -3
  314. package/utility/OperationFunctionCaller.ts +24 -3
  315. package/utility/errors/commonErrors.ts +2 -0
  316. package/utility/hdbTerms.ts +13 -1
  317. package/utility/install/installer.ts +37 -0
  318. package/utility/logging/harper_logger.ts +786 -41
  319. package/utility/operation_authorization.ts +31 -3
  320. package/studio/web/assets/index-BHo3c2Gk.js.map +0 -1
@@ -56,6 +56,7 @@ const deployValidationState_ts_1 = require("./deployValidationState.js");
56
56
  const harper_logger_ts_1 = __importDefault(require("../../utility/logging/harper_logger.js"));
57
57
  const readLog_ts_1 = __importDefault(require("../../utility/logging/readLog.js"));
58
58
  const export_ = __importStar(require("../../dataLayer/export.js"));
59
+ const rocksdbBackup = __importStar(require("../../dataLayer/rocksdbBackup.js"));
59
60
  const opAuth = __importStar(require("../../utility/operation_authorization.js"));
60
61
  const jobs = __importStar(require("../jobs/jobs.js"));
61
62
  const terms = __importStar(require("../../utility/hdbTerms.js"));
@@ -85,6 +86,7 @@ const secretOperations = __importStar(require("../../components/secretOperations
85
86
  const transaction_ts_1 = require("../../resources/transaction.js");
86
87
  const node_worker_threads_1 = require("node:worker_threads");
87
88
  const registeredOperations_ts_1 = require("./registeredOperations.js");
89
+ const operationAuthorizationState_ts_1 = require("./operationAuthorizationState.js");
88
90
  const pSearchSearch = util.promisify(search.search);
89
91
  let pEvaluateSql;
90
92
  function evaluateSQL(command) {
@@ -198,7 +200,7 @@ Server_ts_1.server.setMcpQuotaHandler = (handler) => {
198
200
  return;
199
201
  (0, quota_ts_1.setMcpQuotaHandler)(handler);
200
202
  };
201
- function chooseOperation(json) {
203
+ function chooseOperation(json, bypassAuth = false) {
202
204
  let getOpResult;
203
205
  try {
204
206
  getOpResult = getOperationFunction(json);
@@ -210,7 +212,7 @@ function chooseOperation(json) {
210
212
  // and its metadata actually exist, so no perm check is skipped by returning early
211
213
  // here (#1736). Workers never re-forward, so an unknown op can't loop.
212
214
  if (node_worker_threads_1.isMainThread) {
213
- const remoteOperationFunction = (0, registeredOperations_ts_1.getRemoteOperationFunction)(json.operation);
215
+ const remoteOperationFunction = (0, registeredOperations_ts_1.getRemoteOperationFunction)(json.operation, bypassAuth);
214
216
  if (remoteOperationFunction)
215
217
  return remoteOperationFunction;
216
218
  }
@@ -226,7 +228,7 @@ function chooseOperation(json) {
226
228
  const sqlStatement = json.operation === 'sql' ? json.sql : json.search_operation.sql;
227
229
  const parsedSqlObject = sql.convertSQLToAST(sqlStatement);
228
230
  json.parsed_sql_object = parsedSqlObject;
229
- if (!json.bypass_auth) {
231
+ if (!bypassAuth) {
230
232
  const astPermCheck = sql.checkASTPermissions(json, parsedSqlObject);
231
233
  if (astPermCheck) {
232
234
  operationLog.error(`${HTTP_STATUS_CODES.FORBIDDEN} from operation ${json.operation}`);
@@ -236,7 +238,7 @@ function chooseOperation(json) {
236
238
  }
237
239
  //we need to bypass permission checks to allow the createAuthorizationTokens
238
240
  }
239
- else if (!json.bypass_auth &&
241
+ else if (!bypassAuth &&
240
242
  json.operation !== terms.OPERATIONS_ENUM.CREATE_AUTHENTICATION_TOKENS &&
241
243
  json.operation !== terms.OPERATIONS_ENUM.LOGIN &&
242
244
  json.operation !== terms.OPERATIONS_ENUM.LOGOUT) {
@@ -275,9 +277,11 @@ function getOperationFunction(json) {
275
277
  */
276
278
  function operation(operation, context, authorize) {
277
279
  operation.hdb_user = context?.user;
278
- operation.bypass_auth = !authorize;
279
- const operation_function = chooseOperation(operation);
280
- return processLocalTransaction({ body: operation }, operation_function);
280
+ const bypassAuth = !authorize;
281
+ return (0, operationAuthorizationState_ts_1.runWithOperationAuthorizationBypass)(bypassAuth, () => {
282
+ const operation_function = chooseOperation(operation, bypassAuth);
283
+ return processLocalTransaction({ body: operation }, operation_function);
284
+ });
281
285
  }
282
286
  async function catchup(req) {
283
287
  operationLog.trace('In serverUtils.catchup');
@@ -331,6 +335,10 @@ async function executeJob(json) {
331
335
  }
332
336
  }
333
337
  catch (err) {
338
+ // errors that already carry a statusCode (e.g. ClientError from job validation) are
339
+ // client-facing as-is; wrapping them here would turn a 400/404/409 into a 500
340
+ if (err instanceof Error && typeof err.statusCode === 'number')
341
+ throw err;
334
342
  const error = err instanceof Error ? err : null;
335
343
  const message = `There was an error executing job: ${error && 'http_resp_msg' in error ? error.http_resp_msg : err}`;
336
344
  operationLog.error(message);
@@ -427,6 +435,12 @@ function initializeOperationFunctionMap() {
427
435
  opFuncMap.set(terms.OPERATIONS_ENUM.DELETE_TRANSACTION_LOGS_BEFORE, new OperationFunctionObject_ts_1.OperationFunctionObject(executeJob, transactionLog.deleteTransactionLogsBefore));
428
436
  opFuncMap.set(terms.OPERATIONS_ENUM.INSTALL_NODE_MODULES, new OperationFunctionObject_ts_1.OperationFunctionObject(npmUtilities.installModules));
429
437
  opFuncMap.set(terms.OPERATIONS_ENUM.GET_BACKUP, new OperationFunctionObject_ts_1.OperationFunctionObject(schema.getBackup));
438
+ opFuncMap.set(terms.OPERATIONS_ENUM.CREATE_BACKUP, new OperationFunctionObject_ts_1.OperationFunctionObject(executeJob, rocksdbBackup.createBackup));
439
+ opFuncMap.set(terms.OPERATIONS_ENUM.LIST_BACKUPS, new OperationFunctionObject_ts_1.OperationFunctionObject(rocksdbBackup.listBackups));
440
+ opFuncMap.set(terms.OPERATIONS_ENUM.VERIFY_BACKUP, new OperationFunctionObject_ts_1.OperationFunctionObject(executeJob, rocksdbBackup.verifyBackup));
441
+ opFuncMap.set(terms.OPERATIONS_ENUM.DELETE_BACKUP, new OperationFunctionObject_ts_1.OperationFunctionObject(rocksdbBackup.deleteBackup));
442
+ opFuncMap.set(terms.OPERATIONS_ENUM.PURGE_BACKUPS, new OperationFunctionObject_ts_1.OperationFunctionObject(rocksdbBackup.purgeBackups));
443
+ opFuncMap.set(terms.OPERATIONS_ENUM.RESTORE_BACKUP, new OperationFunctionObject_ts_1.OperationFunctionObject(executeJob, rocksdbBackup.restoreBackup));
430
444
  opFuncMap.set(terms.OPERATIONS_ENUM.CLEANUP_ORPHAN_BLOBS, new OperationFunctionObject_ts_1.OperationFunctionObject(schema.cleanupOrphanBlobs));
431
445
  opFuncMap.set(terms.OPERATIONS_ENUM.GET_ANALYTICS, new OperationFunctionObject_ts_1.OperationFunctionObject(analytics.getOp));
432
446
  opFuncMap.set(terms.OPERATIONS_ENUM.LIST_METRICS, new OperationFunctionObject_ts_1.OperationFunctionObject(analytics.listMetricsOp));
@@ -1 +1 @@
1
- {"version":3,"file":"serverUtilities.js","sourceRoot":"","sources":["../../../server/serverHelpers/serverUtilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serverUtilities.js","sourceRoot":"","sources":["../../../server/serverHelpers/serverUtilities.ts"],"names":[],"mappings":"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"}
@@ -56,7 +56,7 @@ const send_1 = __importDefault(require("send"));
56
56
  *
57
57
  * This plugin dynamically updates its behavior based on the current configuration file. Users can make updates and immediately see the changes reflect in the next request.
58
58
  *
59
- * Updates to the `files` option will clear the in-memory maps and allow them to regenerate based on the new configuration (since the default EntryHandler will regenerate anyways).
59
+ * Updates to the `files` option incrementally add newly matched paths and remove paths that no longer match while preserving common entries.
60
60
  * Updates to `urlPath` request a restart: the HTTP route mount is registered once at load and cannot be re-registered on a live server (#1583).
61
61
  */
62
62
  /**
@@ -143,10 +143,40 @@ function handleApplication(scope) {
143
143
  // keys are the URL paths relative to the mount base, values are the absolute paths to the files
144
144
  const staticFiles = new Map();
145
145
  const indexEntries = new Map();
146
+ const staticFileOwners = new Map();
147
+ const indexEntryOwners = new Map();
148
+ function setOwnedPath(paths, ownersByURL, urlPath, owner, path) {
149
+ let owners = ownersByURL.get(urlPath);
150
+ if (!owners)
151
+ ownersByURL.set(urlPath, (owners = new Map()));
152
+ owners.delete(owner);
153
+ owners.set(owner, path);
154
+ paths.set(urlPath, path);
155
+ }
156
+ function removeOwnedPath(paths, ownersByURL, urlPath, owner) {
157
+ const owners = ownersByURL.get(urlPath);
158
+ if (!owners?.delete(owner))
159
+ return;
160
+ const replacement = [...owners.values()].at(-1);
161
+ if (replacement === undefined) {
162
+ ownersByURL.delete(urlPath);
163
+ paths.delete(urlPath);
164
+ }
165
+ else {
166
+ paths.set(urlPath, replacement);
167
+ }
168
+ }
146
169
  // The HTTP route below is registered once, with the urlPath in effect at load time; the mount
147
170
  // cannot be re-registered at runtime. Capture the matching base once so map keys always agree
148
171
  // with the registered route (#1583).
149
172
  const baseURLPath = (0, resolveBaseURLPath_ts_1.resolveBaseURLPath)(scope.pluginName, scope.options.getAll()?.urlPath);
173
+ // The same base as the client sees. `baseURLPath` is mount-relative — it must stay that way to
174
+ // keep agreeing with the entry URL paths the file map is keyed by — but a redirect Location has
175
+ // to carry the application's mount too, or it would point outside the mount (#1583).
176
+ const externalBaseURLPath = scope.externalBasePath(baseURLPath);
177
+ let urlPathRestartPending = false;
178
+ let fileSelectionChangePending = false;
179
+ let entryHandler;
150
180
  // A bare `before:` / `after:` key in YAML parses as null — treat it as unset, like before this
151
181
  // option was validated.
152
182
  const before = scope.options.get(['before']) ?? undefined;
@@ -171,14 +201,20 @@ function handleApplication(scope) {
171
201
  warnIfBlockingRest();
172
202
  scope.options.on('change', (key) => {
173
203
  if (key[0] === 'files') {
174
- // If the files option changes, clear the maps and let the entry handler regenerate them
175
- staticFiles.clear();
176
- indexEntries.clear();
177
- scope.logger.info(`Static files reinitialized due to change in ${key.join('.')}`);
204
+ fileSelectionChangePending = true;
205
+ const updateReady = entryHandler?.ready;
206
+ const clearPending = () => {
207
+ if (entryHandler?.ready === updateReady)
208
+ fileSelectionChangePending = false;
209
+ };
210
+ updateReady?.then(clearPending, clearPending);
211
+ // EntryHandler updates are incremental: paths no longer matched emit unlink, newly matched
212
+ // paths emit add, and common unchanged paths remain valid in these maps.
213
+ scope.logger.info(`Static file matches updated due to change in ${key.join('.')}`);
178
214
  return;
179
215
  }
180
216
  if (key[0] === 'urlPath') {
181
- // The route mount cannot be changed on a live server registration — restart to apply
217
+ urlPathRestartPending = true;
182
218
  scope.requestRestart();
183
219
  return;
184
220
  }
@@ -194,7 +230,10 @@ function handleApplication(scope) {
194
230
  }
195
231
  });
196
232
  // Handle entry events for the default entry handler based on the `files` and `urlPath` options
197
- scope.handleEntry((entry) => {
233
+ entryHandler = scope.handleEntry((entry) => {
234
+ if (urlPathRestartPending &&
235
+ (!fileSelectionChangePending || (entry.eventType !== 'unlink' && entry.eventType !== 'unlinkDir')))
236
+ return;
198
237
  // entry.urlPath includes the component's base URL path, but when a `urlPath` is configured
199
238
  // the routing chain strips that mount prefix from req.pathname before this plugin's handler
200
239
  // runs — so key the maps relative to the base (#1583)
@@ -204,34 +243,38 @@ function handleApplication(scope) {
204
243
  switch (entry.eventType) {
205
244
  // Directories only matter for the `index` files
206
245
  case 'addDir':
207
- case 'unlinkDir':
208
246
  // Handle `index.html` for directories for if/when the user enables the `index` option
209
247
  const indexPath = (0, node_path_1.join)(entry.absolutePath, 'index.html');
210
- if ((0, node_fs_1.existsSync)(indexPath)) {
211
- indexEntries[entry.eventType === 'addDir' ? 'set' : 'delete'](urlPath, indexPath);
212
- }
248
+ if ((0, node_fs_1.existsSync)(indexPath))
249
+ setOwnedPath(indexEntries, indexEntryOwners, urlPath, entry.absolutePath, indexPath);
250
+ break;
251
+ case 'unlinkDir':
252
+ removeOwnedPath(indexEntries, indexEntryOwners, urlPath, entry.absolutePath);
213
253
  break;
214
254
  // Otherwise, user must specify pattern to match individual files
215
255
  case 'add':
216
256
  // Store the file in memory for serving
217
- staticFiles.set(urlPath, entry.absolutePath);
257
+ setOwnedPath(staticFiles, staticFileOwners, urlPath, entry.absolutePath, entry.absolutePath);
218
258
  // If the file is an index.html, also store it in the index entries
219
259
  if (urlPath.endsWith('index.html')) {
220
260
  // Without trailing slash; null -> 301 redirect to trailing slash
221
261
  let lastSlashIndex = urlPath.lastIndexOf('/');
222
- indexEntries.set(urlPath.slice(0, lastSlashIndex), null);
262
+ setOwnedPath(indexEntries, indexEntryOwners, urlPath.slice(0, lastSlashIndex), entry.absolutePath, null);
223
263
  // With trailing slash; serves the index.html file
224
- indexEntries.set(urlPath.slice(0, lastSlashIndex + 1), entry.absolutePath);
264
+ setOwnedPath(indexEntries, indexEntryOwners, urlPath.slice(0, lastSlashIndex + 1), entry.absolutePath, entry.absolutePath);
225
265
  }
226
266
  break;
227
267
  case 'unlink':
228
- // Remove the file from memory when it is deleted
229
- staticFiles.delete(urlPath);
268
+ removeOwnedPath(staticFiles, staticFileOwners, urlPath, entry.absolutePath);
230
269
  // If the file is an index.html, remove it from the index entries as well
231
270
  if (urlPath.endsWith('index.html')) {
232
271
  let lastSlashIndex = urlPath.lastIndexOf('/');
233
- indexEntries.delete(urlPath.slice(0, lastSlashIndex));
234
- indexEntries.delete(urlPath.slice(0, lastSlashIndex + 1));
272
+ const directoryURLPath = urlPath.slice(0, lastSlashIndex);
273
+ const directoryOwner = (0, node_path_1.dirname)(entry.absolutePath);
274
+ removeOwnedPath(indexEntries, indexEntryOwners, directoryURLPath, entry.absolutePath);
275
+ removeOwnedPath(indexEntries, indexEntryOwners, directoryURLPath, directoryOwner);
276
+ removeOwnedPath(indexEntries, indexEntryOwners, urlPath.slice(0, lastSlashIndex + 1), entry.absolutePath);
277
+ removeOwnedPath(indexEntries, indexEntryOwners, urlPath.slice(0, lastSlashIndex + 1), directoryOwner);
235
278
  }
236
279
  break;
237
280
  }
@@ -261,7 +304,11 @@ function handleApplication(scope) {
261
304
  // redirect the no-slash form so relative links on the index page resolve under
262
305
  // the mount (#1583). Query string is preserved across both redirects; compute it
263
306
  // lazily inside each branch so the common (non-redirect) index serve stays allocation-free.
264
- if (staticFile && req.pathname === '/' && baseURLPath !== '/') {
307
+ // Gated on the EXTERNAL base path, not the plugin-local one: a root-level static
308
+ // plugin (baseURLPath === '/') still needs this redirect when the application
309
+ // itself carries a host/urlPath mount, since the client-visible mount root is then
310
+ // externalBaseURLPath, not '/' (review finding).
311
+ if (staticFile && req.pathname === '/' && externalBaseURLPath !== '/') {
265
312
  const originalPathname = req.originalPathname;
266
313
  if (originalPathname && !originalPathname.endsWith('/')) {
267
314
  const queryIndex = req.url.indexOf('?');
@@ -269,7 +316,7 @@ function handleApplication(scope) {
269
316
  return {
270
317
  status: 301,
271
318
  headers: {
272
- Location: baseURLPath + query,
319
+ Location: externalBaseURLPath + query,
273
320
  },
274
321
  };
275
322
  }
@@ -277,7 +324,7 @@ function handleApplication(scope) {
277
324
  // If `null`, redirect to trailing slash. req.pathname arrives with the mount
278
325
  // prefix stripped, so rebuild the external path for the Location header (#1583)
279
326
  if (staticFile === null) {
280
- const externalPath = baseURLPath === '/' ? req.pathname : baseURLPath.slice(0, -1) + req.pathname;
327
+ const externalPath = externalBaseURLPath === '/' ? req.pathname : externalBaseURLPath.slice(0, -1) + req.pathname;
281
328
  const queryIndex = req.url.indexOf('?');
282
329
  const query = queryIndex === -1 ? '' : req.url.slice(queryIndex);
283
330
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"static.js","sourceRoot":"","sources":["../../server/static.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"static.js","sourceRoot":"","sources":["../../server/static.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,23 @@ export declare function getQuotaStatus(): Promise<QuotaStatusData | undefined>;
18
18
  * @param skipThreadCheck
19
19
  */
20
20
  export declare function onStorageReclamation(path: string, handler: (priority: number) => Promise<void> | void, skipThreadCheck?: boolean): void;
21
+ export type StorageSpaceStats = {
22
+ available: number;
23
+ free: number;
24
+ size: number;
25
+ basis: 'quota' | 'filesystem';
26
+ };
27
+ /**
28
+ * Get available/free/size storage stats for a path, preferring a fresh quota-status.json (see
29
+ * getQuotaStatus) over statfs. statfs describes the filesystem, which is misleading whenever
30
+ * the data directory is quota-limited on a larger shared volume (#1976).
31
+ */
32
+ export declare function getStorageSpaceStats(path: string): Promise<StorageSpaceStats>;
33
+ /**
34
+ * Ratio of available to total size, guarding the 0/0 = NaN case (a zero-size statfs/quota result,
35
+ * e.g. an empty or misconfigured mount) so a full disk still reports a ratio of 0 rather than NaN.
36
+ */
37
+ export declare function computeAvailableRatio(available: number, size: number): number;
21
38
  /**
22
39
  * Run the registered reclamation handlers, if any disk drives are below the threshold
23
40
  */
@@ -35,6 +35,8 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.getQuotaStatus = getQuotaStatus;
37
37
  exports.onStorageReclamation = onStorageReclamation;
38
+ exports.getStorageSpaceStats = getStorageSpaceStats;
39
+ exports.computeAvailableRatio = computeAvailableRatio;
38
40
  exports.runReclamationHandlers = runReclamationHandlers;
39
41
  exports.setAvailableSpaceRatioGetter = setAvailableSpaceRatioGetter;
40
42
  const promises_1 = require("node:fs/promises");
@@ -53,6 +55,55 @@ const RECLAMATION_INTERVAL = (0, common_utils_ts_1.convertToMS)(envMgr.get(hdbTe
53
55
  const QUOTA_STATUS_FILE = 'quota-status.json';
54
56
  // Use statfs fallback if the file is older than this (host-manager outage, container start race, etc.)
55
57
  const QUOTA_STATUS_MAX_AGE_MS = 5 * 60 * 1000;
58
+ /**
59
+ * Resolves `target` to its real (symlink-free) path. `target` itself may not exist yet (e.g. a
60
+ * table's storage directory that hasn't been created), so walk up to the nearest existing
61
+ * ancestor, resolve that, and rejoin the not-yet-existing remainder lexically — this still
62
+ * catches a symlinked *parent* directory, which is the case that actually matters for quota
63
+ * scoping (leaf directories are created by Harper itself, not symlinked).
64
+ */
65
+ async function resolveRealPath(target) {
66
+ try {
67
+ return await (0, promises_1.realpath)(target);
68
+ }
69
+ catch {
70
+ const parent = (0, node_path_1.dirname)(target);
71
+ if (parent === target)
72
+ return (0, node_path_1.resolve)(target);
73
+ return (0, node_path_1.join)(await resolveRealPath(parent), (0, node_path_1.basename)(target));
74
+ }
75
+ }
76
+ /**
77
+ * Whether `target` resolves to a path inside `root`. quota-status.json is scoped to a single
78
+ * ROOTPATH; a database or table configured with its own STORAGE_PATH (or a STORAGE_BLOBPATHS
79
+ * entry) can live on an entirely different volume, and must not be reported against the root's
80
+ * quota. Compares real (symlink-resolved) paths, not just lexically-normalized ones — a `..`-free
81
+ * path can still be a symlink into another volume, and `resolve()` alone wouldn't catch that.
82
+ */
83
+ async function isPathWithinRoot(root, target) {
84
+ const [resolvedRoot, resolvedTarget] = await Promise.all([resolveRealPath(root), resolveRealPath(target)]);
85
+ const relativePath = (0, node_path_1.relative)(resolvedRoot, resolvedTarget);
86
+ if (relativePath === '')
87
+ return true;
88
+ if ((0, node_path_1.isAbsolute)(relativePath))
89
+ return false;
90
+ // Check the first segment specifically (`..`), not a `..`-prefix match — a child directory
91
+ // literally named e.g. `..data` (the Kubernetes ConfigMap/Secret atomic-update symlink
92
+ // convention) is not a parent-traversal and must not be rejected as escaping the root.
93
+ const firstSegment = relativePath.split(node_path_1.sep)[0];
94
+ return firstSegment !== '..';
95
+ }
96
+ /**
97
+ * Guards against a syntactically valid but semantically broken quota-status.json (missing or
98
+ * negative usage, non-positive quota, non-finite timestamp) being read as "100% free" or worse.
99
+ */
100
+ function isValidQuotaStatus(status) {
101
+ return (Number.isFinite(status.updatedAt) &&
102
+ Number.isFinite(status.quotaBytes) &&
103
+ status.quotaBytes > 0 &&
104
+ Number.isFinite(status.usedBytes) &&
105
+ status.usedBytes >= 0);
106
+ }
56
107
  /**
57
108
  * Reads the quota-status.json file written by host-manager.
58
109
  * Returns undefined if the file is absent or malformed; does not apply age filtering.
@@ -93,15 +144,48 @@ function onStorageReclamation(path, handler, skipThreadCheck) {
93
144
  }
94
145
  }
95
146
  let reclamationTimer;
96
- // If a fresh quota-status.json exists (written by host-manager every ~90s), use quota-based ratio.
97
- // Otherwise fall back to statfs for the registered path.
98
- const defaultGetAvailableSpaceRatio = async (path) => {
147
+ /**
148
+ * Get available/free/size storage stats for a path, preferring a fresh quota-status.json (see
149
+ * getQuotaStatus) over statfs. statfs describes the filesystem, which is misleading whenever
150
+ * the data directory is quota-limited on a larger shared volume (#1976).
151
+ */
152
+ async function getStorageSpaceStats(path) {
153
+ const rootPath = envMgr.get(hdbTerms_ts_1.CONFIG_PARAMS.ROOTPATH);
99
154
  const status = await getQuotaStatus();
100
- if (status?.quotaBytes && Date.now() - status.updatedAt < QUOTA_STATUS_MAX_AGE_MS) {
101
- return Math.max(0, status.quotaBytes - status.usedBytes) / status.quotaBytes;
155
+ const statusAge = status ? Date.now() - status.updatedAt : undefined;
156
+ if (status &&
157
+ isValidQuotaStatus(status) &&
158
+ rootPath &&
159
+ // A negative age (clock skew, or a corrupt/future updatedAt) is not "fresh" — treat it the
160
+ // same as stale rather than trusting quota data indefinitely.
161
+ statusAge >= 0 &&
162
+ statusAge < QUOTA_STATUS_MAX_AGE_MS &&
163
+ // Checked last: it's the only async/IO-bound condition, so short-circuit it behind the
164
+ // cheap synchronous checks above.
165
+ (await isPathWithinRoot(rootPath, path))) {
166
+ const available = Math.max(0, status.quotaBytes - status.usedBytes);
167
+ return { available, free: available, size: status.quotaBytes, basis: 'quota' };
102
168
  }
103
169
  const fsStats = await (0, promises_2.statfs)(path);
104
- return fsStats.bavail / fsStats.blocks;
170
+ return {
171
+ available: fsStats.bavail * fsStats.bsize,
172
+ free: fsStats.bfree * fsStats.bsize,
173
+ size: fsStats.blocks * fsStats.bsize,
174
+ basis: 'filesystem',
175
+ };
176
+ }
177
+ /**
178
+ * Ratio of available to total size, guarding the 0/0 = NaN case (a zero-size statfs/quota result,
179
+ * e.g. an empty or misconfigured mount) so a full disk still reports a ratio of 0 rather than NaN.
180
+ */
181
+ function computeAvailableRatio(available, size) {
182
+ return size > 0 ? available / size : 0;
183
+ }
184
+ // If a fresh quota-status.json exists (written by host-manager every ~90s), use quota-based ratio.
185
+ // Otherwise fall back to statfs for the registered path.
186
+ const defaultGetAvailableSpaceRatio = async (path) => {
187
+ const { available, size } = await getStorageSpaceStats(path);
188
+ return computeAvailableRatio(available, size);
105
189
  };
106
190
  let getAvailableSpaceRatio = defaultGetAvailableSpaceRatio;
107
191
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"storageReclamation.js","sourceRoot":"","sources":["../../server/storageReclamation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storageReclamation.js","sourceRoot":"","sources":["../../server/storageReclamation.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,12 @@ const worker_threads_1 = require("worker_threads");
44
44
  const path_1 = require("path");
45
45
  const workers = [];
46
46
  const workersReady = [];
47
+ // startHTTPThreads() can be called more than once in-process (e.g. a test harness adding more
48
+ // worker threads to an already-running server via addThreads()). The crash-path sweep below must
49
+ // run only on the very first call — a later call happens after real mirrors are already bound, and
50
+ // sweeping the sockets directory then would delete their live files, reintroducing the exact outage
51
+ // this guards against.
52
+ let sweptSocketsDirectory = false;
47
53
  if (worker_threads_1.isMainThread) {
48
54
  process.on('uncaughtException', (error) => {
49
55
  // TODO: Maybe we should try to log the first of each type of error
@@ -58,6 +64,20 @@ if (worker_threads_1.isMainThread) {
58
64
  });
59
65
  }
60
66
  async function startHTTPThreads(threadCount = 2, dynamicThreads) {
67
+ // Crash-path defense: a hard crash can skip a worker's exit-time UDS cleanup and leave stale
68
+ // mirror files behind. This runs before any worker below can start (and thus before any mirror
69
+ // can bind), so it can only ever clear files nothing is using yet — never a live mirror. The
70
+ // inode ownership guard in cleanupUdsFiles()/markUdsBindFailed() (see http.ts) is the matching
71
+ // defense for the in-process rolling-restart case, which this sweep does not cover.
72
+ // Lazy dynamic import (not a top-level one), matching server/status/index.ts's own lazy import of
73
+ // http.ts: http.ts's module graph reaches security/auth.ts, whose module-scope table() call needs
74
+ // config already initialized — pulling that graph in at this file's own top level (which
75
+ // bin/run.ts imports before parsing argv / initializing config) breaks startup with "Unable to
76
+ // determine database storage path" before main() ever runs.
77
+ if (worker_threads_1.isMainThread && !sweptSocketsDirectory) {
78
+ sweptSocketsDirectory = true;
79
+ (await import("../http.js")).cleanupSocketsDirectory();
80
+ }
61
81
  (0, write_ts_1.recordHostname)().catch((err) => harperLogger.error?.('Error recording hostname for analytics:', err));
62
82
  // Drive transaction-log cooling from the main thread (the registry is a
63
83
  // process-global singleton; see startTransactionLogCooling). Runs for all