@@ -50,7 +50,7 @@ const SKIPPED_MODULES_PATH = path.join(
5050const MODULES_DIR = path . join ( PROJECT_ROOT , "modules" ) ;
5151const MODULES_TEMP_DIR = path . join ( PROJECT_ROOT , "modules_temp" ) ;
5252
53- const DEFAULT_URL_CONCURRENCY = 10 ;
53+ const DEFAULT_URL_CONCURRENCY = 5 ;
5454const DEFAULT_URL_RATE = 15 ;
5555const URL_VALIDATION_RETRY_COUNT = 5 ;
5656const URL_VALIDATION_RETRY_DELAY_MS = 3000 ;
@@ -124,6 +124,14 @@ function parseCliOptions(argv: string[]): CliOptions {
124124const cliOptions = parseCliOptions ( process . argv . slice ( 2 ) ) ;
125125const logger = createLogger ( { name : "get-modules" } ) ;
126126
127+ function logMemoryUsage ( label : string ) {
128+ const usage = process . memoryUsage ( ) ;
129+ const heapUsedMb = ( usage . heapUsed / 1024 / 1024 ) . toFixed ( 2 ) ;
130+ const heapTotalMb = ( usage . heapTotal / 1024 / 1024 ) . toFixed ( 2 ) ;
131+ const rssMb = ( usage . rss / 1024 / 1024 ) . toFixed ( 2 ) ;
132+ logger . info ( `[Memory] ${ label } : RSS=${ rssMb } MB, Heap=${ heapUsedMb } MB/${ heapTotalMb } MB` ) ;
133+ }
134+
127135function logErrorDetails ( error : unknown , { scope } : { scope : string } ) {
128136 if ( error instanceof Error ) {
129137 const stack = error . stack ?? error . message ;
@@ -399,6 +407,7 @@ async function validateModuleUrls({
399407 logger . info (
400408 `Progress: ${ completed } /${ total } URLs validated (concurrency=${ urlConcurrency } )`
401409 ) ;
410+ logMemoryUsage ( `Progress: ${ completed } /${ total } ` ) ;
402411 }
403412 } catch ( error ) {
404413 logger . error ( `=== DIAGNOSTIC: Error validating ${ module . name } : ${ error } ===` ) ;
@@ -544,6 +553,7 @@ async function processModules() {
544553 MODULES_STAGE_2_PATH
545554 ) ;
546555 const modules = extractModules ( stageData ) ;
556+ logMemoryUsage ( "Initial" ) ;
547557
548558 logger . info ( `Loaded ${ modules . length } modules from stage 2` ) ;
549559
@@ -669,6 +679,7 @@ async function processModules() {
669679 logger . info ( `Total modules processed: ${ validModules . length + skippedModules . length } /${ validated . length } ` ) ;
670680 } finally {
671681 // Always write output, even if errors occurred
682+ logMemoryUsage ( "Pre-write" ) ;
672683 logger . info ( "Writing output files..." ) ;
673684 try {
674685 await writeOutputs ( { validModules, skippedModules } ) ;
@@ -678,6 +689,7 @@ async function processModules() {
678689 logErrorDetails ( writeError , { scope : "writeOutputs" } ) ;
679690 throw writeError ;
680691 }
692+ logMemoryUsage ( "Post-write" ) ;
681693 }
682694}
683695
0 commit comments