@paroicms/server 1.98.1 → 1.99.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin-backend/backup/backup.resolver.js +2 -5
- package/dist/admin-backend/backup/backup.resolver.js.map +1 -1
- package/dist/admin-backend/backup/hardened-backup.service.d.ts +5 -0
- package/dist/admin-backend/backup/hardened-backup.service.js +52 -0
- package/dist/admin-backend/backup/hardened-backup.service.js.map +1 -0
- package/dist/express/http-helpers.d.ts +1 -0
- package/dist/express/http-helpers.js +8 -0
- package/dist/express/http-helpers.js.map +1 -1
- package/dist/express/local-testing-route.d.ts +2 -0
- package/dist/express/local-testing-route.js +89 -0
- package/dist/express/local-testing-route.js.map +1 -0
- package/dist/express/route-handler-wrapper.js +26 -1
- package/dist/express/route-handler-wrapper.js.map +1 -1
- package/dist/express/static-files.req-handler.js +3 -5
- package/dist/express/static-files.req-handler.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/maintenance/maintenance-task.js +1 -1
- package/dist/maintenance/maintenance-task.js.map +1 -1
- package/dist/rendered-site/rendered-site.req-handler.js +1 -2
- package/dist/rendered-site/rendered-site.req-handler.js.map +1 -1
- package/dist/request-tracking/request-state.d.ts +11 -0
- package/dist/request-tracking/request-state.js +95 -0
- package/dist/request-tracking/request-state.js.map +1 -0
- package/dist/site-context/load-site-context.js +5 -0
- package/dist/site-context/load-site-context.js.map +1 -1
- package/dist/site-context/site-context.js +11 -6
- package/dist/site-context/site-context.js.map +1 -1
- package/dist/site-context/site-context.types.d.ts +10 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ApiError } from "@paroicms/public-server-lib";
|
|
2
2
|
import { registeredSites } from "../context.js";
|
|
3
|
+
import { isShuttingDown } from "../maintenance/shutdown.js";
|
|
4
|
+
import { initializeRequestTracker, setRequestTrackerState, waitForPendingRequests, } from "../request-tracking/request-state.js";
|
|
3
5
|
import { loadSiteContext } from "./load-site-context.js";
|
|
4
6
|
const MAX_IDLE_TIME = 1000 * 60 * 20;
|
|
5
7
|
const promises = new Map();
|
|
@@ -18,6 +20,8 @@ export function getActiveSiteContext(fqdn, options = {}) {
|
|
|
18
20
|
throw new Error(`should have the site-context for '${fqdn}'`);
|
|
19
21
|
}
|
|
20
22
|
export function getSiteContext(fqdn, options = {}) {
|
|
23
|
+
if (isShuttingDown())
|
|
24
|
+
throw new ApiError("Server shutting down", 503);
|
|
21
25
|
let promise = promises.get(fqdn);
|
|
22
26
|
if (promise) {
|
|
23
27
|
updateLastUseTime(fqdn);
|
|
@@ -36,18 +40,19 @@ export function getSiteContext(fqdn, options = {}) {
|
|
|
36
40
|
}
|
|
37
41
|
export async function unloadSiteContext(siteContext) {
|
|
38
42
|
const { logger } = siteContext;
|
|
43
|
+
setRequestTrackerState(siteContext, "gracefulShutdown");
|
|
44
|
+
await waitForPendingRequests(siteContext, 30_000);
|
|
45
|
+
await siteContext.cn.destroy();
|
|
46
|
+
await siteContext.textCache.close();
|
|
47
|
+
await siteContext.imageCache.close();
|
|
48
|
+
await siteContext.mediaStorage.close();
|
|
39
49
|
promises.delete(siteContext.fqdn);
|
|
40
50
|
activeContextAndTimes.delete(siteContext.fqdn);
|
|
41
|
-
await Promise.all([
|
|
42
|
-
siteContext.imageCache.close(),
|
|
43
|
-
siteContext.textCache.close(),
|
|
44
|
-
siteContext.mediaStorage.close(),
|
|
45
|
-
siteContext.cn.destroy(),
|
|
46
|
-
]);
|
|
47
51
|
logger.info("Site unloaded ↘");
|
|
48
52
|
}
|
|
49
53
|
async function wrapCreateSiteContext(regSite) {
|
|
50
54
|
const siteContext = await loadSiteContext(regSite);
|
|
55
|
+
initializeRequestTracker(siteContext);
|
|
51
56
|
activeContextAndTimes.set(regSite.fqdn, {
|
|
52
57
|
siteContext,
|
|
53
58
|
lastUseTimeMs: Date.now(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-context.js","sourceRoot":"","sources":["../../src/site-context/site-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;AACzD,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAgC,CAAC;AAOtE,MAAM,UAAU,qBAAqB;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpF,CAAC;AAOD,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,UAAsC,EAAE;IAExC,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,IAAI,EAAE,CAAC;QACT,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,CAAC,YAAY;QAAE,OAAO;IACjC,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,GAAG,CAAC,CAAC;AAChE,CAAC;AAOD,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,UAAsC,EAAE;IAExC,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,OAAO,EAAE,CAAC;QACZ,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,OAAO,CAAC,YAAY;gBAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC5D,MAAM,IAAI,QAAQ,CAAC,oBAAoB,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACzC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAAwB;IAC9D,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"site-context.js","sourceRoot":"","sources":["../../src/site-context/site-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,16 @@ export interface SiteContext extends PublicSiteContext {
|
|
|
27
27
|
hooks: Map<string, PluginHookHandler[]>;
|
|
28
28
|
trusted: boolean;
|
|
29
29
|
access: SiteAccessValue;
|
|
30
|
+
requestTracker: RequestTracker;
|
|
31
|
+
}
|
|
32
|
+
export interface RequestTracker {
|
|
33
|
+
pendingRequests: Set<string>;
|
|
34
|
+
requestQueue: Array<{
|
|
35
|
+
resolve: () => void;
|
|
36
|
+
reject: (error: Error) => void;
|
|
37
|
+
timeout: NodeJS.Timeout;
|
|
38
|
+
}>;
|
|
39
|
+
state: "normal" | "gracefulShutdown" | "backupMode";
|
|
30
40
|
}
|
|
31
41
|
export interface PluginFieldPreprocessor {
|
|
32
42
|
preprocessor: FieldPreprocessor;
|