@@ -3,25 +3,41 @@ import { Logger } from "../utils/logger";
3
3
import { Request , Response } from "express" ;
4
4
import os from "os" ;
5
5
import redis from "../utils/redis" ;
6
+ import { promiseOrTimeout } from "../utils/promise" ;
6
7
7
8
export async function getStatus ( req : Request , res : Response ) : Promise < Response > {
8
9
const startTime = Date . now ( ) ;
9
10
let value = req . params . value as string [ ] | string ;
10
11
value = Array . isArray ( value ) ? value [ 0 ] : value ;
12
+ let processTime , redisProcessTime = - 1 ;
11
13
try {
12
- const dbVersion = ( await db . prepare ( "get" , "SELECT key, value FROM config where key = ?" , [ "version" ] ) ) . value ;
14
+ const dbVersion = await promiseOrTimeout ( db . prepare ( "get" , "SELECT key, value FROM config where key = ?" , [ "version" ] ) , 5000 )
15
+ . then ( e => {
16
+ processTime = Date . now ( ) - startTime ;
17
+ return e . value ;
18
+ } )
19
+ . catch ( e => {
20
+ Logger . error ( `status: SQL query timed out: ${ e } ` ) ;
21
+ return - 1 ;
22
+ } ) ;
13
23
let statusRequests : unknown = 0 ;
14
- try {
15
- const numberRequests = await redis . increment ( "statusRequest" ) ;
16
- statusRequests = numberRequests ?. [ 0 ] ;
17
- } catch ( error ) { } // eslint-disable-line no-empty
24
+ const numberRequests = await promiseOrTimeout ( redis . increment ( "statusRequest" ) , 5000 )
25
+ . then ( e => {
26
+ redisProcessTime = Date . now ( ) - startTime ;
27
+ return e ;
28
+ } ) . catch ( e => {
29
+ Logger . error ( `status: redis increment timed out ${ e } ` ) ;
30
+ return [ - 1 ] ;
31
+ } ) ;
32
+ statusRequests = numberRequests ?. [ 0 ] ;
18
33
19
34
const statusValues : Record < string , any > = {
20
35
uptime : process . uptime ( ) ,
21
36
commit : ( global as any ) . HEADCOMMIT || "unknown" ,
22
37
db : Number ( dbVersion ) ,
23
38
startTime,
24
- processTime : Date . now ( ) - startTime ,
39
+ processTime,
40
+ redisProcessTime,
25
41
loadavg : os . loadavg ( ) . slice ( 1 ) , // only return 5 & 15 minute load average
26
42
statusRequests,
27
43
hostname : os . hostname ( )
0 commit comments