@@ -30,6 +30,9 @@ export async function initTools() {
3030 }
3131 global . isIniting = true ;
3232 try {
33+ const start = Date . now ( ) ;
34+ addLog . info ( `Load tools start` ) ;
35+
3336 await refreshDir ( toolsDir ) ;
3437 // 1. download pkgs into pkg dir
3538 // 1.1 get tools from mongo
@@ -38,29 +41,23 @@ export async function initTools() {
3841 } ) . lean ( ) ;
3942
4043 addLog . debug ( `Tools in mongo: ${ toolsInMongo . length } ` ) ;
41- // 1.2 download it to temp dir
44+ const toolMap : ToolMapType = new Map ( ) ;
45+
46+ // 2 download it to temp dir, and parse it
4247 await batch (
4348 10 ,
44- toolsInMongo . map (
45- ( tool ) => ( ) =>
46- privateS3Server . downloadFile ( {
47- downloadPath : toolsDir ,
48- objectName : `${ UploadToolsS3Path } /${ tool . toolId } .js`
49- } )
50- )
49+ toolsInMongo . map ( ( tool ) => async ( ) => {
50+ const filepath = await privateS3Server . downloadFile ( {
51+ downloadPath : toolsDir ,
52+ objectName : `${ UploadToolsS3Path } /${ tool . toolId } .js`
53+ } ) ;
54+ if ( ! filepath ) return ;
55+ const filename = filepath . replace ( `${ toolsDir } /` , '' ) ;
56+ const loadedTools = await LoadToolsByFilename ( filename ) ;
57+ loadedTools . forEach ( ( tool ) => toolMap . set ( tool . toolId , tool ) ) ;
58+ } )
5159 ) ;
5260
53- // 2. get all tool dirs
54- addLog . debug ( `Load tool in local: ${ toolsInMongo . length } ` ) ;
55- const toolFiles = await readdir ( toolsDir ) ;
56- const toolMap : ToolMapType = new Map ( ) ;
57-
58- const promises = toolFiles . map ( async ( filename ) => {
59- const loadedTools = await LoadToolsByFilename ( filename ) ;
60- loadedTools . forEach ( ( tool ) => toolMap . set ( tool . toolId , tool ) ) ;
61- } ) ;
62- await Promise . all ( promises ) ;
63-
6461 // 3. read dev tools, if in dev mode
6562 if ( ! isProd && process . env . DISABLE_DEV_TOOLS !== 'true' ) {
6663 const dir = join ( basePath , 'modules' , 'tool' , 'packages' ) ;
@@ -81,11 +78,11 @@ export async function initTools() {
8178 }
8279 }
8380
84- addLog . info ( `Load Tools : ${ toolMap . size } ` ) ;
81+ addLog . info ( `Load tools finish : ${ toolMap . size } , time: ${ Date . now ( ) - start } ms ` ) ;
8582 global . isIniting = false ;
8683 return toolMap ;
8784 } catch ( e ) {
88- addLog . error ( `Init Tools Error:` , e ) ;
85+ addLog . error ( `Load tools Error:` , e ) ;
8986 global . isIniting = false ;
9087 return getCachedData ( SystemCacheKeyEnum . systemTool ) ;
9188 }
0 commit comments