@contember/engine-server 2.1.0-rc.3 → 2.2.0-alpha.10
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/development/src/cluster.cjs.map +1 -1
- package/dist/development/src/cluster.js.map +1 -1
- package/dist/development/src/loadPlugins.cjs +2 -1
- package/dist/development/src/loadPlugins.cjs.map +1 -1
- package/dist/development/src/loadPlugins.js +2 -1
- package/dist/development/src/loadPlugins.js.map +1 -1
- package/dist/development/start.cjs +39 -4
- package/dist/development/start.cjs.map +1 -1
- package/dist/development/start.js +40 -5
- package/dist/development/start.js.map +1 -1
- package/dist/production/src/cluster.cjs.map +1 -1
- package/dist/production/src/cluster.js.map +1 -1
- package/dist/production/src/loadPlugins.cjs +2 -1
- package/dist/production/src/loadPlugins.cjs.map +1 -1
- package/dist/production/src/loadPlugins.js +2 -1
- package/dist/production/src/loadPlugins.js.map +1 -1
- package/dist/production/start.cjs +39 -4
- package/dist/production/start.cjs.map +1 -1
- package/dist/production/start.js +40 -5
- package/dist/production/start.js.map +1 -1
- package/dist/types/cluster.d.ts.map +1 -1
- package/dist/types/loadPlugins.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/utils.d.ts.map +1 -1
- package/package.json +7 -6
- package/src/cluster.ts +1 -1
- package/src/loadPlugins.ts +2 -1
- package/src/start.ts +45 -6
- package/src/tsconfig.json +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,OAAQ,MAAM,qBAG/B,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/engine-server",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0-alpha.10",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "./dist/production/index.js",
|
|
6
6
|
"typings": "./dist/types/index.d.ts",
|
|
@@ -23,11 +23,12 @@
|
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@contember/engine-actions": "2.
|
|
27
|
-
"@contember/engine-http": "2.
|
|
28
|
-
"@contember/engine-
|
|
29
|
-
"@contember/engine-
|
|
30
|
-
"@contember/engine-
|
|
26
|
+
"@contember/engine-actions": "2.2.0-alpha.10",
|
|
27
|
+
"@contember/engine-http": "2.2.0-alpha.10",
|
|
28
|
+
"@contember/engine-panel": "2.2.0-alpha.10",
|
|
29
|
+
"@contember/engine-plugins": "2.2.0-alpha.10",
|
|
30
|
+
"@contember/engine-s3-plugin": "2.2.0-alpha.10",
|
|
31
|
+
"@contember/engine-vimeo-plugin": "2.2.0-alpha.10",
|
|
31
32
|
"graphql": "^16.13.1",
|
|
32
33
|
"pg": "^8.20.0",
|
|
33
34
|
"uuid": "^13.0.0"
|
package/src/cluster.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import cluster, { Worker } from 'node:cluster'
|
|
2
|
-
import { timeout } from './utils'
|
|
2
|
+
import { timeout } from './utils.js'
|
|
3
3
|
|
|
4
4
|
export const getClusterProcessType = (isClusterMode: boolean): ProcessType =>
|
|
5
5
|
!isClusterMode ? 'singleNode' : cluster.isMaster ? 'clusterMaster' : 'clusterWorker'
|
package/src/loadPlugins.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import ActionsPlugin from '@contember/engine-actions'
|
|
2
|
+
import PanelPlugin from '@contember/engine-panel'
|
|
2
3
|
import { Plugin } from '@contember/engine-plugins'
|
|
3
4
|
import S3Plugin from '@contember/engine-s3-plugin'
|
|
4
5
|
import VimeoPlugin from '@contember/engine-vimeo-plugin'
|
|
5
6
|
|
|
6
7
|
export default function loadPlugins(): Promise<Plugin[]> {
|
|
7
|
-
return Promise.resolve([new S3Plugin(), new VimeoPlugin(), new ActionsPlugin()])
|
|
8
|
+
return Promise.resolve([new S3Plugin(), new VimeoPlugin(), new ActionsPlugin(), new PanelPlugin()])
|
|
8
9
|
}
|
package/src/start.ts
CHANGED
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
createContainer,
|
|
5
5
|
createDefaultLogger,
|
|
6
6
|
createSentryLoggerHandler,
|
|
7
|
+
createTelemetry,
|
|
7
8
|
getServerVersion,
|
|
8
9
|
isDebugMode,
|
|
9
10
|
listenOnProcessTermination,
|
|
@@ -12,11 +13,11 @@ import {
|
|
|
12
13
|
serverConfigSchema,
|
|
13
14
|
TerminationJob,
|
|
14
15
|
} from '@contember/engine-http'
|
|
15
|
-
import loadPlugins from './loadPlugins'
|
|
16
|
+
import loadPlugins from './loadPlugins.js'
|
|
16
17
|
import cluster from 'node:cluster'
|
|
17
18
|
import * as os from 'node:os'
|
|
18
|
-
import { timeout } from './utils'
|
|
19
|
-
import { getClusterProcessType, notifyWorkerStarted, WorkerManager } from './cluster'
|
|
19
|
+
import { timeout } from './utils.js'
|
|
20
|
+
import { getClusterProcessType, notifyWorkerStarted, WorkerManager } from './cluster.js'
|
|
20
21
|
|
|
21
22
|
const logger = createDefaultLogger()
|
|
22
23
|
process.on('warning', message => {
|
|
@@ -28,7 +29,7 @@ process.on('warning', message => {
|
|
|
28
29
|
const version = await getServerVersion()
|
|
29
30
|
printStartInfo({ version, isDebug }, logger)
|
|
30
31
|
const plugins = await loadPlugins()
|
|
31
|
-
const { serverConfig, projectConfigResolver, tenantConfigResolver } = await resolveServerConfig({ plugins, serverConfigSchema })
|
|
32
|
+
const { serverConfig, projectConfigResolver, tenantConfigResolver, env } = await resolveServerConfig({ plugins, serverConfigSchema })
|
|
32
33
|
|
|
33
34
|
if (process.argv[2] === 'validate') {
|
|
34
35
|
process.exit(0)
|
|
@@ -39,6 +40,8 @@ process.on('warning', message => {
|
|
|
39
40
|
logger.addHandler(sentryhandler)
|
|
40
41
|
}
|
|
41
42
|
|
|
43
|
+
const telemetry = createTelemetry({ config: serverConfig.telemetry, logger, env })
|
|
44
|
+
|
|
42
45
|
const workerConfig = serverConfig.workerCount || 1
|
|
43
46
|
|
|
44
47
|
const workerCount = workerConfig === 'auto' ? os.cpus().length : Number(workerConfig)
|
|
@@ -51,15 +54,51 @@ process.on('warning', message => {
|
|
|
51
54
|
serverConfig,
|
|
52
55
|
projectConfigResolver,
|
|
53
56
|
tenantConfigResolver,
|
|
57
|
+
env,
|
|
54
58
|
plugins,
|
|
55
59
|
processType,
|
|
56
60
|
version,
|
|
57
61
|
logger,
|
|
62
|
+
tracer: telemetry.tracer,
|
|
58
63
|
})
|
|
59
64
|
|
|
60
65
|
let initializedProjects: string[] = []
|
|
61
66
|
const terminationJobs: TerminationJob[] = []
|
|
62
|
-
|
|
67
|
+
const finalTerminationJobs: TerminationJob[] = []
|
|
68
|
+
// A cluster worker is signalled by the master, which has already served the delay.
|
|
69
|
+
listenOnProcessTermination(terminationJobs, logger, {
|
|
70
|
+
sigtermDelayMs: processType === 'clusterWorker' ? 0 : serverConfig.shutdownDelayMs,
|
|
71
|
+
finalJobs: finalTerminationJobs,
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
const spanProcessor = telemetry.processor
|
|
75
|
+
if (spanProcessor !== undefined) {
|
|
76
|
+
terminationJobs.push(async () => {
|
|
77
|
+
let timer: ReturnType<typeof setTimeout> | undefined
|
|
78
|
+
let flushed = false
|
|
79
|
+
try {
|
|
80
|
+
await Promise.race([
|
|
81
|
+
spanProcessor.forceFlush().then(() => {
|
|
82
|
+
flushed = true
|
|
83
|
+
}),
|
|
84
|
+
new Promise<void>(resolve => {
|
|
85
|
+
timer = setTimeout(resolve, 5000)
|
|
86
|
+
}),
|
|
87
|
+
])
|
|
88
|
+
} finally {
|
|
89
|
+
if (timer !== undefined) {
|
|
90
|
+
clearTimeout(timer)
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (!flushed) {
|
|
94
|
+
logger.warn('Telemetry pre-shutdown flush timed out')
|
|
95
|
+
}
|
|
96
|
+
})
|
|
97
|
+
finalTerminationJobs.push(async () => {
|
|
98
|
+
await spanProcessor.shutdown()
|
|
99
|
+
logger.info('Telemetry shut down')
|
|
100
|
+
})
|
|
101
|
+
}
|
|
63
102
|
|
|
64
103
|
if (cluster.isMaster) {
|
|
65
104
|
const monitoringPort = serverConfig.monitoringPort
|
|
@@ -106,7 +145,7 @@ process.on('warning', message => {
|
|
|
106
145
|
},
|
|
107
146
|
})
|
|
108
147
|
terminationJobs.push(async () => {
|
|
109
|
-
|
|
148
|
+
await (await runningWorker).end()
|
|
110
149
|
})
|
|
111
150
|
await runningWorker
|
|
112
151
|
logger.info(`Contember Worker ${workerName} started.`)
|
package/src/tsconfig.json
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"references": [
|
|
7
7
|
{ "path": "../../engine-actions/src" },
|
|
8
8
|
{ "path": "../../engine-http/src" },
|
|
9
|
+
{ "path": "../../engine-panel/src" },
|
|
9
10
|
{ "path": "../../engine-plugins/src" },
|
|
10
11
|
{ "path": "../../engine-s3-plugin/src" },
|
|
11
12
|
{ "path": "../../engine-vimeo-plugin/src" }
|