@oneuptime/common 12.0.2 → 12.0.4

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 (384) hide show
  1. package/Models/DatabaseModels/CephCluster.ts +14 -0
  2. package/Models/DatabaseModels/CodeRepository.ts +14 -6
  3. package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +14 -0
  4. package/Models/DatabaseModels/DockerHost.ts +14 -0
  5. package/Models/DatabaseModels/GlobalOidcProject.ts +18 -0
  6. package/Models/DatabaseModels/GlobalSsoProject.ts +18 -0
  7. package/Models/DatabaseModels/Index.ts +2 -0
  8. package/Models/DatabaseModels/IoTFleet.ts +14 -0
  9. package/Models/DatabaseModels/KubernetesCluster.ts +14 -0
  10. package/Models/DatabaseModels/LogDropFilter.ts +9 -20
  11. package/Models/DatabaseModels/NetworkDevice.ts +14 -0
  12. package/Models/DatabaseModels/NetworkInterface.ts +18 -0
  13. package/Models/DatabaseModels/Project.ts +16 -2
  14. package/Models/DatabaseModels/ProxmoxCluster.ts +14 -0
  15. package/Models/DatabaseModels/Service.ts +30 -0
  16. package/Models/DatabaseModels/StatusPageMonitorRule.ts +911 -0
  17. package/Models/DatabaseModels/StatusPagePrivateUser.ts +30 -0
  18. package/Models/DatabaseModels/StatusPageResource.ts +73 -0
  19. package/Models/DatabaseModels/TraceDropFilter.ts +9 -20
  20. package/Models/DatabaseModels/User.ts +30 -0
  21. package/Server/API/AIAgentDataAPI.ts +31 -0
  22. package/Server/API/BaseAPI.ts +13 -2
  23. package/Server/API/DashboardAPI.ts +458 -12
  24. package/Server/API/GitHubAPI.ts +119 -283
  25. package/Server/API/UserAPI.ts +263 -1
  26. package/Server/EnvironmentConfig.ts +38 -4
  27. package/Server/Infrastructure/GlobalCache.ts +152 -0
  28. package/Server/Infrastructure/Postgres/DataSourceOptions.ts +16 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1786005052769-AddStatusPageMonitorRule.ts +123 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.ts +21 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.ts +68 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.ts +100 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.ts +214 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.ts +69 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
  36. package/Server/Services/AlertStateTimelineService.ts +20 -0
  37. package/Server/Services/AnalyticsDatabaseService.ts +72 -1
  38. package/Server/Services/CephClusterService.ts +26 -86
  39. package/Server/Services/CloudResourceService.ts +23 -83
  40. package/Server/Services/CodeRepositoryService.ts +105 -2
  41. package/Server/Services/DatabaseService.ts +296 -2
  42. package/Server/Services/DockerHostService.ts +19 -79
  43. package/Server/Services/DockerSwarmClusterService.ts +27 -88
  44. package/Server/Services/HostService.ts +46 -99
  45. package/Server/Services/IncidentStateTimelineService.ts +20 -0
  46. package/Server/Services/Index.ts +2 -0
  47. package/Server/Services/IoTFleetService.ts +19 -79
  48. package/Server/Services/KubernetesClusterService.ts +17 -78
  49. package/Server/Services/LabelService.ts +57 -10
  50. package/Server/Services/MetricTypeService.ts +84 -0
  51. package/Server/Services/MonitorService.ts +89 -14
  52. package/Server/Services/MonitorStatusTimelineService.ts +29 -0
  53. package/Server/Services/MonitorTemplateService.ts +65 -0
  54. package/Server/Services/OpenTelemetryIngestService.ts +230 -26
  55. package/Server/Services/PodmanHostService.ts +19 -79
  56. package/Server/Services/ProxmoxClusterService.ts +23 -83
  57. package/Server/Services/RumApplicationService.ts +19 -80
  58. package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +21 -0
  59. package/Server/Services/ServerlessFunctionService.ts +24 -85
  60. package/Server/Services/ServiceService.ts +299 -73
  61. package/Server/Services/StatusPageMonitorRuleEngineService.ts +752 -0
  62. package/Server/Services/StatusPageMonitorRuleService.ts +471 -0
  63. package/Server/Services/TelemetryEntityRelationshipService.ts +1 -0
  64. package/Server/Services/TelemetryEntityService.ts +1 -0
  65. package/Server/Services/UserService.ts +184 -0
  66. package/Server/Utils/AI/Toolbox/CodeTools.ts +45 -4
  67. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +13 -0
  68. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +157 -4
  69. package/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.ts +130 -0
  70. package/Server/Utils/Database/ProjectScopedReferenceValidator.ts +170 -39
  71. package/Server/Utils/Monitor/MonitorResource.ts +63 -36
  72. package/Server/Utils/Monitor/MonitorStatusTimeline.ts +36 -0
  73. package/Server/Utils/Monitor/MonitorStepsProjectValidator.ts +148 -127
  74. package/Server/Utils/Monitor/MonitorStepsReferenceExtractor.ts +434 -0
  75. package/Server/Utils/PasswordHash.ts +306 -0
  76. package/Server/Utils/SingleFlight.ts +83 -0
  77. package/Server/Utils/StatusPage/MonitorRulePatternValidator.ts +46 -0
  78. package/Server/Utils/Telemetry/EntityRegistry.ts +107 -26
  79. package/Server/Utils/Telemetry/ResourceHeartbeat.ts +314 -0
  80. package/Server/Utils/Telemetry/Telemetry.ts +351 -122
  81. package/Tests/App/Dashboard/OverviewCustomFields.test.tsx +333 -0
  82. package/Tests/App/Dashboard/UserCustomFields.test.tsx +392 -0
  83. package/Tests/App/Dashboard/WidgetCatalog.test.ts +2 -0
  84. package/Tests/Models/DatabaseModels/ColumnTransformerInvariants.test.ts +306 -0
  85. package/Tests/Models/DatabaseModels/NumberColumnDeserialization.test.ts +333 -0
  86. package/Tests/Models/DatabaseModels/StatusPageMonitorRuleModel.test.ts +190 -0
  87. package/Tests/Server/API/AIAgentDataRepositoryToken.test.ts +381 -0
  88. package/Tests/Server/API/DashboardPublicAttributeValuesAPI.test.ts +943 -0
  89. package/Tests/Server/API/DashboardPublicMetricsAggregateAPI.test.ts +1296 -0
  90. package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +26 -0
  91. package/Tests/Server/API/DashboardPublicTemplatePayloads.test.ts +598 -0
  92. package/Tests/Server/API/GitHubAppInstallationBindingAPI.test.ts +539 -0
  93. package/Tests/Server/API/Helpers.ts +6 -1
  94. package/Tests/Server/API/UserProjectsAPI.test.ts +852 -0
  95. package/Tests/Server/Infrastructure/GlobalCache.test.ts +354 -0
  96. package/Tests/Server/Infrastructure/PostgresLockTimeoutOptions.test.ts +181 -0
  97. package/Tests/Server/Infrastructure/SemaphoreMutex.test.ts +215 -0
  98. package/Tests/Server/Services/AddPerUserPasswordSaltMigration.test.ts +178 -0
  99. package/Tests/Server/Services/AnalyticsDatabasePaginationStability.test.ts +582 -0
  100. package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +5 -0
  101. package/Tests/Server/Services/CodeRepositoryInstallationBinding.test.ts +305 -0
  102. package/Tests/Server/Services/CodeRepositoryResolutionBinding.test.ts +147 -0
  103. package/Tests/Server/Services/DatabaseServicePerUserPasswordSalt.test.ts +870 -0
  104. package/Tests/Server/Services/DatabaseServiceUpdateColumnsIfUnlocked.test.ts +342 -0
  105. package/Tests/Server/Services/DropFilterSaveValidation.test.ts +245 -0
  106. package/Tests/Server/Services/HostServiceUpdateLastSeen.test.ts +163 -15
  107. package/Tests/Server/Services/MetricTypeAttachServices.test.ts +222 -0
  108. package/Tests/Server/Services/MissingReferenceWriteGuard.test.ts +614 -0
  109. package/Tests/Server/Services/MonitorStatusTimelineFastPath.test.ts +23 -0
  110. package/Tests/Server/Services/OpenTelemetryServiceResolutionCache.test.ts +568 -0
  111. package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +305 -56
  112. package/Tests/Server/Services/RestoreDroppedUniqueIndexesMigration.test.ts +386 -0
  113. package/Tests/Server/Services/RestoreServiceLowerNameIndexMigration.test.ts +240 -0
  114. package/Tests/Server/Services/ServiceUpdateLastSeenSplitGates.test.ts +705 -0
  115. package/Tests/Server/Services/StatusPageMonitorRuleEngineService.test.ts +1719 -0
  116. package/Tests/Server/Services/StatusPageMonitorRuleHooks.test.ts +1212 -0
  117. package/Tests/Server/Services/StatusPageMonitorRuleMonitorCreateHook.test.ts +228 -0
  118. package/Tests/Server/Services/UserServiceFirstMasterAdminElection.test.ts +885 -0
  119. package/Tests/Server/Services/WidenHashedStringColumnsForScryptMigration.test.ts +220 -0
  120. package/Tests/Server/Utils/AI/CodeTools.test.ts +47 -1
  121. package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +10 -0
  122. package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +267 -0
  123. package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +120 -0
  124. package/Tests/Server/Utils/CodeRepository/GitHubInstallationBinding.test.ts +292 -0
  125. package/Tests/Server/Utils/Database/ProjectScopedReferenceValidator.test.ts +260 -13
  126. package/Tests/Server/Utils/EntityRegistryRowFence.test.ts +302 -0
  127. package/Tests/Server/Utils/GitHubInstallationOwnershipVerification.test.ts +340 -0
  128. package/Tests/Server/Utils/GitHubWebhookAndTreeCacheIsolation.test.ts +250 -0
  129. package/Tests/Server/Utils/MetricTypeIndexConvergence.test.ts +598 -0
  130. package/Tests/Server/Utils/Monitor/MonitorStatusTimelineUnusableStatus.test.ts +154 -0
  131. package/Tests/Server/Utils/Monitor/MonitorStepsProjectValidator.test.ts +638 -92
  132. package/Tests/Server/Utils/Monitor/MonitorStepsReferenceExtractor.test.ts +724 -0
  133. package/Tests/Server/Utils/PasswordHash.test.ts +555 -0
  134. package/Tests/Server/Utils/SingleFlight.test.ts +221 -0
  135. package/Tests/Types/Dashboard/NetworkDashboardTemplate.test.ts +793 -0
  136. package/Tests/Types/Database/BigIntColumnTransformer.test.ts +147 -0
  137. package/Tests/Types/Database/ColumnLength.test.ts +7 -1
  138. package/Tests/Types/Database/DatabasePropertyTransformer.test.ts +140 -0
  139. package/Tests/Types/Database/NumericColumnValue.test.ts +127 -0
  140. package/Tests/Types/Decimal.test.ts +37 -0
  141. package/Tests/Types/HashedStringPerUserSalt.test.ts +476 -0
  142. package/Tests/Types/Monitor/DockerAlertTemplates.test.ts +293 -0
  143. package/Tests/Types/Monitor/HostAlertTemplates.test.ts +249 -0
  144. package/Tests/Types/Monitor/IotAlertTemplates.test.ts +320 -0
  145. package/Tests/Types/Monitor/PodmanAlertTemplates.test.ts +271 -0
  146. package/Tests/Types/Monitor/SnmpVersionParsing.test.ts +152 -0
  147. package/Tests/Types/Port.test.ts +38 -0
  148. package/Tests/UI/Components/CustomFields/CustomFieldsDetail.test.tsx +696 -0
  149. package/Tests/UI/Components/LogsHistogram.test.tsx +276 -0
  150. package/Tests/UI/Components/UseLiveLogsRefresh.test.tsx +489 -0
  151. package/Tests/UI/Components/UseLogsHistogram.test.tsx +500 -0
  152. package/Tests/UI/Utils/UserProjectsModelAPI.test.ts +714 -0
  153. package/Tests/Utils/Dashboard/Components/DashboardComponentsUtil.test.ts +120 -0
  154. package/Tests/Utils/Dashboard/DashboardNetworkMapComponent.test.ts +327 -0
  155. package/Tests/Utils/TeamMembersByProject.test.ts +655 -0
  156. package/Types/Dashboard/DashboardComponentType.ts +1 -0
  157. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
  158. package/Types/Dashboard/DashboardComponents/DashboardNetworkMapComponent.ts +40 -0
  159. package/Types/Dashboard/DashboardTemplates.ts +397 -0
  160. package/Types/Database/BigIntColumnTransformer.ts +74 -0
  161. package/Types/Database/ColumnLength.ts +9 -1
  162. package/Types/Database/DatabaseProperty.ts +26 -0
  163. package/Types/Database/NumericColumnValue.ts +128 -0
  164. package/Types/Database/TableColumn.ts +11 -0
  165. package/Types/Database/UnsynchronizedIndex.ts +48 -0
  166. package/Types/Decimal.ts +16 -4
  167. package/Types/HashedString.ts +139 -4
  168. package/Types/Permission.ts +48 -0
  169. package/Types/Port.ts +16 -4
  170. package/UI/Components/CustomFields/CustomFieldsDetail.tsx +85 -11
  171. package/UI/Components/LogsViewer/useLiveLogsRefresh.ts +86 -0
  172. package/UI/Components/LogsViewer/useLogsHistogram.ts +113 -0
  173. package/UI/Components/Navbar/NavBar.tsx +12 -2
  174. package/UI/Components/Navbar/NavBarMenuModal.tsx +19 -7
  175. package/UI/Utils/ModelAPI/UserProjectsModelAPI.ts +257 -0
  176. package/Utils/Dashboard/Components/DashboardNetworkMapComponent.ts +136 -0
  177. package/Utils/Dashboard/Components/Index.ts +7 -0
  178. package/Utils/TeamMembersByProject.ts +237 -0
  179. package/build/dist/Models/DatabaseModels/CephCluster.js +16 -1
  180. package/build/dist/Models/DatabaseModels/CephCluster.js.map +1 -1
  181. package/build/dist/Models/DatabaseModels/CodeRepository.js +14 -6
  182. package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
  183. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +12 -0
  184. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
  185. package/build/dist/Models/DatabaseModels/DockerHost.js +16 -1
  186. package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -1
  187. package/build/dist/Models/DatabaseModels/GlobalOidcProject.js +16 -1
  188. package/build/dist/Models/DatabaseModels/GlobalOidcProject.js.map +1 -1
  189. package/build/dist/Models/DatabaseModels/GlobalSsoProject.js +16 -1
  190. package/build/dist/Models/DatabaseModels/GlobalSsoProject.js.map +1 -1
  191. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  192. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  193. package/build/dist/Models/DatabaseModels/IoTFleet.js +16 -1
  194. package/build/dist/Models/DatabaseModels/IoTFleet.js.map +1 -1
  195. package/build/dist/Models/DatabaseModels/KubernetesCluster.js +16 -1
  196. package/build/dist/Models/DatabaseModels/KubernetesCluster.js.map +1 -1
  197. package/build/dist/Models/DatabaseModels/LogDropFilter.js +9 -20
  198. package/build/dist/Models/DatabaseModels/LogDropFilter.js.map +1 -1
  199. package/build/dist/Models/DatabaseModels/NetworkDevice.js +16 -1
  200. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  201. package/build/dist/Models/DatabaseModels/NetworkInterface.js +16 -1
  202. package/build/dist/Models/DatabaseModels/NetworkInterface.js.map +1 -1
  203. package/build/dist/Models/DatabaseModels/Project.js +16 -2
  204. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  205. package/build/dist/Models/DatabaseModels/ProxmoxCluster.js +16 -1
  206. package/build/dist/Models/DatabaseModels/ProxmoxCluster.js.map +1 -1
  207. package/build/dist/Models/DatabaseModels/Service.js +28 -1
  208. package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
  209. package/build/dist/Models/DatabaseModels/StatusPageMonitorRule.js +925 -0
  210. package/build/dist/Models/DatabaseModels/StatusPageMonitorRule.js.map +1 -0
  211. package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js +32 -0
  212. package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js.map +1 -1
  213. package/build/dist/Models/DatabaseModels/StatusPageResource.js +72 -0
  214. package/build/dist/Models/DatabaseModels/StatusPageResource.js.map +1 -1
  215. package/build/dist/Models/DatabaseModels/TraceDropFilter.js +9 -20
  216. package/build/dist/Models/DatabaseModels/TraceDropFilter.js.map +1 -1
  217. package/build/dist/Models/DatabaseModels/User.js +32 -0
  218. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  219. package/build/dist/Server/API/AIAgentDataAPI.js +21 -2
  220. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  221. package/build/dist/Server/API/BaseAPI.js +11 -1
  222. package/build/dist/Server/API/BaseAPI.js.map +1 -1
  223. package/build/dist/Server/API/DashboardAPI.js +343 -10
  224. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  225. package/build/dist/Server/API/GitHubAPI.js +94 -167
  226. package/build/dist/Server/API/GitHubAPI.js.map +1 -1
  227. package/build/dist/Server/API/UserAPI.js +187 -2
  228. package/build/dist/Server/API/UserAPI.js.map +1 -1
  229. package/build/dist/Server/EnvironmentConfig.js +34 -4
  230. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  231. package/build/dist/Server/Infrastructure/GlobalCache.js +120 -0
  232. package/build/dist/Server/Infrastructure/GlobalCache.js.map +1 -1
  233. package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js +5 -3
  234. package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js.map +1 -1
  235. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786005052769-AddStatusPageMonitorRule.js +48 -0
  236. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786005052769-AddStatusPageMonitorRule.js.map +1 -0
  237. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.js +14 -0
  238. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.js.map +1 -0
  239. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.js +59 -0
  240. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.js.map +1 -0
  241. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.js +93 -0
  242. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.js.map +1 -0
  243. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.js +101 -0
  244. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.js.map +1 -0
  245. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.js +66 -0
  246. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786300000000-QuarantineUnboundGitHubInstallations.js.map +1 -0
  247. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
  248. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  249. package/build/dist/Server/Services/AlertStateTimelineService.js +19 -0
  250. package/build/dist/Server/Services/AlertStateTimelineService.js.map +1 -1
  251. package/build/dist/Server/Services/AnalyticsDatabaseService.js +57 -1
  252. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  253. package/build/dist/Server/Services/CephClusterService.js +26 -76
  254. package/build/dist/Server/Services/CephClusterService.js.map +1 -1
  255. package/build/dist/Server/Services/CloudResourceService.js +23 -73
  256. package/build/dist/Server/Services/CloudResourceService.js.map +1 -1
  257. package/build/dist/Server/Services/CodeRepositoryService.js +90 -2
  258. package/build/dist/Server/Services/CodeRepositoryService.js.map +1 -1
  259. package/build/dist/Server/Services/DatabaseService.js +246 -2
  260. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  261. package/build/dist/Server/Services/DockerHostService.js +19 -69
  262. package/build/dist/Server/Services/DockerHostService.js.map +1 -1
  263. package/build/dist/Server/Services/DockerSwarmClusterService.js +27 -78
  264. package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -1
  265. package/build/dist/Server/Services/HostService.js +58 -102
  266. package/build/dist/Server/Services/HostService.js.map +1 -1
  267. package/build/dist/Server/Services/IncidentStateTimelineService.js +19 -0
  268. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  269. package/build/dist/Server/Services/Index.js +2 -0
  270. package/build/dist/Server/Services/Index.js.map +1 -1
  271. package/build/dist/Server/Services/IoTFleetService.js +19 -69
  272. package/build/dist/Server/Services/IoTFleetService.js.map +1 -1
  273. package/build/dist/Server/Services/KubernetesClusterService.js +17 -68
  274. package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
  275. package/build/dist/Server/Services/LabelService.js +42 -7
  276. package/build/dist/Server/Services/LabelService.js.map +1 -1
  277. package/build/dist/Server/Services/MetricTypeService.js +74 -0
  278. package/build/dist/Server/Services/MetricTypeService.js.map +1 -1
  279. package/build/dist/Server/Services/MonitorService.js +81 -9
  280. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  281. package/build/dist/Server/Services/MonitorStatusTimelineService.js +28 -0
  282. package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
  283. package/build/dist/Server/Services/MonitorTemplateService.js +60 -0
  284. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  285. package/build/dist/Server/Services/OpenTelemetryIngestService.js +155 -25
  286. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  287. package/build/dist/Server/Services/PodmanHostService.js +19 -69
  288. package/build/dist/Server/Services/PodmanHostService.js.map +1 -1
  289. package/build/dist/Server/Services/ProxmoxClusterService.js +23 -73
  290. package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -1
  291. package/build/dist/Server/Services/RumApplicationService.js +19 -70
  292. package/build/dist/Server/Services/RumApplicationService.js.map +1 -1
  293. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +20 -0
  294. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
  295. package/build/dist/Server/Services/ServerlessFunctionService.js +24 -75
  296. package/build/dist/Server/Services/ServerlessFunctionService.js.map +1 -1
  297. package/build/dist/Server/Services/ServiceService.js +236 -61
  298. package/build/dist/Server/Services/ServiceService.js.map +1 -1
  299. package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js +603 -0
  300. package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js.map +1 -0
  301. package/build/dist/Server/Services/StatusPageMonitorRuleService.js +401 -0
  302. package/build/dist/Server/Services/StatusPageMonitorRuleService.js.map +1 -0
  303. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js +1 -0
  304. package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +1 -1
  305. package/build/dist/Server/Services/TelemetryEntityService.js +1 -0
  306. package/build/dist/Server/Services/TelemetryEntityService.js.map +1 -1
  307. package/build/dist/Server/Services/UserService.js +165 -0
  308. package/build/dist/Server/Services/UserService.js.map +1 -1
  309. package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js +31 -1
  310. package/build/dist/Server/Utils/AI/Toolbox/CodeTools.js.map +1 -1
  311. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +13 -0
  312. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  313. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +126 -4
  314. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  315. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.js +136 -0
  316. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubInstallationBinding.js.map +1 -0
  317. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js +105 -29
  318. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js.map +1 -1
  319. package/build/dist/Server/Utils/Monitor/MonitorResource.js +56 -32
  320. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  321. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js +30 -3
  322. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js.map +1 -1
  323. package/build/dist/Server/Utils/Monitor/MonitorStepsProjectValidator.js +110 -98
  324. package/build/dist/Server/Utils/Monitor/MonitorStepsProjectValidator.js.map +1 -1
  325. package/build/dist/Server/Utils/Monitor/MonitorStepsReferenceExtractor.js +312 -0
  326. package/build/dist/Server/Utils/Monitor/MonitorStepsReferenceExtractor.js.map +1 -0
  327. package/build/dist/Server/Utils/PasswordHash.js +237 -0
  328. package/build/dist/Server/Utils/PasswordHash.js.map +1 -0
  329. package/build/dist/Server/Utils/SingleFlight.js +76 -0
  330. package/build/dist/Server/Utils/SingleFlight.js.map +1 -0
  331. package/build/dist/Server/Utils/StatusPage/MonitorRulePatternValidator.js +29 -0
  332. package/build/dist/Server/Utils/StatusPage/MonitorRulePatternValidator.js.map +1 -0
  333. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +78 -19
  334. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
  335. package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js +160 -0
  336. package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js.map +1 -0
  337. package/build/dist/Server/Utils/Telemetry/Telemetry.js +279 -104
  338. package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
  339. package/build/dist/Types/Dashboard/DashboardComponentType.js +1 -0
  340. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  341. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
  342. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  343. package/build/dist/Types/Dashboard/DashboardComponents/DashboardNetworkMapComponent.js +2 -0
  344. package/build/dist/Types/Dashboard/DashboardComponents/DashboardNetworkMapComponent.js.map +1 -0
  345. package/build/dist/Types/Dashboard/DashboardTemplates.js +368 -0
  346. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  347. package/build/dist/Types/Database/BigIntColumnTransformer.js +66 -0
  348. package/build/dist/Types/Database/BigIntColumnTransformer.js.map +1 -0
  349. package/build/dist/Types/Database/ColumnLength.js +9 -1
  350. package/build/dist/Types/Database/ColumnLength.js.map +1 -1
  351. package/build/dist/Types/Database/DatabaseProperty.js +25 -0
  352. package/build/dist/Types/Database/DatabaseProperty.js.map +1 -1
  353. package/build/dist/Types/Database/NumericColumnValue.js +97 -0
  354. package/build/dist/Types/Database/NumericColumnValue.js.map +1 -0
  355. package/build/dist/Types/Database/TableColumn.js.map +1 -1
  356. package/build/dist/Types/Database/UnsynchronizedIndex.js +46 -0
  357. package/build/dist/Types/Database/UnsynchronizedIndex.js.map +1 -0
  358. package/build/dist/Types/Decimal.js +14 -3
  359. package/build/dist/Types/Decimal.js.map +1 -1
  360. package/build/dist/Types/HashedString.js +95 -5
  361. package/build/dist/Types/HashedString.js.map +1 -1
  362. package/build/dist/Types/Permission.js +42 -0
  363. package/build/dist/Types/Permission.js.map +1 -1
  364. package/build/dist/Types/Port.js +15 -5
  365. package/build/dist/Types/Port.js.map +1 -1
  366. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +51 -10
  367. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
  368. package/build/dist/UI/Components/LogsViewer/useLiveLogsRefresh.js +44 -0
  369. package/build/dist/UI/Components/LogsViewer/useLiveLogsRefresh.js.map +1 -0
  370. package/build/dist/UI/Components/LogsViewer/useLogsHistogram.js +75 -0
  371. package/build/dist/UI/Components/LogsViewer/useLogsHistogram.js.map +1 -0
  372. package/build/dist/UI/Components/Navbar/NavBar.js +3 -1
  373. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  374. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +19 -7
  375. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
  376. package/build/dist/UI/Utils/ModelAPI/UserProjectsModelAPI.js +156 -0
  377. package/build/dist/UI/Utils/ModelAPI/UserProjectsModelAPI.js.map +1 -0
  378. package/build/dist/Utils/Dashboard/Components/DashboardNetworkMapComponent.js +114 -0
  379. package/build/dist/Utils/Dashboard/Components/DashboardNetworkMapComponent.js.map +1 -0
  380. package/build/dist/Utils/Dashboard/Components/Index.js +4 -0
  381. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  382. package/build/dist/Utils/TeamMembersByProject.js +145 -0
  383. package/build/dist/Utils/TeamMembersByProject.js.map +1 -0
  384. package/package.json +1 -1
@@ -102,12 +102,38 @@ export const MaxPostgresConnections = parseInt(process.env["DATABASE_MAX_OPEN_CO
102
102
  * connection forever and starve the pool.
103
103
  */
104
104
  export const PostgresStatementTimeoutMs = parseInt(process.env["DATABASE_STATEMENT_TIMEOUT_MS"] || "30000", 10);
105
+ /*
106
+ * Postgres-side lock timeout (ms). Caps how long a statement will WAIT for a
107
+ * row/table lock before giving up — distinct from statement_timeout, which
108
+ * caps total execution.
109
+ *
110
+ * Without it, contention on a hot row degrades into a strictly-ordered queue:
111
+ * every waiter pins a backend for the sum of everyone ahead of it. That is the
112
+ * row-lock convoy that took production down — 892 connections parked on locks,
113
+ * the tail waiting 3.7 hours — and no amount of database capacity changes it,
114
+ * because the queue itself is the failure. A short lock_timeout converts an
115
+ * unbounded wait into a fast, retryable error.
116
+ *
117
+ * Must stay well below statement_timeout so a lock wait surfaces as
118
+ * `lock_not_available` (55P03) rather than a generic statement timeout — the
119
+ * two want very different handling.
120
+ */
121
+ export const PostgresLockTimeoutMs = parseInt(process.env["DATABASE_LOCK_TIMEOUT_MS"] || "3000", 10);
105
122
  /*
106
123
  * Node-postgres client-side query timeout (ms). Belt-and-braces for the
107
124
  * server-side statement_timeout — fires even if the connection has gone
108
125
  * silent or the server-side timeout doesn't kick in.
126
+ *
127
+ * Deliberately LONGER than statement_timeout. These two used to be equal, and
128
+ * because the client timer starts before the packet even reaches the backend,
129
+ * the client always won by a round trip — so the app never observed Postgres's
130
+ * real SQLSTATE and, worse, the client-side timeout only ABANDONS the query:
131
+ * the backend keeps running and keeps its place in the lock queue. Letting the
132
+ * server win means contention is cancelled server-side instead of accumulating
133
+ * invisibly behind a pooler.
109
134
  */
110
- export const PostgresQueryTimeoutMs = parseInt(process.env["DATABASE_QUERY_TIMEOUT_MS"] || "30000", 10);
135
+ export const PostgresQueryTimeoutMs = parseInt(process.env["DATABASE_QUERY_TIMEOUT_MS"] ||
136
+ String(PostgresStatementTimeoutMs + 5000), 10);
111
137
  /*
112
138
  * Postgres-side idle-in-transaction timeout (ms). Kills connections that
113
139
  * are stuck holding row locks inside a BEGIN without committing.
@@ -253,10 +279,14 @@ export const DisableQueueWorkers = process.env["DISABLE_QUEUE_WORKERS"] === "tru
253
279
  * When "false", this process does NOT run schema or data migrations on boot.
254
280
  * Set on runtime pods (app/worker/nginx) when a dedicated one-shot migrate Job
255
281
  * (App/Migrate.ts) owns migrations instead, so the fleet's many replicas never
256
- * run them — which is what makes PgBouncer transaction-mode pooling safe (the
257
- * data-migration session advisory lock then only ever runs in the single Job).
282
+ * run them — which keeps boot DDL off pooled connections and, since the data
283
+ * migration runner no longer takes an advisory lock, is also what keeps two
284
+ * replicas from running the same migration concurrently.
285
+ *
258
286
  * Default true preserves the original self-migrating-on-boot behavior used by
259
- * docker-compose and any deploy that does not run the migrate Job.
287
+ * docker-compose and any deploy that does not run the migrate Job. Those
288
+ * deployments DO run several unserialized runners, so data migrations must be
289
+ * written to tolerate it (see Workers/Utils/DataMigration.ts).
260
290
  */
261
291
  export const RunDatabaseMigrationsOnBoot = process.env["RUN_DATABASE_MIGRATIONS_ON_BOOT"] !== "false";
262
292
  export const ClickhouseHost = Hostname.fromString(process.env["CLICKHOUSE_HOST"] || "clickhouse");
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentConfig.js","sourceRoot":"","sources":["../../../Server/EnvironmentConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnvironmentConfig.js","sourceRoot":"","sources":["../../../Server/EnvironmentConfig.ts"],"names":[],"mappings":"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"}
@@ -101,6 +101,108 @@ export default class GlobalCache {
101
101
  */
102
102
  await client.set(`${namespace}-${key}`, value, "EX", expiresInSeconds);
103
103
  }
104
+ /*
105
+ * Atomic acquire-once fence: SET ... EX ... NX. Returns true ONLY for the
106
+ * caller that created the key; every concurrent caller gets false until it
107
+ * expires.
108
+ *
109
+ * This exists because `getString()` followed by `setString()` is a
110
+ * check-then-act race, and at ingest concurrency that race is not
111
+ * theoretical — it is the whole problem. When N workers resolve the same
112
+ * row in the same instant they ALL read a miss and they ALL proceed, so a
113
+ * fence meant to admit one writer per window admits N. With 100 worker pods
114
+ * that turned a once-a-minute heartbeat into thousands of simultaneous
115
+ * UPDATEs against the same handful of rows, and the resulting row-lock
116
+ * convoy starved the Postgres connection pool (some statements queued for
117
+ * hours). Redis evaluates SET NX atomically, so exactly one caller wins no
118
+ * matter how many arrive together.
119
+ *
120
+ * Fence keys should carry the TTL jitter from `withJitter()` — see there for
121
+ * why synchronized expiry re-creates the herd this is meant to prevent.
122
+ */
123
+ static async setStringIfNotExists(namespace, key, value, options) {
124
+ var _a;
125
+ const client = Redis.getClient();
126
+ if (!client || !Redis.isConnected()) {
127
+ throw new DatabaseNotConnectedException("Cache is not connected");
128
+ }
129
+ const expiresInSeconds = (_a = options === null || options === void 0 ? void 0 : options.expiresInSeconds) !== null && _a !== void 0 ? _a : OneUptimeDate.getSecondsInDays(30);
130
+ const result = await client.set(`${namespace}-${key}`, value, "EX", expiresInSeconds, "NX");
131
+ /*
132
+ * ioredis resolves to "OK" when the key was created and to null when it
133
+ * already existed. Anything else (a driver/protocol change) is treated as
134
+ * "did not acquire" — losing the fence is safe, winning it wrongly is not.
135
+ */
136
+ return result === "OK";
137
+ }
138
+ /*
139
+ * Atomic compare-and-claim: claim the window unless the key ALREADY holds
140
+ * `value`. Returns true only for the caller that claimed it.
141
+ *
142
+ * `setStringIfNotExists` is the right primitive for a presence fence and the
143
+ * wrong one for a fingerprint throttle. Plain NX fails whenever the key
144
+ * exists — including when it holds a STALE fingerprint — so a genuinely
145
+ * changed payload (a new service.version after a deploy, a changed host IP)
146
+ * would be suppressed for the whole window and nobody would persist it. This
147
+ * keeps the bust-on-change behaviour that callers depend on while collapsing
148
+ * the GET-then-SET race into one atomic evaluation.
149
+ *
150
+ * The key is passed as KEYS[1] rather than inlined into the script body so
151
+ * the script stays correct on Redis Cluster, which routes by declared keys.
152
+ */
153
+ static async setStringIfChanged(namespace, key, value, options) {
154
+ var _a;
155
+ const client = Redis.getClient();
156
+ if (!client || !Redis.isConnected()) {
157
+ throw new DatabaseNotConnectedException("Cache is not connected");
158
+ }
159
+ const expiresInSeconds = (_a = options === null || options === void 0 ? void 0 : options.expiresInSeconds) !== null && _a !== void 0 ? _a : OneUptimeDate.getSecondsInDays(30);
160
+ const result = await client.eval("if redis.call('GET', KEYS[1]) == ARGV[1] then return 0 " +
161
+ "else redis.call('SET', KEYS[1], ARGV[1], 'EX', ARGV[2]) return 1 end", 1, `${namespace}-${key}`, value, String(expiresInSeconds));
162
+ return result === 1;
163
+ }
164
+ /*
165
+ * Spread a fence TTL over [ttl, ttl + 25%].
166
+ *
167
+ * A fixed TTL makes every fence for a fleet of rows expire in lockstep once
168
+ * their writes have been aligned by a common event — a deploy, a worker
169
+ * scale-up, a Redis restart. The window then reopens for thousands of rows
170
+ * in the same second and the herd re-forms on a one-minute period. Jitter
171
+ * breaks that alignment permanently: the fences drift apart after the first
172
+ * window and stay apart.
173
+ *
174
+ * The upper bound stays well inside the 15-minute disconnection sweep, so a
175
+ * jittered heartbeat can never make a live resource look disconnected.
176
+ */
177
+ static withJitter(expiresInSeconds) {
178
+ if (expiresInSeconds <= 0) {
179
+ return expiresInSeconds;
180
+ }
181
+ return Math.ceil(expiresInSeconds * (1 + Math.random() * 0.25));
182
+ }
183
+ /*
184
+ * Atomic compare-and-delete: drop the key only if it still holds `value`.
185
+ * Returns true only when this caller's value was the one removed.
186
+ *
187
+ * This is the release half of a lease taken with `setStringIfNotExists`, and
188
+ * the comparison is what makes the release safe. A plain `deleteKey` is a
189
+ * check-then-act race in disguise: if the holder overruns its TTL the key
190
+ * expires, a second worker legitimately acquires the lease, and the first
191
+ * worker's release then deletes the SECOND worker's lease — handing the same
192
+ * lease to a third. Comparing the holder token collapses that into one
193
+ * atomic evaluation, so a late release is a no-op instead of a double-grant.
194
+ *
195
+ * The key is passed as KEYS[1] rather than inlined into the script body so
196
+ * the script stays correct on Redis Cluster, which routes by declared keys.
197
+ */
198
+ static async deleteKeyIfValue(namespace, key, value) {
199
+ const client = Redis.getClient();
200
+ if (!client || !Redis.isConnected()) {
201
+ throw new DatabaseNotConnectedException("Cache is not connected");
202
+ }
203
+ const result = await client.eval("if redis.call('GET', KEYS[1]) == ARGV[1] then return redis.call('DEL', KEYS[1]) else return 0 end", 1, `${namespace}-${key}`, value);
204
+ return result === 1;
205
+ }
104
206
  static async deleteKey(namespace, key) {
105
207
  const client = Redis.getClient();
106
208
  if (!client || !Redis.isConnected()) {
@@ -151,6 +253,24 @@ __decorate([
151
253
  __metadata("design:paramtypes", [String, String, String, Object]),
152
254
  __metadata("design:returntype", Promise)
153
255
  ], GlobalCache, "setString", null);
256
+ __decorate([
257
+ CaptureSpan(),
258
+ __metadata("design:type", Function),
259
+ __metadata("design:paramtypes", [String, String, String, Object]),
260
+ __metadata("design:returntype", Promise)
261
+ ], GlobalCache, "setStringIfNotExists", null);
262
+ __decorate([
263
+ CaptureSpan(),
264
+ __metadata("design:type", Function),
265
+ __metadata("design:paramtypes", [String, String, String, Object]),
266
+ __metadata("design:returntype", Promise)
267
+ ], GlobalCache, "setStringIfChanged", null);
268
+ __decorate([
269
+ CaptureSpan(),
270
+ __metadata("design:type", Function),
271
+ __metadata("design:paramtypes", [String, String, String]),
272
+ __metadata("design:returntype", Promise)
273
+ ], GlobalCache, "deleteKeyIfValue", null);
154
274
  __decorate([
155
275
  CaptureSpan(),
156
276
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalCache.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/GlobalCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GlobalCache.js","sourceRoot":"","sources":["../../../../Server/Infrastructure/GlobalCache.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DatabaseHost, DatabaseName, DatabasePassword, DatabasePort, DatabaseRejectUnauthorized, DatabaseSslCa, DatabaseSslCert, DatabaseSslKey, DatabaseUsername, MaxPostgresConnections, PostgresConnectionAcquireTimeoutMs, PostgresIdleInTransactionTimeoutMs, PostgresIdleSessionTimeoutMs, PostgresIdleTimeoutMs, PostgresKeepAliveInitialDelayMs, PostgresQueryTimeoutMs, PostgresSlowQueryLogThresholdMs, PostgresStatementTimeoutMs, RunDatabaseMigrationsOnBoot, ShouldDatabaseSslEnable, } from "../../../Server/EnvironmentConfig";
1
+ import { DatabaseHost, DatabaseName, DatabasePassword, DatabasePort, DatabaseRejectUnauthorized, DatabaseSslCa, DatabaseSslCert, DatabaseSslKey, DatabaseUsername, MaxPostgresConnections, PostgresConnectionAcquireTimeoutMs, PostgresLockTimeoutMs, PostgresIdleInTransactionTimeoutMs, PostgresIdleSessionTimeoutMs, PostgresIdleTimeoutMs, PostgresKeepAliveInitialDelayMs, PostgresQueryTimeoutMs, PostgresSlowQueryLogThresholdMs, PostgresStatementTimeoutMs, RunDatabaseMigrationsOnBoot, ShouldDatabaseSslEnable, } from "../../../Server/EnvironmentConfig";
2
2
  import Migrations from "./SchemaMigrations/Index";
3
3
  import DatabaseType from "../../../Types/DatabaseType";
4
4
  import Entities from "../../../Models/DatabaseModels/Index";
@@ -31,13 +31,15 @@ const dataSourceOptions = {
31
31
  * and client. Pool sizing + timeouts live here because TypeORM's defaults
32
32
  * (10 connections, no timeouts) are too small for any non-trivial load.
33
33
  */
34
- extra: Object.assign({ max: MaxPostgresConnections, idleTimeoutMillis: PostgresIdleTimeoutMs, connectionTimeoutMillis: PostgresConnectionAcquireTimeoutMs, statement_timeout: PostgresStatementTimeoutMs, query_timeout: PostgresQueryTimeoutMs, idle_in_transaction_session_timeout: PostgresIdleInTransactionTimeoutMs,
34
+ extra: Object.assign(Object.assign(Object.assign({ max: MaxPostgresConnections, idleTimeoutMillis: PostgresIdleTimeoutMs, connectionTimeoutMillis: PostgresConnectionAcquireTimeoutMs, statement_timeout: PostgresStatementTimeoutMs, query_timeout: PostgresQueryTimeoutMs, idle_in_transaction_session_timeout: PostgresIdleInTransactionTimeoutMs }, (PostgresLockTimeoutMs > 0 && !RunDatabaseMigrationsOnBoot
35
+ ? { lock_timeout: PostgresLockTimeoutMs }
36
+ : {})), {
35
37
  /*
36
38
  * Detect dead TCP peers (ungraceful client exit / network partition) so
37
39
  * orphaned server-side connections get torn down instead of lingering
38
40
  * until the OS keepalive default (~2h).
39
41
  */
40
- keepAlive: true, keepAliveInitialDelayMillis: PostgresKeepAliveInitialDelayMs }, (PostgresIdleSessionTimeoutMs > 0
42
+ keepAlive: true, keepAliveInitialDelayMillis: PostgresKeepAliveInitialDelayMs }), (PostgresIdleSessionTimeoutMs > 0
41
43
  ? { options: `-c idle_session_timeout=${PostgresIdleSessionTimeoutMs}` }
42
44
  : {})),
43
45
  /*
@@ -1 +1 @@
1
- {"version":3,"file":"DataSourceOptions.js","sourceRoot":"","sources":["../../../../../Server/Infrastructure/Postgres/DataSourceOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,kCAAkC,EAClC,kCAAkC,EAClC,4BAA4B,EAC5B,qBAAqB,EACrB,+BAA+B,EAC/B,sBAAsB,EACtB,+BAA+B,EAC/B,0BAA0B,EAC1B,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,QAAQ,MAAM,sCAAsC,CAAC;AAG5D,MAAM,iBAAiB,GAAsB;IAC3C,IAAI,EAAE,YAAY,CAAC,QAAQ;IAC3B,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,gBAAgB;IAC1B,QAAQ,EAAE,gBAAgB;IAC1B,QAAQ,EAAE,YAAY;IACtB,mBAAmB,EAAE,YAAY;IACjC,UAAU,EAAE,UAAU;IACtB;;;OAGG;IACH,aAAa,EAAE,2BAA2B;IAC1C,QAAQ,EAAE,QAAQ;IAClB,eAAe,EAAE,WAAW;IAC5B,GAAG,EAAE,uBAAuB;QAC1B,CAAC,CAAC;YACE,kBAAkB,EAAE,0BAA0B;YAC9C,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,cAAc;YACnB,IAAI,EAAE,eAAe;SACtB;QACH,CAAC,CAAC,KAAK;IACT;;;;OAIG;IACH,KAAK,kBACH,GAAG,EAAE,sBAAsB,EAC3B,iBAAiB,EAAE,qBAAqB,EACxC,uBAAuB,EAAE,kCAAkC,EAC3D,iBAAiB,EAAE,0BAA0B,EAC7C,aAAa,EAAE,sBAAsB,EACrC,mCAAmC,EAAE,kCAAkC;QACvE;;;;WAIG;QACH,SAAS,EAAE,IAAI,EACf,2BAA2B,EAAE,+BAA+B,IAQzD,CAAC,4BAA4B,GAAG,CAAC;QAClC,CAAC,CAAC,EAAE,OAAO,EAAE,2BAA2B,4BAA4B,EAAE,EAAE;QACxE,CAAC,CAAC,EAAE,CAAC,CACR;IACD;;;;OAIG;IACH,qBAAqB,EAAE,+BAA+B;IACtD,WAAW,EAAE,KAAK;CACnB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"DataSourceOptions.js","sourceRoot":"","sources":["../../../../../Server/Infrastructure/Postgres/DataSourceOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,kCAAkC,EAClC,qBAAqB,EACrB,kCAAkC,EAClC,4BAA4B,EAC5B,qBAAqB,EACrB,+BAA+B,EAC/B,sBAAsB,EACtB,+BAA+B,EAC/B,0BAA0B,EAC1B,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,QAAQ,MAAM,sCAAsC,CAAC;AAG5D,MAAM,iBAAiB,GAAsB;IAC3C,IAAI,EAAE,YAAY,CAAC,QAAQ;IAC3B,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,gBAAgB;IAC1B,QAAQ,EAAE,gBAAgB;IAC1B,QAAQ,EAAE,YAAY;IACtB,mBAAmB,EAAE,YAAY;IACjC,UAAU,EAAE,UAAU;IACtB;;;OAGG;IACH,aAAa,EAAE,2BAA2B;IAC1C,QAAQ,EAAE,QAAQ;IAClB,eAAe,EAAE,WAAW;IAC5B,GAAG,EAAE,uBAAuB;QAC1B,CAAC,CAAC;YACE,kBAAkB,EAAE,0BAA0B;YAC9C,EAAE,EAAE,aAAa;YACjB,GAAG,EAAE,cAAc;YACnB,IAAI,EAAE,eAAe;SACtB;QACH,CAAC,CAAC,KAAK;IACT;;;;OAIG;IACH,KAAK,8CACH,GAAG,EAAE,sBAAsB,EAC3B,iBAAiB,EAAE,qBAAqB,EACxC,uBAAuB,EAAE,kCAAkC,EAC3D,iBAAiB,EAAE,0BAA0B,EAC7C,aAAa,EAAE,sBAAsB,EACrC,mCAAmC,EAAE,kCAAkC,IAapE,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,2BAA2B;QAC3D,CAAC,CAAC,EAAE,YAAY,EAAE,qBAAqB,EAAE;QACzC,CAAC,CAAC,EAAE,CAAC;QACP;;;;WAIG;QACH,SAAS,EAAE,IAAI,EACf,2BAA2B,EAAE,+BAA+B,KAQzD,CAAC,4BAA4B,GAAG,CAAC;QAClC,CAAC,CAAC,EAAE,OAAO,EAAE,2BAA2B,4BAA4B,EAAE,EAAE;QACxE,CAAC,CAAC,EAAE,CAAC,CACR;IACD;;;;OAIG;IACH,qBAAqB,EAAE,+BAA+B;IACtD,WAAW,EAAE,KAAK;CACnB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,48 @@
1
+ export class AddStatusPageMonitorRule1786005052769 {
2
+ constructor() {
3
+ this.name = "AddStatusPageMonitorRule1786005052769";
4
+ }
5
+ async up(queryRunner) {
6
+ await queryRunner.query(`CREATE TABLE "StatusPageMonitorRule" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "statusPageId" uuid NOT NULL, "name" character varying(100) NOT NULL, "description" character varying(500), "isEnabled" boolean NOT NULL DEFAULT true, "monitorNamePattern" character varying(500), "monitorDescriptionPattern" character varying(500), "statusPageGroupId" uuid, "showCurrentStatus" boolean NOT NULL DEFAULT true, "showUptimePercent" boolean NOT NULL DEFAULT true, "uptimePercentPrecision" character varying, "showStatusHistoryChart" boolean NOT NULL DEFAULT true, "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_f8d44792805d19b9a80921b6aa6" PRIMARY KEY ("_id"))`);
7
+ await queryRunner.query(`CREATE INDEX "IDX_1dfd95ad32f7b687ef4d7ba591" ON "StatusPageMonitorRule" ("projectId") `);
8
+ await queryRunner.query(`CREATE INDEX "IDX_473317deaa55a8305a047e4098" ON "StatusPageMonitorRule" ("statusPageId") `);
9
+ await queryRunner.query(`CREATE INDEX "IDX_61196848685b7e7f5a6a54278b" ON "StatusPageMonitorRule" ("name") `);
10
+ await queryRunner.query(`CREATE INDEX "IDX_71d1869039530178fd5f7e6faa" ON "StatusPageMonitorRule" ("isEnabled") `);
11
+ await queryRunner.query(`CREATE INDEX "IDX_3e6d0bc4d444371aaa13a1c14c" ON "StatusPageMonitorRule" ("statusPageGroupId") `);
12
+ await queryRunner.query(`CREATE TABLE "StatusPageMonitorRuleMonitorLabel" ("statusPageMonitorRuleId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_59234d33b435d8e771cd3728ea4" PRIMARY KEY ("statusPageMonitorRuleId", "labelId"))`);
13
+ await queryRunner.query(`CREATE INDEX "IDX_0eb2b2a3601ea9813b8e162bd3" ON "StatusPageMonitorRuleMonitorLabel" ("statusPageMonitorRuleId") `);
14
+ await queryRunner.query(`CREATE INDEX "IDX_bc08b888a870ecc9167516230a" ON "StatusPageMonitorRuleMonitorLabel" ("labelId") `);
15
+ await queryRunner.query(`ALTER TABLE "StatusPageResource" ADD "statusPageMonitorRuleId" uuid`);
16
+ await queryRunner.query(`CREATE INDEX "IDX_4e1ed45d9506da817dc7811601" ON "StatusPageResource" ("statusPageMonitorRuleId") `);
17
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRule" ADD CONSTRAINT "FK_1dfd95ad32f7b687ef4d7ba5910" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
18
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRule" ADD CONSTRAINT "FK_473317deaa55a8305a047e4098b" FOREIGN KEY ("statusPageId") REFERENCES "StatusPage"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
19
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRule" ADD CONSTRAINT "FK_3e6d0bc4d444371aaa13a1c14cc" FOREIGN KEY ("statusPageGroupId") REFERENCES "StatusPageGroup"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
20
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRule" ADD CONSTRAINT "FK_60d22031be1695cbd1405376cbf" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
21
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRule" ADD CONSTRAINT "FK_3416ec12899c9dde670d8dea290" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
22
+ await queryRunner.query(`ALTER TABLE "StatusPageResource" ADD CONSTRAINT "FK_4e1ed45d9506da817dc78116010" FOREIGN KEY ("statusPageMonitorRuleId") REFERENCES "StatusPageMonitorRule"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
23
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRuleMonitorLabel" ADD CONSTRAINT "FK_0eb2b2a3601ea9813b8e162bd3b" FOREIGN KEY ("statusPageMonitorRuleId") REFERENCES "StatusPageMonitorRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
24
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRuleMonitorLabel" ADD CONSTRAINT "FK_bc08b888a870ecc9167516230ad" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`);
25
+ }
26
+ async down(queryRunner) {
27
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRuleMonitorLabel" DROP CONSTRAINT "FK_bc08b888a870ecc9167516230ad"`);
28
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRuleMonitorLabel" DROP CONSTRAINT "FK_0eb2b2a3601ea9813b8e162bd3b"`);
29
+ await queryRunner.query(`ALTER TABLE "StatusPageResource" DROP CONSTRAINT "FK_4e1ed45d9506da817dc78116010"`);
30
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRule" DROP CONSTRAINT "FK_3416ec12899c9dde670d8dea290"`);
31
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRule" DROP CONSTRAINT "FK_60d22031be1695cbd1405376cbf"`);
32
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRule" DROP CONSTRAINT "FK_3e6d0bc4d444371aaa13a1c14cc"`);
33
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRule" DROP CONSTRAINT "FK_473317deaa55a8305a047e4098b"`);
34
+ await queryRunner.query(`ALTER TABLE "StatusPageMonitorRule" DROP CONSTRAINT "FK_1dfd95ad32f7b687ef4d7ba5910"`);
35
+ await queryRunner.query(`DROP INDEX "public"."IDX_4e1ed45d9506da817dc7811601"`);
36
+ await queryRunner.query(`ALTER TABLE "StatusPageResource" DROP COLUMN "statusPageMonitorRuleId"`);
37
+ await queryRunner.query(`DROP INDEX "public"."IDX_bc08b888a870ecc9167516230a"`);
38
+ await queryRunner.query(`DROP INDEX "public"."IDX_0eb2b2a3601ea9813b8e162bd3"`);
39
+ await queryRunner.query(`DROP TABLE "StatusPageMonitorRuleMonitorLabel"`);
40
+ await queryRunner.query(`DROP INDEX "public"."IDX_3e6d0bc4d444371aaa13a1c14c"`);
41
+ await queryRunner.query(`DROP INDEX "public"."IDX_71d1869039530178fd5f7e6faa"`);
42
+ await queryRunner.query(`DROP INDEX "public"."IDX_61196848685b7e7f5a6a54278b"`);
43
+ await queryRunner.query(`DROP INDEX "public"."IDX_473317deaa55a8305a047e4098"`);
44
+ await queryRunner.query(`DROP INDEX "public"."IDX_1dfd95ad32f7b687ef4d7ba591"`);
45
+ await queryRunner.query(`DROP TABLE "StatusPageMonitorRule"`);
46
+ }
47
+ }
48
+ //# sourceMappingURL=1786005052769-AddStatusPageMonitorRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1786005052769-AddStatusPageMonitorRule.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1786005052769-AddStatusPageMonitorRule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export class AddPerUserPasswordSalt1786018109307 {
2
+ constructor() {
3
+ this.name = "AddPerUserPasswordSalt1786018109307";
4
+ }
5
+ async up(queryRunner) {
6
+ await queryRunner.query(`ALTER TABLE "User" ADD "passwordSalt" character varying(100)`);
7
+ await queryRunner.query(`ALTER TABLE "StatusPagePrivateUser" ADD "passwordSalt" character varying(100)`);
8
+ }
9
+ async down(queryRunner) {
10
+ await queryRunner.query(`ALTER TABLE "StatusPagePrivateUser" DROP COLUMN "passwordSalt"`);
11
+ await queryRunner.query(`ALTER TABLE "User" DROP COLUMN "passwordSalt"`);
12
+ }
13
+ }
14
+ //# sourceMappingURL=1786018109307-AddPerUserPasswordSalt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1786018109307-AddPerUserPasswordSalt.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1786018109307-AddPerUserPasswordSalt.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,mCAAmC;IAAhD;QACS,SAAI,GAAG,qCAAqC,CAAC;IAiBtD,CAAC;IAfQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,8DAA8D,CAC/D,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CACrB,gEAAgE,CACjE,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC3E,CAAC;CACF"}
@@ -0,0 +1,59 @@
1
+ /*
2
+ * Widen every HashedString column from varchar(64) to varchar(255).
3
+ *
4
+ * A bare SHA-256 digest is 64 hex characters, which is exactly what the old
5
+ * column held. User passwords are now scrypt hashes that carry the cost
6
+ * parameters they were produced with — `scrypt$N=16384,r=8,p=1$<64 hex>`,
7
+ * about 90 characters — so that raising the cost later needs no migration and
8
+ * no password reset. The other HashedString columns (session refresh tokens,
9
+ * master passwords) still store a bare digest and simply do not use the room;
10
+ * they are widened only because they share ColumnLength.HashedString.
11
+ *
12
+ * WHY THIS FILE IS NOT WHAT `migration:generate` PRODUCED.
13
+ *
14
+ * TypeORM does not express a varchar length change as ALTER COLUMN TYPE. It
15
+ * emits DROP COLUMN followed by ADD COLUMN, which for these six columns means
16
+ * deleting every password, every status page and dashboard master password,
17
+ * and every active session in the instance. The generated `up()` also had to
18
+ * drop and recreate the refresh-token unique constraints and indexes, purely
19
+ * to work around its own DROP.
20
+ *
21
+ * ALTER COLUMN TYPE to a WIDER varchar is the correct statement and is
22
+ * cheaper besides: Postgres skips the table rewrite entirely when a varchar
23
+ * is only being lengthened (no rewrite means the unique indexes survive
24
+ * untouched too), so this is a catalog update behind a brief ACCESS EXCLUSIVE
25
+ * lock rather than a full copy of six tables.
26
+ *
27
+ * The resulting schema is identical to what the generated migration would
28
+ * have produced, which is what `npm run check-postgres-schema-drift` verifies.
29
+ */
30
+ const WIDENED_COLUMNS = [
31
+ { table: "User", column: "password" },
32
+ { table: "StatusPagePrivateUser", column: "password" },
33
+ { table: "StatusPage", column: "masterPassword" },
34
+ { table: "Dashboard", column: "masterPassword" },
35
+ { table: "UserSession", column: "refreshToken" },
36
+ { table: "StatusPagePrivateUserSession", column: "refreshToken" },
37
+ ];
38
+ export class WidenHashedStringColumnsForScrypt1786023262402 {
39
+ constructor() {
40
+ this.name = "WidenHashedStringColumnsForScrypt1786023262402";
41
+ }
42
+ async up(queryRunner) {
43
+ for (const { table, column } of WIDENED_COLUMNS) {
44
+ await queryRunner.query(`ALTER TABLE "${table}" ALTER COLUMN "${column}" TYPE character varying(255)`);
45
+ }
46
+ }
47
+ /*
48
+ * Narrowing back to 64 fails loudly if any scrypt hash has been written,
49
+ * because those do not fit. That is the intended behaviour: a down
50
+ * migration that truncated password hashes would lock every user out
51
+ * silently instead of refusing.
52
+ */
53
+ async down(queryRunner) {
54
+ for (const { table, column } of [...WIDENED_COLUMNS].reverse()) {
55
+ await queryRunner.query(`ALTER TABLE "${table}" ALTER COLUMN "${column}" TYPE character varying(64)`);
56
+ }
57
+ }
58
+ }
59
+ //# sourceMappingURL=1786023262402-WidenHashedStringColumnsForScrypt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1786023262402-WidenHashedStringColumnsForScrypt.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1786023262402-WidenHashedStringColumnsForScrypt.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,eAAe,GAAqD;IACxE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE;IACrC,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,UAAU,EAAE;IACtD,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE;IACjD,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAChD,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE;IAChD,EAAE,KAAK,EAAE,8BAA8B,EAAE,MAAM,EAAE,cAAc,EAAE;CAClE,CAAC;AAEF,MAAM,OAAO,8CAA8C;IAA3D;QAGS,SAAI,GAAG,gDAAgD,CAAC;IAuBjE,CAAC;IArBQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;YAChD,MAAM,WAAW,CAAC,KAAK,CACrB,gBAAgB,KAAK,mBAAmB,MAAM,+BAA+B,CAC9E,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/D,MAAM,WAAW,CAAC,KAAK,CACrB,gBAAgB,KAAK,mBAAmB,MAAM,8BAA8B,CAC7E,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,93 @@
1
+ /*
2
+ * Restores the expression index that serves the telemetry ingest path's
3
+ * `service.name` lookup, and that an autogenerated migration deleted.
4
+ *
5
+ * WHAT BROKE
6
+ *
7
+ * `OTelIngestService.findOrCreateTelemetryService` resolves an OTLP resource's
8
+ * `service.name` to a Service row through `QueryHelper.findWithSameText`, which
9
+ * emits a case-insensitive predicate:
10
+ *
11
+ * WHERE "projectId" = $1 AND LOWER("name") = $2 AND "deletedAt" IS NULL
12
+ * ORDER BY "createdAt" ASC LIMIT 1
13
+ *
14
+ * Every live index on Service is over the RAW `name` column. Postgres cannot
15
+ * invert `lower()` (it is not order-preserving under any non-C collation) and
16
+ * PG16 has no index-condition pushdown, so `LOWER("name") = $2` degrades to a
17
+ * post-heap-fetch Filter. Only the `projectId` prefix acts as an index qual,
18
+ * which makes each lookup cost O(services in that project) heap fetches plus
19
+ * that many collation-aware lower() calls — not O(log n).
20
+ *
21
+ * That query runs once per OTLP *resource* (hundreds per batch for the shipped
22
+ * host-metrics collector config), again per signal type, from every ingest pod.
23
+ * Production sat at 100% CPU against a 100% buffer cache hit ratio and ~110 B/s
24
+ * of reads: entirely in memory, entirely CPU.
25
+ *
26
+ * WHY IT BROKE
27
+ *
28
+ * The correct index existed. Migration 1774559064921 created:
29
+ *
30
+ * CREATE UNIQUE INDEX "IDX_SERVICE_PROJECT_NAME_UNIQUE"
31
+ * ON "Service" ("projectId", LOWER("name")) WHERE "deletedAt" IS NULL
32
+ *
33
+ * Migration 1775735059360 — otherwise two unrelated column-default changes —
34
+ * dropped it. TypeORM's schema builder matches database indexes to entity
35
+ * metadata BY NAME and drops any it cannot find, and a hand-named expression
36
+ * index created only in a migration is invisible to entity metadata. Its down()
37
+ * "restores" the index as ("projectId") alone, silently losing the expression,
38
+ * which is the signature of a machine-generated statement rather than a
39
+ * deliberate one.
40
+ *
41
+ * The Service entity now declares this index with `synchronize: false`, which
42
+ * makes the schema builder skip it in both directions. Without that decorator
43
+ * this migration would be undone again by the next autogenerated one.
44
+ *
45
+ * WHY THIS IS HAND-WRITTEN
46
+ *
47
+ * AGENTS.md requires migrations to come from `npm run generate-postgres-migration`.
48
+ * That cannot produce this one: `@Index()` has no way to express `LOWER(...)`,
49
+ * so TypeORM can neither generate nor round-trip an expression index. The
50
+ * generator is authoritative for column and table drift; expression indexes are
51
+ * outside what it can model.
52
+ *
53
+ * NOT UNIQUE, DELIBERATELY
54
+ *
55
+ * The dropped original was UNIQUE. Recreating it that way would make this
56
+ * migration fail on any project that already holds two services whose names
57
+ * differ only by case — which the surviving raw-name unique index permits, so
58
+ * such rows can legitimately exist today. Failing a deploy to enforce an
59
+ * invariant nobody is currently relying on is the wrong trade: this index
60
+ * exists to make the lookup fast. `ORDER BY "createdAt" ASC LIMIT 1` in the
61
+ * query already resolves duplicates deterministically (oldest wins), and the
62
+ * raw-name unique index still blocks exact-duplicate races. Restoring
63
+ * case-insensitive uniqueness would need a dedupe pass first, as migration
64
+ * 1778100000000 did, and belongs in its own change.
65
+ *
66
+ * `createdAt` is the third key column so the ORDER BY is satisfied by the index
67
+ * itself and the plan carries no Sort node even when duplicates exist.
68
+ *
69
+ * NOT CONCURRENT, DELIBERATELY
70
+ *
71
+ * DataSourceOptions sets no `migrationsTransactionMode`, so TypeORM defaults to
72
+ * "all" and runs every migration inside ONE transaction. `CREATE INDEX
73
+ * CONCURRENTLY` cannot run inside a transaction block and would abort the whole
74
+ * run. A plain CREATE INDEX takes a SHARE lock that blocks writes to Service
75
+ * for the duration, which is milliseconds at this table's size (thousands of
76
+ * live rows).
77
+ *
78
+ * IF NOT EXISTS makes this a no-op when an operator has already created the
79
+ * index by hand — the recommended incident mitigation is to build it
80
+ * CONCURRENTLY on the live database under this exact name, ahead of the deploy.
81
+ */
82
+ export class RestoreServiceLowerNameIndex1786100000000 {
83
+ constructor() {
84
+ this.name = "RestoreServiceLowerNameIndex1786100000000";
85
+ }
86
+ async up(queryRunner) {
87
+ await queryRunner.query(`CREATE INDEX IF NOT EXISTS "IDX_SERVICE_PROJECT_LOWER_NAME" ON "Service" ("projectId", LOWER("name"), "createdAt") WHERE "deletedAt" IS NULL`);
88
+ }
89
+ async down(queryRunner) {
90
+ await queryRunner.query(`DROP INDEX IF EXISTS "public"."IDX_SERVICE_PROJECT_LOWER_NAME"`);
91
+ }
92
+ }
93
+ //# sourceMappingURL=1786100000000-RestoreServiceLowerNameIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1786100000000-RestoreServiceLowerNameIndex.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,MAAM,OAAO,yCAAyC;IAAtD;QAGS,SAAI,GAAW,2CAA2C,CAAC;IAapE,CAAC;IAXQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,8IAA8I,CAC/I,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CACrB,gEAAgE,CACjE,CAAC;IACJ,CAAC;CACF"}