@@ -163,7 +163,7 @@ export class HealthCheckService {
163163 } ) ;
164164
165165 // Log warnings for concerning metrics
166- if ( metrics . memoryUsage . usagePercent > 80 ) {
166+ if ( metrics . memoryUsage . usagePercent > 95 ) {
167167 logger . warn ( 'High memory usage detected' , {
168168 correlationId,
169169 memoryUsage : metrics . memoryUsage ,
@@ -300,12 +300,91 @@ export class HealthCheckService {
300300 }
301301
302302 private async checkEnhancedMemory ( ) : Promise < HealthCheckResult > {
303- // Temporarily bypassed for debugging startup issues
304- return {
305- status : 'pass' ,
306- message : 'Memory check bypassed for debugging' ,
307- lastChecked : new Date ( ) . toISOString ( ) ,
308- } ;
303+ try {
304+ const memoryHealthMetrics = this . memoryManager . getHealthMetrics ( ) ;
305+ const memoryMetrics = this . getMemoryMetrics ( ) ;
306+
307+ // Use memory manager's status determination
308+ const status = memoryHealthMetrics . status ;
309+
310+ if ( status === 'emergency' ) {
311+ // Memory manager will handle emergency cleanup
312+ await this . memoryManager . checkMemoryPressure ( ) ;
313+
314+ return {
315+ status : 'fail' ,
316+ message : 'Memory usage critical - emergency cleanup triggered' ,
317+ lastChecked : new Date ( ) . toISOString ( ) ,
318+ details : {
319+ ...memoryMetrics ,
320+ memoryManagerStatus : status ,
321+ trend : memoryHealthMetrics . trend ,
322+ leakDetection : memoryHealthMetrics . leakDetection ,
323+ recentAlerts : memoryHealthMetrics . recentAlerts ?. length || 0 ,
324+ } ,
325+ } ;
326+ }
327+
328+ if ( status === 'critical' ) {
329+ return {
330+ status : 'fail' ,
331+ message : 'Memory usage critical' ,
332+ lastChecked : new Date ( ) . toISOString ( ) ,
333+ details : {
334+ ...memoryMetrics ,
335+ memoryManagerStatus : status ,
336+ trend : memoryHealthMetrics . trend ,
337+ recommendations : memoryHealthMetrics . recommendations ,
338+ } ,
339+ } ;
340+ }
341+
342+ if ( status === 'warning' ) {
343+ return {
344+ status : 'warn' ,
345+ message : 'Memory usage high' ,
346+ lastChecked : new Date ( ) . toISOString ( ) ,
347+ details : {
348+ ...memoryMetrics ,
349+ memoryManagerStatus : status ,
350+ trend : memoryHealthMetrics . trend ,
351+ } ,
352+ } ;
353+ }
354+
355+ if ( memoryHealthMetrics . leakDetection . detected ) {
356+ return {
357+ status : 'warn' ,
358+ message : `Potential memory leak detected (${ memoryHealthMetrics . leakDetection . confidence } % confidence)` ,
359+ lastChecked : new Date ( ) . toISOString ( ) ,
360+ details : {
361+ ...memoryMetrics ,
362+ memoryManagerStatus : status ,
363+ leakDetection : memoryHealthMetrics . leakDetection ,
364+ } ,
365+ } ;
366+ }
367+
368+ return {
369+ status : 'pass' ,
370+ message : 'Memory usage normal' ,
371+ lastChecked : new Date ( ) . toISOString ( ) ,
372+ details : {
373+ ...memoryMetrics ,
374+ memoryManagerStatus : status ,
375+ trend : memoryHealthMetrics . trend ,
376+ gcStats : memoryHealthMetrics . gcStats ,
377+ } ,
378+ } ;
379+ } catch ( error ) {
380+ logger . error ( 'Enhanced memory health check failed' , error ) ;
381+ return {
382+ status : 'fail' ,
383+ message : 'Memory check failed' ,
384+ lastChecked : new Date ( ) . toISOString ( ) ,
385+ details : error instanceof Error ? error . message : 'Unknown error' ,
386+ } ;
387+ }
309388 }
310389
311390 private async checkSchedulers ( ) : Promise < HealthCheckResult > {
0 commit comments