@harperfast/harper 5.3.0-alpha.1 → 5.3.0-beta.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 (291) hide show
  1. package/bin/cliOperations.ts +12 -0
  2. package/bin/restart.ts +66 -6
  3. package/components/Application.ts +1134 -112
  4. package/components/OptionsWatcher.ts +368 -102
  5. package/components/Scope.ts +20 -1
  6. package/components/componentLoader.ts +43 -4
  7. package/components/deploymentOperations.ts +4 -1
  8. package/components/deploymentRecorder.ts +9 -2
  9. package/components/operations.js +284 -52
  10. package/components/operationsValidation.js +49 -2
  11. package/components/packageComponent.ts +25 -1
  12. package/components/requestRestart.ts +11 -0
  13. package/config/RootConfigWatcher.ts +191 -37
  14. package/config/configReadRetry.ts +62 -0
  15. package/config/configUtils.ts +78 -26
  16. package/config/parseConfigFile.ts +34 -0
  17. package/config/readConfigFileSync.ts +44 -0
  18. package/config/watcherArming.ts +59 -0
  19. package/config-root.schema.json +4 -0
  20. package/dataLayer/harperBridge/ResourceBridge.ts +28 -2
  21. package/dist/bin/cliOperations.js +13 -0
  22. package/dist/bin/cliOperations.js.map +1 -1
  23. package/dist/bin/restart.js +42 -6
  24. package/dist/bin/restart.js.map +1 -1
  25. package/dist/components/Application.d.ts +104 -9
  26. package/dist/components/Application.js +954 -102
  27. package/dist/components/Application.js.map +1 -1
  28. package/dist/components/OptionsWatcher.d.ts +4 -1
  29. package/dist/components/OptionsWatcher.js +378 -104
  30. package/dist/components/OptionsWatcher.js.map +1 -1
  31. package/dist/components/Scope.js +15 -1
  32. package/dist/components/Scope.js.map +1 -1
  33. package/dist/components/componentLoader.js +35 -3
  34. package/dist/components/componentLoader.js.map +1 -1
  35. package/dist/components/deploymentOperations.js +4 -1
  36. package/dist/components/deploymentOperations.js.map +1 -1
  37. package/dist/components/deploymentRecorder.d.ts +4 -2
  38. package/dist/components/deploymentRecorder.js +1 -0
  39. package/dist/components/deploymentRecorder.js.map +1 -1
  40. package/dist/components/operations.d.ts +28 -0
  41. package/dist/components/operations.js +263 -54
  42. package/dist/components/operations.js.map +1 -1
  43. package/dist/components/operationsValidation.js +48 -2
  44. package/dist/components/operationsValidation.js.map +1 -1
  45. package/dist/components/packageComponent.js +24 -0
  46. package/dist/components/packageComponent.js.map +1 -1
  47. package/dist/components/requestRestart.d.ts +1 -0
  48. package/dist/components/requestRestart.js +7 -0
  49. package/dist/components/requestRestart.js.map +1 -1
  50. package/dist/config/RootConfigWatcher.d.ts +2 -0
  51. package/dist/config/RootConfigWatcher.js +189 -35
  52. package/dist/config/RootConfigWatcher.js.map +1 -1
  53. package/dist/config/configReadRetry.d.ts +8 -0
  54. package/dist/config/configReadRetry.js +62 -0
  55. package/dist/config/configReadRetry.js.map +1 -0
  56. package/dist/config/configUtils.d.ts +10 -9
  57. package/dist/config/configUtils.js +63 -27
  58. package/dist/config/configUtils.js.map +1 -1
  59. package/dist/config/parseConfigFile.d.ts +4 -0
  60. package/dist/config/parseConfigFile.js +35 -0
  61. package/dist/config/parseConfigFile.js.map +1 -0
  62. package/dist/config/readConfigFileSync.d.ts +1 -0
  63. package/dist/config/readConfigFileSync.js +47 -0
  64. package/dist/config/readConfigFileSync.js.map +1 -0
  65. package/dist/config/watcherArming.d.ts +15 -0
  66. package/dist/config/watcherArming.js +59 -0
  67. package/dist/config/watcherArming.js.map +1 -0
  68. package/dist/dataLayer/harperBridge/ResourceBridge.js +21 -2
  69. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  70. package/dist/index.d.ts +1 -0
  71. package/dist/index.js +4 -1
  72. package/dist/index.js.map +1 -1
  73. package/dist/json/systemSchema.json +3 -0
  74. package/dist/resources/DatabaseTransaction.d.ts +25 -0
  75. package/dist/resources/DatabaseTransaction.js +224 -18
  76. package/dist/resources/DatabaseTransaction.js.map +1 -1
  77. package/dist/resources/LMDBTransaction.d.ts +2 -1
  78. package/dist/resources/LMDBTransaction.js +22 -3
  79. package/dist/resources/LMDBTransaction.js.map +1 -1
  80. package/dist/resources/PrimaryRocksDatabase.js +22 -6
  81. package/dist/resources/PrimaryRocksDatabase.js.map +1 -1
  82. package/dist/resources/RecordEncoder.d.ts +1 -1
  83. package/dist/resources/RecordEncoder.js +21 -5
  84. package/dist/resources/RecordEncoder.js.map +1 -1
  85. package/dist/resources/Resource.js +97 -13
  86. package/dist/resources/Resource.js.map +1 -1
  87. package/dist/resources/ResourceInterface.d.ts +8 -0
  88. package/dist/resources/RocksIndexStore.js +2 -1
  89. package/dist/resources/RocksIndexStore.js.map +1 -1
  90. package/dist/resources/RocksTransactionLogStore.d.ts +10 -0
  91. package/dist/resources/RocksTransactionLogStore.js +104 -33
  92. package/dist/resources/RocksTransactionLogStore.js.map +1 -1
  93. package/dist/resources/Table.d.ts +58 -7
  94. package/dist/resources/Table.js +1095 -346
  95. package/dist/resources/Table.js.map +1 -1
  96. package/dist/resources/analytics/write.js +10 -3
  97. package/dist/resources/analytics/write.js.map +1 -1
  98. package/dist/resources/auditStore.d.ts +170 -0
  99. package/dist/resources/auditStore.js +457 -11
  100. package/dist/resources/auditStore.js.map +1 -1
  101. package/dist/resources/dataLoader.js +3 -4
  102. package/dist/resources/dataLoader.js.map +1 -1
  103. package/dist/resources/databases.d.ts +16 -13
  104. package/dist/resources/databases.js +624 -176
  105. package/dist/resources/databases.js.map +1 -1
  106. package/dist/resources/derivedIndexRegistry.d.ts +5 -0
  107. package/dist/resources/derivedIndexRegistry.js +68 -0
  108. package/dist/resources/derivedIndexRegistry.js.map +1 -0
  109. package/dist/resources/derivedIndexRuntime.d.ts +215 -0
  110. package/dist/resources/derivedIndexRuntime.js +2027 -0
  111. package/dist/resources/derivedIndexRuntime.js.map +1 -0
  112. package/dist/resources/graphql.js +3 -2
  113. package/dist/resources/graphql.js.map +1 -1
  114. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +102 -9
  115. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +848 -39
  116. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  117. package/dist/resources/indexes/hnswDerivedIndex.d.ts +67 -0
  118. package/dist/resources/indexes/hnswDerivedIndex.js +464 -0
  119. package/dist/resources/indexes/hnswDerivedIndex.js.map +1 -0
  120. package/dist/resources/indexes/hnswPlaneBinding.d.ts +65 -0
  121. package/dist/resources/indexes/hnswPlaneBinding.js +91 -0
  122. package/dist/resources/indexes/hnswPlaneBinding.js.map +1 -0
  123. package/dist/resources/nodeIdMapping.d.ts +5 -0
  124. package/dist/resources/nodeIdMapping.js +49 -0
  125. package/dist/resources/nodeIdMapping.js.map +1 -1
  126. package/dist/resources/recordLock.d.ts +47 -4
  127. package/dist/resources/recordLock.js +138 -7
  128. package/dist/resources/recordLock.js.map +1 -1
  129. package/dist/resources/recordLockCoordinator.d.ts +557 -0
  130. package/dist/resources/recordLockCoordinator.js +2565 -0
  131. package/dist/resources/recordLockCoordinator.js.map +1 -0
  132. package/dist/resources/replayLogs.js +5 -0
  133. package/dist/resources/replayLogs.js.map +1 -1
  134. package/dist/resources/replicatedApplyFailure.d.ts +16 -0
  135. package/dist/resources/replicatedApplyFailure.js +63 -0
  136. package/dist/resources/replicatedApplyFailure.js.map +1 -0
  137. package/dist/resources/scheduler/scheduler.js +3 -3
  138. package/dist/resources/scheduler/scheduler.js.map +1 -1
  139. package/dist/resources/search.d.ts +10 -4
  140. package/dist/resources/search.js +160 -40
  141. package/dist/resources/search.js.map +1 -1
  142. package/dist/resources/tracked.d.ts +5 -1
  143. package/dist/resources/tracked.js +74 -23
  144. package/dist/resources/tracked.js.map +1 -1
  145. package/dist/security/jsLoader.js +6 -4
  146. package/dist/security/jsLoader.js.map +1 -1
  147. package/dist/server/REST.js +33 -2
  148. package/dist/server/REST.js.map +1 -1
  149. package/dist/server/http.d.ts +5 -1
  150. package/dist/server/http.js +34 -2
  151. package/dist/server/http.js.map +1 -1
  152. package/dist/server/serverHelpers/Headers.d.ts +2 -0
  153. package/dist/server/serverHelpers/Headers.js +6 -0
  154. package/dist/server/serverHelpers/Headers.js.map +1 -1
  155. package/dist/server/serverHelpers/NodeAdapterResponse.d.ts +48 -0
  156. package/dist/server/serverHelpers/NodeAdapterResponse.js +220 -0
  157. package/dist/server/serverHelpers/NodeAdapterResponse.js.map +1 -0
  158. package/dist/server/serverHelpers/Request.d.ts +5 -10
  159. package/dist/server/serverHelpers/Request.js +38 -136
  160. package/dist/server/serverHelpers/Request.js.map +1 -1
  161. package/dist/server/serverHelpers/contentTypes.d.ts +2 -0
  162. package/dist/server/serverHelpers/contentTypes.js +189 -15
  163. package/dist/server/serverHelpers/contentTypes.js.map +1 -1
  164. package/dist/server/serverHelpers/serverUtilities.js +96 -17
  165. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  166. package/dist/server/storageReclamation.js +1 -1
  167. package/dist/server/storageReclamation.js.map +1 -1
  168. package/dist/server/threads/isolatedApplications.d.ts +47 -0
  169. package/dist/server/threads/isolatedApplications.js +171 -0
  170. package/dist/server/threads/isolatedApplications.js.map +1 -0
  171. package/dist/server/threads/logRotationTransport.d.ts +1 -0
  172. package/dist/server/threads/logRotationTransport.js +33 -0
  173. package/dist/server/threads/logRotationTransport.js.map +1 -0
  174. package/dist/server/threads/manageThreads.d.ts +64 -6
  175. package/dist/server/threads/manageThreads.js +261 -12
  176. package/dist/server/threads/manageThreads.js.map +1 -1
  177. package/dist/server/threads/socketRouter.d.ts +1 -0
  178. package/dist/server/threads/socketRouter.js +196 -13
  179. package/dist/server/threads/socketRouter.js.map +1 -1
  180. package/dist/server/threads/threadServer.js +30 -7
  181. package/dist/server/threads/threadServer.js.map +1 -1
  182. package/dist/utility/errors/hdbError.d.ts +24 -0
  183. package/dist/utility/errors/hdbError.js +58 -1
  184. package/dist/utility/errors/hdbError.js.map +1 -1
  185. package/dist/utility/hdbTerms.d.ts +2 -0
  186. package/dist/utility/hdbTerms.js +2 -0
  187. package/dist/utility/hdbTerms.js.map +1 -1
  188. package/dist/utility/logging/harper_logger.js +217 -38
  189. package/dist/utility/logging/harper_logger.js.map +1 -1
  190. package/dist/utility/logging/logGenerationCoordinator.d.ts +35 -0
  191. package/dist/utility/logging/logGenerationCoordinator.js +184 -0
  192. package/dist/utility/logging/logGenerationCoordinator.js.map +1 -0
  193. package/dist/utility/logging/logRotation.d.ts +46 -0
  194. package/dist/utility/logging/logRotation.js +365 -0
  195. package/dist/utility/logging/logRotation.js.map +1 -0
  196. package/dist/utility/logging/logRotator.d.ts +1 -1
  197. package/dist/utility/logging/logRotator.js +172 -92
  198. package/dist/utility/logging/logRotator.js.map +1 -1
  199. package/dist/utility/npmUtilities.js +6 -4
  200. package/dist/utility/npmUtilities.js.map +1 -1
  201. package/dist/utility/watcherFallback.d.ts +0 -45
  202. package/dist/utility/watcherFallback.js +1 -125
  203. package/dist/utility/watcherFallback.js.map +1 -1
  204. package/dist/validation/configValidator.js +6 -3
  205. package/dist/validation/configValidator.js.map +1 -1
  206. package/index.ts +6 -0
  207. package/json/systemSchema.json +3 -0
  208. package/npm-shrinkwrap.json +131 -41
  209. package/package.json +10 -3
  210. package/resources/DESIGN.md +124 -19
  211. package/resources/DatabaseTransaction.ts +230 -17
  212. package/resources/LMDBTransaction.ts +21 -3
  213. package/resources/PrimaryRocksDatabase.ts +20 -7
  214. package/resources/RecordEncoder.ts +25 -5
  215. package/resources/Resource.ts +97 -13
  216. package/resources/ResourceInterface.ts +8 -0
  217. package/resources/RocksIndexStore.ts +2 -1
  218. package/resources/RocksTransactionLogStore.ts +111 -31
  219. package/resources/Table.ts +1224 -393
  220. package/resources/analytics/write.ts +10 -3
  221. package/resources/auditStore.ts +460 -11
  222. package/resources/dataLoader.ts +3 -4
  223. package/resources/databases.ts +610 -146
  224. package/resources/derivedIndexRegistry.ts +56 -0
  225. package/resources/derivedIndexRuntime.ts +2292 -0
  226. package/resources/graphql.ts +3 -2
  227. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +905 -46
  228. package/resources/indexes/hnswDerivedIndex.ts +531 -0
  229. package/resources/indexes/hnswPlaneBinding.ts +174 -0
  230. package/resources/nodeIdMapping.ts +50 -0
  231. package/resources/recordLock.ts +173 -7
  232. package/resources/recordLockCoordinator.ts +3043 -0
  233. package/resources/replayLogs.ts +5 -0
  234. package/resources/replicatedApplyFailure.ts +77 -0
  235. package/resources/scheduler/scheduler.ts +4 -4
  236. package/resources/search.ts +169 -49
  237. package/resources/tracked.ts +73 -22
  238. package/security/jsLoader.ts +6 -4
  239. package/server/DESIGN.md +11 -0
  240. package/server/REST.ts +36 -3
  241. package/server/http.ts +34 -2
  242. package/server/serverHelpers/Headers.ts +5 -1
  243. package/server/serverHelpers/NodeAdapterResponse.ts +221 -0
  244. package/server/serverHelpers/Request.ts +33 -131
  245. package/server/serverHelpers/contentTypes.ts +188 -15
  246. package/server/serverHelpers/serverUtilities.ts +143 -24
  247. package/server/storageReclamation.ts +2 -2
  248. package/server/threads/isolatedApplications.ts +157 -0
  249. package/server/threads/logRotationTransport.ts +40 -0
  250. package/server/threads/manageThreads.js +254 -12
  251. package/server/threads/socketRouter.ts +217 -11
  252. package/server/threads/threadServer.js +30 -7
  253. package/studio/web/assets/{Chat-BnCBegQz.js → Chat-D3j-1yY1.js} +1 -1
  254. package/studio/web/assets/{FloatingChat-CoDW1ySS.js → FloatingChat-BxJGYcfB.js} +3 -3
  255. package/studio/web/assets/{apiToken-Bwk5BLXW.js → apiToken-CT55oWOe.js} +1 -1
  256. package/studio/web/assets/{applications-DHxGi7JH.js → applications-D9Ct9_vm.js} +1 -1
  257. package/studio/web/assets/{cssMode-s0cWI-_M.js → cssMode-DV8H7VwA.js} +1 -1
  258. package/studio/web/assets/{editor-DNcRHK54.js → editor-uatc0unt.js} +1 -1
  259. package/studio/web/assets/{html-Bdssedlg.js → html-Bm6D6paN.js} +1 -1
  260. package/studio/web/assets/{htmlMode-CoDlJ3fw.js → htmlMode-CEn7tpLG.js} +1 -1
  261. package/studio/web/assets/{index-D6sxmFLR.js → index-BIXW6Pu4.js} +5 -5
  262. package/studio/web/assets/{index.lazy-tmU5BS8s.js → index.lazy-UI7L-Vrk.js} +1 -1
  263. package/studio/web/assets/{javascript-B8meVSTH.js → javascript-CJ0G3AFZ.js} +1 -1
  264. package/studio/web/assets/{jsonMode-DpIPd35T.js → jsonMode-DQADAYEa.js} +1 -1
  265. package/studio/web/assets/{languageServices-C_5FMJzQ.js → languageServices-CAQJXWcI.js} +1 -1
  266. package/studio/web/assets/{lspLanguageFeatures-BIzNBzPK.js → lspLanguageFeatures-CCQ8P5sY.js} +1 -1
  267. package/studio/web/assets/{notifications-CQf18QKb.js → notifications-BbxTU6Aw.js} +1 -1
  268. package/studio/web/assets/{notifications-CvZivSbh.js → notifications-Cvb3P1lB.js} +1 -1
  269. package/studio/web/assets/{profile-DdOwtntb.js → profile-Yyb7gsvL.js} +1 -1
  270. package/studio/web/assets/{regions-n69fwagr.js → regions-OgjGHlU5.js} +1 -1
  271. package/studio/web/assets/{register-PfWTCXWB.js → register-6qwNEOY3.js} +2 -2
  272. package/studio/web/assets/{setComponentFile-Bg6O7X0S.js → setComponentFile-BilDMtgB.js} +1 -1
  273. package/studio/web/assets/{setup-CUx_aUDl.js → setup-J6qJ7OIU.js} +2 -2
  274. package/studio/web/assets/{status-D7BVKqX9.js → status-0RWGcfyD.js} +1 -1
  275. package/studio/web/assets/{toggleHighContrast-DBSyXzMr.js → toggleHighContrast-BIn-vErT.js} +1 -1
  276. package/studio/web/assets/{tsMode-BByKCjBS.js → tsMode-DgUXku4d.js} +1 -1
  277. package/studio/web/assets/{typescript-DDLnLpw9.js → typescript-C9orXcsM.js} +1 -1
  278. package/studio/web/assets/{useEntityRestURL-31CHGaHk.js → useEntityRestURL-BEoXXbUB.js} +1 -1
  279. package/studio/web/assets/{workers-pR3jRY9D.js → workers-JVzSDmgx.js} +1 -1
  280. package/studio/web/assets/{xml-2iRnMhQO.js → xml-Cq-S8S4X.js} +1 -1
  281. package/studio/web/assets/{yaml-Bf92gJpd.js → yaml-sfoRdh1M.js} +1 -1
  282. package/studio/web/index.html +1 -1
  283. package/utility/errors/hdbError.ts +54 -0
  284. package/utility/hdbTerms.ts +2 -0
  285. package/utility/logging/harper_logger.ts +209 -30
  286. package/utility/logging/logGenerationCoordinator.ts +196 -0
  287. package/utility/logging/logRotation.ts +367 -0
  288. package/utility/logging/logRotator.ts +196 -91
  289. package/utility/npmUtilities.ts +6 -4
  290. package/utility/watcherFallback.ts +0 -122
  291. package/validation/configValidator.ts +6 -3
@@ -1 +1 @@
1
- {"version":3,"file":"deploymentRecorder.js","sourceRoot":"","sources":["../../components/deploymentRecorder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploymentRecorder.js","sourceRoot":"","sources":["../../components/deploymentRecorder.ts"],"names":[],"mappings":"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"}
@@ -93,6 +93,34 @@ export function packageComponent(req: any): Promise<{
93
93
  * @returns {Promise<string>}
94
94
  */
95
95
  export function deployComponent(req: any): Promise<string>;
96
+ /**
97
+ * Peers that did not answer a stage with `staged: true` — either unreachable, or running a build that
98
+ * predates staged deploys and therefore treated the request as an ordinary deploy.
99
+ *
100
+ * Split out from the caller so it can be tested without a cluster: this is the only safety net for the
101
+ * mixed-version hazard #2315 records as accepted, and a regression in it fails silently. The entry shape
102
+ * belongs to harper-pro's replicator rather than this repo — `normalizePeerResult` already tolerates more
103
+ * than one — so the marker is read flat or from a wrapped body; assuming flat would report every peer in a
104
+ * fully-upgraded cluster as unconfirmed.
105
+ */
106
+ export function unconfirmedStagingPeers(replicated: any): any[];
107
+ /**
108
+ * Whether the root-config entry an activation published is still the one on disk — the condition for that
109
+ * activation's failure to take it back. A `set_configuration` acknowledged while the swap was retrying is
110
+ * not this operation's to overwrite, and restoring a snapshot taken before it would silently drop it.
111
+ *
112
+ * Split out from the caller so it can be tested without a deploy: this is the only guard on a hazard the
113
+ * preparation lock does not cover, and both ways it can regress fail silently. `refreshConfig` is called
114
+ * BEFORE the read and is load-bearing — `set_configuration` writes the config file without refreshing this
115
+ * process's config object, so a cached read compares against a value that predates the very change the
116
+ * guard exists to protect and always concludes nothing moved. It narrows the window rather than closing
117
+ * it; serializing config publication is #2315 step 3.
118
+ *
119
+ * `published` must be the entry as read back after publication, not as passed in: only two values that went
120
+ * through the same write-and-parse round trip are comparable, and comparing against the argument would read
121
+ * any serialization difference as a concurrent change and skip every undo.
122
+ */
123
+ export function publishedEntryStillStands(published: any, refreshConfig: any, readCurrentEntry: any): boolean;
96
124
  /**
97
125
  * Gets a JSON directory tree of the components dir and all nested files/folders
98
126
  * @returns {Promise<*>}
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
  const path = require('node:path');
3
3
  const { isMainThread, parentPort } = require('node:worker_threads');
4
+ const { isDeepStrictEqual } = require('node:util');
4
5
  const fs = require('fs-extra');
5
6
  const fg = require('fast-glob');
6
7
  const normalize = require('normalize-path');
@@ -23,6 +24,7 @@ const { server } = require("../server/Server.js");
23
24
  const { DeploymentRecorder, awaitDeploymentRow, readPayloadBlobWithRetry, coerceTimeoutMs, DEFAULT_AWAIT_ROW_TIMEOUT_MS, } = require("./deploymentRecorder.js");
24
25
  const { ProgressEmitter } = require("../server/serverHelpers/progressEmitter.js");
25
26
  const DROP_COMPONENT_LOCK_TIMEOUT_MS = 5 * 60 * 1000;
27
+ const ISOLATED_TOPOLOGY_REQUEST_TIMEOUT_MS = 5000;
26
28
  function componentDropLockOptions(project) {
27
29
  return {
28
30
  timeoutMs: DROP_COMPONENT_LOCK_TIMEOUT_MS,
@@ -464,12 +466,53 @@ async function deployComponent(req) {
464
466
  // replicated ciphertext (reference, not embed); already-reference entries pass through, and with
465
467
  // no custody a literal token stays as a transient, this-node-only fallback (#1158). Peers
466
468
  // re-running a replicated deploy already carry references and never re-ingest.
469
+ const { isIsolatedApplication } = require("../server/threads/isolatedApplications.js");
470
+ const requestedIsolation = req.isolated;
471
+ const isReplicatedExecution = typeof req._deploymentId === 'string';
472
+ const mode = req.deployment_id ? 'activate' : req.activate === false ? 'stage' : 'deploy';
473
+ const isActivation = mode === 'activate';
474
+ // this thread's cached config may predate an earlier deploy that changed the entry without a restart
475
+ env.initSync(true);
476
+ const initiallyIsolated = isIsolatedApplication(req.project);
477
+ if (requestedIsolation !== undefined && !req.package) {
478
+ throw handleHDBError(new Error(), `'isolated' is only supported for package deployments; set it on the application's root config entry instead`, HTTP_STATUS_CODES.BAD_REQUEST);
479
+ }
480
+ // Only the originating node rejects admission: replicated peers must commit the same desired config,
481
+ // then report any node-local inability to run it through component lifecycle status.
482
+ const assertIsolationAdmission = async (isolated) => {
483
+ if (!isolated || isReplicatedExecution)
484
+ return;
485
+ const { isolatedApplicationRefusal, isolatedApplicationCapacityRefusal, presentIsolatedApplicationNames, } = require("../server/threads/isolatedApplications.js");
486
+ let runningApplications;
487
+ try {
488
+ runningApplications = await manageThreads.getRunningIsolatedApplications(ISOLATED_TOPOLOGY_REQUEST_TIMEOUT_MS);
489
+ }
490
+ catch (error) {
491
+ throw handleHDBError(error, `Cannot deploy '${req.project}' as an isolated application: the main thread's worker topology is unavailable: ${error.message}`, HTTP_STATUS_CODES.SERVICE_UNAVAILABLE);
492
+ }
493
+ runningApplications = new Set([
494
+ ...runningApplications,
495
+ ...presentIsolatedApplicationNames().filter((application) => !isolatedApplicationRefusal(application)),
496
+ ]);
497
+ const refusal = isolatedApplicationRefusal(req.project) ?? isolatedApplicationCapacityRefusal(req.project, runningApplications);
498
+ if (refusal) {
499
+ throw handleHDBError(new Error(), `Cannot deploy '${req.project}' as an isolated application: ${refusal}`, HTTP_STATUS_CODES.CONFLICT);
500
+ }
501
+ };
502
+ // Skipped for an activation: the artifact's descriptor is the authority for the isolation it wants, and
503
+ // `admitIsolation` runs the real check under the preparation lock. Admitting the CURRENT value here would
504
+ // refuse an activation whose artifact turns isolation OFF for a component whose present isolated state is
505
+ // itself the refusal — a 409 for the request that would fix it.
506
+ if (!isActivation)
507
+ await assertIsolationAdmission(requestedIsolation ?? initiallyIsolated);
467
508
  const { ingestCredentials, resolveCredentials } = require("./secretOperations.js");
468
- req.credentials = await ingestCredentials(req, req.credentials, req.project);
509
+ // An activation resolves, fetches and installs nothing, so there is no credential for it to carry.
510
+ // The validator rejects one; this keeps the ingest itself off the path rather than relying on that.
511
+ if (!isActivation)
512
+ req.credentials = await ingestCredentials(req, req.credentials, req.project);
469
513
  // References are safe to persist (config + deployment row) and replicate; a no-custody literal
470
514
  // token is not — it is used only for this node's install below, then stripped before replication.
471
515
  const credentialReferences = (req.credentials ?? []).filter((entry) => entry && entry.secret !== undefined);
472
- // Write to root config if the request contains a package identifier
473
516
  if (req.package) {
474
517
  // Check if trying to overwrite a core component (requires force)
475
518
  // Lazy-load to avoid circular dependency with componentLoader
@@ -477,32 +520,9 @@ async function deployComponent(req) {
477
520
  if (TRUSTED_RESOURCE_PLUGINS[req.project] && !req.force) {
478
521
  throw handleHDBError(new Error(), `Cannot deploy component with name '${req.project}': this is a protected core component name. Use force: true to overwrite.`, HTTP_STATUS_CODES.CONFLICT);
479
522
  }
480
- const applicationConfig = { package: req.package };
481
- // Avoid writing an empty `install:` block
482
- if (req.install_command || req.install_timeout || req.install_allow_scripts !== undefined) {
483
- applicationConfig.install = {
484
- command: req.install_command,
485
- timeout: req.install_timeout,
486
- allowInstallScripts: req.install_allow_scripts,
487
- };
488
- }
489
- if (req.urlPath !== undefined)
490
- applicationConfig.urlPath = req.urlPath;
491
- if (req.host !== undefined)
492
- applicationConfig.host = req.host;
493
- // Same convention as host/urlPath above, and for the same reason: a package redeploy rebuilds
494
- // this application's whole root-config entry from request fields, so a deployment-level key that
495
- // isn't re-supplied here is silently dropped -- for branchedDatabases specifically, that means an
496
- // application which believed it had a private fork resumes sharing the base after the next
497
- // restart, with nothing in this operation to say so.
498
- if (req.branchedDatabases !== undefined)
499
- applicationConfig.branchedDatabases = req.branchedDatabases;
500
- // Persist credential references (never tokens) so every cold install of this component —
501
- // reboot, new peer, rollback — re-resolves the credential from the store.
502
- if (credentialReferences.length)
503
- applicationConfig.credentials = credentialReferences;
504
- await configUtils.addConfig(req.project, applicationConfig);
505
523
  }
524
+ let wasIsolated;
525
+ let nowIsolated;
506
526
  // Create a hdb_deployment row up front so the deploy is observable and auditable
507
527
  // even if the CLI disconnects. The row also holds the payload in a Blob attribute,
508
528
  // which doubles as the source for peer replication and (later) rollback.
@@ -511,7 +531,6 @@ async function deployComponent(req) {
511
531
  // recording so we don't accumulate one row per node for the same deploy. The row
512
532
  // reaches peers via the table's standard replication; the peer-side branch below
513
533
  // reads payload_blob back from there.
514
- const isReplicatedExecution = typeof req._deploymentId === 'string';
515
534
  // An SSE-bound caller already attached a ProgressEmitter (created in the server
516
535
  // handler so it can also drive the response stream). Reuse it; otherwise spin up a
517
536
  // fresh emitter so the recorder still gets phase events for non-SSE deploys.
@@ -524,6 +543,7 @@ async function deployComponent(req) {
524
543
  project: req.project,
525
544
  package_identifier: req.package ?? null,
526
545
  user: req.hdb_user?.username,
546
+ activated_from: req.deployment_id ?? null,
527
547
  restart_mode: req.restart === 'rolling' ? 'rolling' : req.restart ? 'immediate' : null,
528
548
  // Reference form only — the rollback source for re-resolving the credential.
529
549
  credentials: credentialReferences.length ? credentialReferences : null,
@@ -546,12 +566,19 @@ async function deployComponent(req) {
546
566
  // Bounded ring buffer of install stdout/stderr so a non-SSE caller sees the tail
547
567
  // in the thrown error. SSE callers still stream every line live.
548
568
  const installCapture = createInstallCapture();
569
+ let stagedOnOrigin = false;
549
570
  try {
550
571
  // On the origin, tee the tarball (Buffer or Readable from the multipart parser)
551
572
  // through a hash-and-size tap into the row's payload_blob, then re-source extraction
552
573
  // from the persisted blob. When `system` replicates, the blob becomes the channel
553
574
  // peers read from; when it doesn't, the blob stays local for audit and rollback.
554
- if (recorder && req.payload != null) {
575
+ if (isActivation) {
576
+ // A replicated activation has exactly the shape the peer-side blob branch below keys on — neither
577
+ // `package` nor `payload` — so without this branch every peer would wait out `deployment_timeout`
578
+ // for a payload its row never had while the origin swapped successfully.
579
+ extractionPayload = undefined;
580
+ }
581
+ else if (recorder && req.payload != null) {
555
582
  await recorder.ingestPayload(req.payload);
556
583
  extractionPayload = recorder.row.payload_blob.stream();
557
584
  }
@@ -587,9 +614,13 @@ async function deployComponent(req) {
587
614
  if (isReplicatedExecution) {
588
615
  credentialsWaitMs = coerceTimeoutMs(req.deployment_timeout, DEFAULT_AWAIT_ROW_TIMEOUT_MS);
589
616
  }
590
- const resolvedCredentials = await resolveCredentials(req.credentials, req.project, {
591
- waitMs: credentialsWaitMs,
592
- });
617
+ // Skipped for an activation, which runs no pack, clone or install: waiting for an hdb_secret row to
618
+ // replicate in would only delay a swap that has nothing to authenticate to.
619
+ const resolvedCredentials = isActivation
620
+ ? undefined
621
+ : await resolveCredentials(req.credentials, req.project, {
622
+ waitMs: credentialsWaitMs,
623
+ });
593
624
  const application = new Application({
594
625
  name: req.project,
595
626
  payload: extractionPayload,
@@ -628,12 +659,95 @@ async function deployComponent(req) {
628
659
  // committed" — so a later failure arrives after both phases reported success. The operation's error
629
660
  // is the authority on whether the deploy landed, not the phase stream.
630
661
  emit('phase', { phase: 'prepare', status: 'start' });
662
+ // The root-config entry a package deploy publishes. A stage records it with the artifact instead of
663
+ // publishing it, so a staged release nobody activated cannot leave config naming it — and the
664
+ // activation that eventually publishes it does so in the same order a normal deploy does.
665
+ let stagedRootConfig = null;
631
666
  await prepareApplication(application, {
667
+ // `.deploy-staging/<artifactId>`. The public deployment id, so the id the caller was handed is
668
+ // the id a later `deployment_id` request can name; an activation names the artifact's own id,
669
+ // not the new row's.
670
+ artifactId: req.deployment_id ?? req._deploymentId,
671
+ mode,
672
+ describeArtifact: () => ({ rootConfig: stagedRootConfig, isolated: Boolean(nowIsolated) }),
673
+ // Returns its own undo. Publication happens BEFORE the swap, in the same order a normal deploy
674
+ // uses, so an activation that fails pre-commit would otherwise leave config naming a release that
675
+ // is not live — and `installApplications()` would resolve and install that package from scratch at
676
+ // the next boot, over a component whose certified artifact is sitting right there. Restoring is
677
+ // best-effort and not durable (that is #2315 step 3's work); it is still the difference between a
678
+ // failed activation that changed nothing and one that re-points the component.
679
+ publishRootConfig: async (entry) => {
680
+ const previous = configUtils.getConfigObj()?.[req.project];
681
+ await configUtils.addConfig(req.project, entry);
682
+ env.initSync(true);
683
+ // Read BACK, not `entry` — see `publishedEntryStillStands`.
684
+ const published = configUtils.getConfigObj()?.[req.project];
685
+ return async () => {
686
+ if (!publishedEntryStillStands(published, () => env.initSync(true), () => configUtils.getConfigObj()?.[req.project])) {
687
+ return;
688
+ }
689
+ if (previous === undefined)
690
+ configUtils.deleteConfigFromFile([req.project]);
691
+ else
692
+ await configUtils.addConfig(req.project, previous);
693
+ env.initSync(true);
694
+ };
695
+ },
696
+ admitIsolation: async (descriptor) => {
697
+ env.initSync(true);
698
+ wasIsolated = isIsolatedApplication(req.project);
699
+ // A package artifact restores its own root-config entry, so its recorded intent is what will
700
+ // be in force. A payload artifact publishes no config, so the effective configuration is the
701
+ // only authority there — a saved `false` must not admit past an isolation the operator set
702
+ // between the stage and this call.
703
+ nowIsolated = descriptor.rootConfig ? descriptor.isolated : wasIsolated;
704
+ await assertIsolationAdmission(nowIsolated);
705
+ },
706
+ beforePrepare: async () => {
707
+ if (isActivation)
708
+ return;
709
+ env.initSync(true);
710
+ wasIsolated = isIsolatedApplication(req.project);
711
+ nowIsolated = requestedIsolation ?? wasIsolated;
712
+ await assertIsolationAdmission(nowIsolated);
713
+ if (!isReplicatedExecution && req.package)
714
+ req.isolated = nowIsolated;
715
+ if (!req.package)
716
+ return;
717
+ const applicationConfig = { package: req.package };
718
+ if (req.install_command || req.install_timeout || req.install_allow_scripts !== undefined) {
719
+ applicationConfig.install = {
720
+ command: req.install_command,
721
+ timeout: req.install_timeout,
722
+ allowInstallScripts: req.install_allow_scripts,
723
+ };
724
+ }
725
+ if (req.urlPath !== undefined)
726
+ applicationConfig.urlPath = req.urlPath;
727
+ if (req.host !== undefined)
728
+ applicationConfig.host = req.host;
729
+ if (req.branchedDatabases !== undefined)
730
+ applicationConfig.branchedDatabases = req.branchedDatabases;
731
+ if (nowIsolated)
732
+ applicationConfig.isolated = true;
733
+ if (credentialReferences.length)
734
+ applicationConfig.credentials = credentialReferences;
735
+ if (mode === 'stage') {
736
+ stagedRootConfig = applicationConfig;
737
+ return;
738
+ }
739
+ await configUtils.addConfig(req.project, applicationConfig);
740
+ env.initSync(true);
741
+ },
632
742
  validateCandidate: async (candidateDirPath) => {
633
743
  emit('phase', { phase: 'prepare', status: 'done' });
634
744
  await validateComponentLoads(candidateDirPath, emit);
635
745
  },
636
746
  });
747
+ // The build is certified on disk from here on, so every later failure — a peer result, or a rejection
748
+ // thrown by the replication layer itself — still leaves an artifact this id can activate.
749
+ if (mode === 'stage')
750
+ stagedOnOrigin = true;
637
751
  const rollingRestart = req.restart === 'rolling';
638
752
  // if doing a rolling restart set restart to false so that other nodes don't also restart.
639
753
  req.restart = rollingRestart ? false : req.restart;
@@ -676,14 +790,26 @@ async function deployComponent(req) {
676
790
  // when the per-peer callback already fired for these.
677
791
  recorder.recordPeers(response.replicated);
678
792
  }
679
- if (req.restart === true) {
793
+ // A still-isolated application restarts only its own dedicated worker. Everything else restarts the
794
+ // pool: a shared application, and either direction of an isolation flip, where the reconcile in
795
+ // restartWorkers starts or stops the moving application's own worker.
796
+ const restartScope = wasIsolated && nowIsolated ? application.name : undefined;
797
+ if (mode === 'stage') {
798
+ // No restart and no restart-required flag: nothing about the running component changed. The
799
+ // marker is what tells the origin which peers understood the request — see the confirmation
800
+ // check below — and it is set on every node, origin included, since a peer returns this same
801
+ // object as its operation response.
802
+ response.staged = true;
803
+ response.message = `Staged: ${application.name}`;
804
+ }
805
+ else if (req.restart === true) {
680
806
  emit('phase', { phase: 'restart', status: 'start' });
681
807
  // Workers not yet replaced keep serving the pre-deploy component set, and where the OS lets
682
808
  // replacements share a port they keep accepting connections for the whole rolling restart, so
683
809
  // a caller that reads success as "the component is live" can be served by a worker that has
684
810
  // never heard of it.
685
811
  const { awaitRestart } = require("./awaitRestart.js");
686
- const restart = await awaitRestart((onProgress) => manageThreads.restartWorkers('http', undefined, undefined, onProgress));
812
+ const restart = await awaitRestart((onProgress) => manageThreads.restartWorkers('http', undefined, undefined, onProgress, restartScope));
687
813
  emit('phase', { phase: 'restart', status: 'done' });
688
814
  logRestartOutcome(restart, `deploying ${application.name}`);
689
815
  response.message = `Successfully deployed: ${application.name}, restarting Harper`;
@@ -694,6 +820,8 @@ async function deployComponent(req) {
694
820
  const jobResponse = await serverUtilities.executeJob({
695
821
  operation: 'restart_service',
696
822
  service: 'http',
823
+ scope: manageThreads.encodeRestartScope(restartScope),
824
+ scopeFallback: restartScope === undefined ? undefined : manageThreads.encodeRestartScope(undefined),
697
825
  replicated: true,
698
826
  });
699
827
  emit('phase', { phase: 'restart', status: 'done' });
@@ -713,10 +841,8 @@ async function deployComponent(req) {
713
841
  // An existing component's watched files are handled by Scope/EntryHandler. Package
714
842
  // metadata is deliberately outside most plugin globs, so compare it across the atomic
715
843
  // swap as well: a dependency or module-entry change also invalidates loaded code.
716
- if (application.isNewComponent || application.packageMetadataChanged) {
717
- const { requestRestart } = require("./requestRestart.js");
718
- requestRestart();
719
- }
844
+ const { requestRestartAfterDeploy } = require("./requestRestart.js");
845
+ requestRestartAfterDeploy(application.isNewComponent, application.packageMetadataChanged, wasIsolated, nowIsolated);
720
846
  response.message = `Successfully deployed: ${application.name}`;
721
847
  }
722
848
  // Replication failures don't reject replicateOperation — they surface as 'failed'
@@ -731,10 +857,32 @@ async function deployComponent(req) {
731
857
  const detail = failedPeers
732
858
  .map((peer) => `${peer.node ?? 'unknown'} (${peer.error?.message ?? 'unknown error'})`)
733
859
  .join(', ');
734
- throw new ServerError(`Component '${application.name}' was deployed on the origin node but failed to replicate to ` +
735
- `${failedPeers.length} of ${recorder.row.peer_results.length} peer node(s): ${detail}. ` +
736
- `See deployment ${recorder.deploymentId} (get_deployment) for details, or pass ` +
737
- `ignore_replication_errors: true to treat replication failures as non-fatal.`);
860
+ const replicationError = new ServerError(`Component '${application.name}' was ${mode === 'stage' ? 'staged' : 'deployed'} on the origin node ` +
861
+ `but failed to replicate to ${failedPeers.length} of ${recorder.row.peer_results.length} peer ` +
862
+ `node(s): ${detail}. See deployment ${recorder.deploymentId} (get_deployment) for details, or ` +
863
+ `pass ignore_replication_errors: true to treat replication failures as non-fatal.`);
864
+ throw replicationError;
865
+ }
866
+ // A peer running a build that predates staged deploys accepts `activate: false` as an unknown
867
+ // field and performs its ordinary deploy, so it is now serving a release the operator asked only
868
+ // to stage. Nothing can prevent that — the operations channel carries no peer version or
869
+ // capability — so the origin reports it, from the one signal that separates the two cases: a node
870
+ // that staged says so in its response. Read from the raw aggregate, because the recorder's peer
871
+ // normalization keeps only node/status/error.
872
+ //
873
+ // The wording stays at "did not confirm". An unreachable peer and one that dropped the request
874
+ // look identical from here, and telling an operator those nodes went live would be a guess.
875
+ if (mode === 'stage') {
876
+ const unconfirmed = unconfirmedStagingPeers(response?.replicated);
877
+ if (unconfirmed.length > 0) {
878
+ const detail = unconfirmed.map((peer) => peer.node ?? 'unknown').join(', ');
879
+ const unconfirmedError = new ServerError(`Component '${application.name}' was staged on the origin node, but ${unconfirmed.length} peer ` +
880
+ `node(s) did not confirm staging: ${detail}. Either they are unreachable, or they run a build ` +
881
+ `that predates staged deploys — which treats this request as an ordinary deploy, so the ` +
882
+ `release is already serving there. Check those nodes before activating deployment ` +
883
+ `${recorder.deploymentId}, or pass ignore_replication_errors: true to accept the difference.`);
884
+ throw unconfirmedError;
885
+ }
738
886
  }
739
887
  }
740
888
  if (recorder) {
@@ -747,15 +895,27 @@ async function deployComponent(req) {
747
895
  // the tarball when it's still the artifact you'd debug or retry with: failed deploys
748
896
  // don't reach this branch, and a deploy that reached here only because
749
897
  // ignore_replication_errors masked failed peers keeps its payload for those peers.
898
+ // Never for a stage: the artifact on disk is not yet a release anyone can re-derive, and retention
899
+ // can evict it (it shares `deployment_stagingRetention_maxCount` with incidental dormant builds),
900
+ // so dropping the tarball here is how a staged release becomes unrecoverable — no tree, no bytes,
901
+ // and a row still reporting `staged`. An operator can still reclaim it deliberately with
902
+ // delete_deployment_payload once they accept that.
750
903
  const payloadSize = recorder.row.payload_size;
751
904
  const retentionMaxSize = getPayloadRetentionMaxSize();
752
- if (typeof payloadSize === 'number' && payloadSize > retentionMaxSize && recorder.getFailedPeers().length === 0) {
905
+ if (mode !== 'stage' &&
906
+ typeof payloadSize === 'number' &&
907
+ payloadSize > retentionMaxSize &&
908
+ recorder.getFailedPeers().length === 0) {
753
909
  const freed = recorder.dropPayload();
754
910
  if (freed > 0)
755
911
  emit('payload_dropped', { payload_size: freed, max_size: retentionMaxSize });
756
912
  }
757
- emit('phase', { phase: 'success', status: 'done' });
758
- await recorder.finish('success');
913
+ emit('phase', { phase: mode === 'stage' ? 'staged' : 'success', status: 'done' });
914
+ await recorder.finish(mode === 'stage' ? 'staged' : 'success');
915
+ if (mode === 'stage') {
916
+ response.message =
917
+ `Staged: ${application.name}. Deploy it with deploy_component ` + `deployment_id=${recorder.deploymentId}`;
918
+ }
759
919
  }
760
920
  return response;
761
921
  }
@@ -799,7 +959,7 @@ async function deployComponent(req) {
799
959
  // install output, and failed_peers the caller needs.
800
960
  if (recorder) {
801
961
  try {
802
- await recorder.finish('failed', err);
962
+ await recorder.finish(stagedOnOrigin ? 'staged' : 'failed', err);
803
963
  }
804
964
  catch (finishErr) {
805
965
  log.warn('Failed to record deployment failure row', finishErr);
@@ -808,6 +968,42 @@ async function deployComponent(req) {
808
968
  throw outErr;
809
969
  }
810
970
  }
971
+ /**
972
+ * Whether the root-config entry an activation published is still the one on disk — the condition for that
973
+ * activation's failure to take it back. A `set_configuration` acknowledged while the swap was retrying is
974
+ * not this operation's to overwrite, and restoring a snapshot taken before it would silently drop it.
975
+ *
976
+ * Split out from the caller so it can be tested without a deploy: this is the only guard on a hazard the
977
+ * preparation lock does not cover, and both ways it can regress fail silently. `refreshConfig` is called
978
+ * BEFORE the read and is load-bearing — `set_configuration` writes the config file without refreshing this
979
+ * process's config object, so a cached read compares against a value that predates the very change the
980
+ * guard exists to protect and always concludes nothing moved. It narrows the window rather than closing
981
+ * it; serializing config publication is #2315 step 3.
982
+ *
983
+ * `published` must be the entry as read back after publication, not as passed in: only two values that went
984
+ * through the same write-and-parse round trip are comparable, and comparing against the argument would read
985
+ * any serialization difference as a concurrent change and skip every undo.
986
+ */
987
+ function publishedEntryStillStands(published, refreshConfig, readCurrentEntry) {
988
+ refreshConfig();
989
+ return isDeepStrictEqual(readCurrentEntry(), published);
990
+ }
991
+ /**
992
+ * Peers that did not answer a stage with `staged: true` — either unreachable, or running a build that
993
+ * predates staged deploys and therefore treated the request as an ordinary deploy.
994
+ *
995
+ * Split out from the caller so it can be tested without a cluster: this is the only safety net for the
996
+ * mixed-version hazard #2315 records as accepted, and a regression in it fails silently. The entry shape
997
+ * belongs to harper-pro's replicator rather than this repo — `normalizePeerResult` already tolerates more
998
+ * than one — so the marker is read flat or from a wrapped body; assuming flat would report every peer in a
999
+ * fully-upgraded cluster as unconfirmed.
1000
+ */
1001
+ function unconfirmedStagingPeers(replicated) {
1002
+ if (!Array.isArray(replicated))
1003
+ return [];
1004
+ const confirmed = (peer) => peer?.staged === true || peer?.value?.staged === true || peer?.body?.staged === true;
1005
+ return replicated.filter((peer) => peer && !confirmed(peer));
1006
+ }
811
1007
  // Ring buffer of install stdout/stderr lines, capped by both line count and bytes so
812
1008
  // a chatty install can't unbounded-grow the error response. snapshot() reports whether
813
1009
  // the head was dropped so callers can flag truncation.
@@ -1163,10 +1359,22 @@ async function dropComponent(req) {
1163
1359
  const componentsRoot = configUtils.getConfigPath(hdbTerms.CONFIG_PARAMS.COMPONENTSROOT);
1164
1360
  const componentPath = path.join(componentsRoot, project);
1165
1361
  const pathToComponent = path.join(componentsRoot, projectPath);
1362
+ let restartScope;
1166
1363
  let response;
1167
1364
  await withComponentPreparationLock(componentPath, async () => {
1365
+ if (req.restart === true) {
1366
+ let runningApplications;
1367
+ try {
1368
+ runningApplications = await manageThreads.getRunningIsolatedApplications(ISOLATED_TOPOLOGY_REQUEST_TIMEOUT_MS);
1369
+ }
1370
+ catch (error) {
1371
+ throw handleHDBError(error, `Cannot drop '${project}' with a restart: the main thread's worker topology is unavailable: ${error.message}`, HTTP_STATUS_CODES.SERVICE_UNAVAILABLE);
1372
+ }
1373
+ if (runningApplications.includes(project))
1374
+ restartScope = project;
1375
+ }
1168
1376
  const componentSymlink = path.join(env.get(hdbTerms.CONFIG_PARAMS.ROOTPATH), 'node_modules', project);
1169
- if (await fs.pathExists(componentSymlink)) {
1377
+ if (!file && (await fs.pathExists(componentSymlink))) {
1170
1378
  await fs.unlink(componentSymlink);
1171
1379
  }
1172
1380
  if (!file) {
@@ -1176,18 +1384,16 @@ async function dropComponent(req) {
1176
1384
  await fs.remove(pathToComponent);
1177
1385
  }
1178
1386
  const packageJsonPath = path.join(env.get(hdbTerms.CONFIG_PARAMS.ROOTPATH), 'package.json');
1179
- if (await fs.pathExists(packageJsonPath)) {
1387
+ if (!file && (await fs.pathExists(packageJsonPath))) {
1180
1388
  const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf8'));
1181
1389
  if (packageJson?.dependencies?.[project]) {
1182
1390
  delete packageJson.dependencies[project];
1183
1391
  }
1184
1392
  await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf8');
1185
1393
  }
1186
- configUtils.deleteConfigFromFile([project]);
1187
- // The main thread's cached config still names the project; the restart below installs every
1188
- // package application in that cache, and installing this one would take the lock held here.
1189
- // (A worker's RESTART message refreshes main's config the same way.)
1190
- if (isMainThread)
1394
+ if (!file)
1395
+ configUtils.deleteConfigFromFile([project]);
1396
+ if (!file && isMainThread)
1191
1397
  env.initSync(true);
1192
1398
  response = await server.replication.replicateOperation(req);
1193
1399
  const { applicationHasBranchStorage, removeBranchesForApplication } = require("../resources/branchDatabase.js");
@@ -1205,6 +1411,7 @@ async function dropComponent(req) {
1205
1411
  parentPort.postMessage({
1206
1412
  type: hdbTerms.ITC_EVENT_TYPES.RESTART,
1207
1413
  workerType: 'http',
1414
+ scope: manageThreads.encodeRestartScope(restartScope),
1208
1415
  removeBranchesFor: file ? undefined : project,
1209
1416
  });
1210
1417
  if (branched) {
@@ -1214,7 +1421,7 @@ async function dropComponent(req) {
1214
1421
  return;
1215
1422
  }
1216
1423
  const { awaitRestart } = require("./awaitRestart.js");
1217
- const restart = await awaitRestart((onProgress) => manageThreads.restartWorkers('http', undefined, undefined, onProgress));
1424
+ const restart = await awaitRestart((onProgress) => manageThreads.restartWorkers('http', undefined, undefined, onProgress, restartScope));
1218
1425
  logRestartOutcome(restart, `dropping ${projectPath}`);
1219
1426
  if (!branched)
1220
1427
  return;
@@ -1244,6 +1451,8 @@ exports.addComponent = addComponent;
1244
1451
  exports.dropCustomFunctionProject = dropCustomFunctionProject;
1245
1452
  exports.packageComponent = packageComponent;
1246
1453
  exports.deployComponent = deployComponent;
1454
+ exports.unconfirmedStagingPeers = unconfirmedStagingPeers;
1455
+ exports.publishedEntryStillStands = publishedEntryStillStands;
1247
1456
  exports.getComponents = getComponents;
1248
1457
  exports.getComponentFile = getComponentFile;
1249
1458
  exports.setComponentFile = setComponentFile;