Skip to content

Commit fece0ba

Browse files
efritzuwedeportivo
authored andcommitted
LSIF: Ensure worker registers health and metrics endpoints (sourcegraph#9162)
1 parent 333dbc8 commit fece0ba

5 files changed

Lines changed: 28 additions & 49 deletions

File tree

lsif/src/server/routes/meta.ts

Lines changed: 0 additions & 15 deletions
This file was deleted.

lsif/src/server/server.ts

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import promClient from 'prom-client'
66
import { Backend } from './backend/backend'
77
import { createLogger } from '../shared/logging'
88
import { createLsifRouter } from './routes/lsif'
9-
import { createMetaRouter } from './routes/meta'
109
import { createPostgresConnection } from '../shared/database/postgres'
1110
import { createTracer } from '../shared/tracing'
1211
import { createUploadRouter } from './routes/uploads'
@@ -18,7 +17,7 @@ import { waitForConfiguration } from '../shared/config/config'
1817
import { DumpManager } from '../shared/store/dumps'
1918
import { DependencyManager } from '../shared/store/dependencies'
2019
import { SRC_FRONTEND_INTERNAL } from '../shared/config/settings'
21-
import { makeExpressApp } from '../shared/api/init'
20+
import { startExpressApp } from '../shared/api/init'
2221

2322
/**
2423
* Runs the HTTP server that accepts LSIF dump uploads and responds to LSIF requests.
@@ -56,19 +55,13 @@ async function main(logger: Logger): Promise<void> {
5655
// Start background tasks
5756
startTasks(connection, dumpManager, uploadManager, logger)
5857

59-
// Register endpoints
60-
const app = makeExpressApp({
61-
routes: [
62-
createMetaRouter(),
63-
createUploadRouter(dumpManager, uploadManager, logger),
64-
createLsifRouter(backend, uploadManager, logger, tracer),
65-
],
66-
logger,
67-
tracer,
68-
selectHistogram,
69-
})
58+
const routes = [
59+
createUploadRouter(dumpManager, uploadManager, logger),
60+
createLsifRouter(backend, uploadManager, logger, tracer),
61+
]
7062

71-
app.listen(settings.HTTP_PORT, () => logger.debug('LSIF API server listening on', { port: settings.HTTP_PORT }))
63+
// Start server
64+
startExpressApp({ routes, port: settings.HTTP_PORT, logger, tracer, selectHistogram })
7265
}
7366

7467
function selectHistogram(route: string): promClient.Histogram<string> | undefined {

lsif/src/shared/api/init.ts

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,19 @@ import { makeMetricsMiddleware } from './middleware/metrics'
77
import { Tracer } from 'opentracing'
88
import { Logger } from 'winston'
99

10-
export function makeExpressApp({
10+
export function startExpressApp({
1111
routes,
12+
port,
1213
logger,
1314
tracer,
1415
selectHistogram = () => undefined,
1516
}: {
1617
routes: express.Router[]
18+
port: number
1719
logger: Logger
1820
tracer?: Tracer
1921
selectHistogram?: (route: string) => promClient.Histogram<string> | undefined
20-
}): express.Express {
22+
}): void {
2123
const loggingOptions = {
2224
winstonInstance: logger,
2325
level: 'debug',
@@ -30,6 +32,7 @@ export function makeExpressApp({
3032
app.use(tracingMiddleware({ tracer }))
3133
app.use(loggingMiddleware(loggingOptions))
3234
app.use(makeMetricsMiddleware(selectHistogram))
35+
app.use(createMetaRouter())
3336

3437
for (const route of routes) {
3538
app.use(route)
@@ -39,5 +42,18 @@ export function makeExpressApp({
3942
// will apply to all routes and other middleware.
4043
app.use(errorHandler(logger))
4144

42-
return app
45+
app.listen(port, () => logger.debug('API server listening', { port }))
46+
}
47+
48+
/** Create a router containing health and metrics endpoint. */
49+
function createMetaRouter(): express.Router {
50+
const router = express.Router()
51+
router.get('/ping', (_, res) => res.send('ok'))
52+
router.get('/healthz', (_, res) => res.send('ok'))
53+
router.get('/metrics', (_, res) => {
54+
res.writeHead(200, { 'Content-Type': 'text/plain' })
55+
res.end(promClient.register.metrics())
56+
})
57+
58+
return router
4359
}

lsif/src/worker/server.ts

Lines changed: 0 additions & 15 deletions
This file was deleted.

lsif/src/worker/worker.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import { ensureDirectory } from '../shared/paths'
1010
import { Span, FORMAT_TEXT_MAP, followsFrom } from 'opentracing'
1111
import { instrument } from '../shared/metrics'
1212
import { Logger } from 'winston'
13-
import { startMetricsServer } from './server'
1413
import { waitForConfiguration } from '../shared/config/config'
1514
import { UploadManager } from '../shared/store/uploads'
1615
import * as pgModels from '../shared/models/pg'
@@ -22,6 +21,7 @@ import { DependencyManager } from '../shared/store/dependencies'
2221
import { EntityManager } from 'typeorm'
2322
import { SRC_FRONTEND_INTERNAL } from '../shared/config/settings'
2423
import { updateCommitsAndDumpsVisibleFromTip } from '../shared/visibility'
24+
import { startExpressApp } from '../shared/api/init'
2525

2626
/**
2727
* Runs the worker that converts LSIF uploads.
@@ -51,7 +51,7 @@ async function main(logger: Logger): Promise<void> {
5151
const dependencyManager = new DependencyManager(connection)
5252

5353
// Start metrics server
54-
startMetricsServer(logger)
54+
startExpressApp({ routes: [], port: settings.WORKER_METRICS_PORT, logger })
5555

5656
const convert = async (upload: pgModels.LsifUpload, entityManager: EntityManager): Promise<void> => {
5757
logger.debug('Selected upload to convert', { uploadId: upload.id })

0 commit comments

Comments
 (0)