@@ -20,6 +20,7 @@ import TemplateIndexer from './template/TemplateIndexer';
2020import { TemplateIndexData } from './template/TemplateIndexData' ;
2121import CronIndexer from './cron/CronIndexer' ;
2222import { CronIndexData } from './cron/CronIndexData' ;
23+ import Config from 'common/Config' ;
2324
2425type IndexerInstance =
2526 | DiIndexer
@@ -41,7 +42,7 @@ type IndexerDataMap = {
4142} ;
4243
4344class IndexManager {
44- private static readonly INDEX_BATCH_SIZE = 50 ;
45+ private static readonly REPORTING_BATCH_SIZE = 500 ;
4546
4647 protected indexers : IndexerInstance [ ] = [ ] ;
4748 protected indexStorage : IndexStorage ;
@@ -77,40 +78,60 @@ class IndexManager {
7778 Logger . logWithTime ( 'Indexing workspace' , workspaceFolder . name ) ;
7879
7980 for ( const indexer of this . indexers ) {
80- this . indexStorage . loadIndex ( workspaceFolder , indexer . getId ( ) , indexer . getVersion ( ) ) ;
81-
82- if ( ! force && ! this . shouldIndex ( workspaceFolder , indexer ) ) {
83- Logger . logWithTime ( 'Loaded index from storage' , workspaceFolder . name , indexer . getId ( ) ) ;
84- continue ;
81+ if ( ! force ) {
82+ Logger . logWithTime ( 'Loading index from storage' , workspaceFolder . name , indexer . getId ( ) ) ;
83+ this . indexStorage . loadIndex ( workspaceFolder , indexer . getId ( ) , indexer . getVersion ( ) ) ;
84+
85+ if ( ! this . shouldIndex ( workspaceFolder , indexer ) ) {
86+ Logger . logWithTime ( 'Loaded index from storage' , workspaceFolder . name , indexer . getId ( ) ) ;
87+ continue ;
88+ }
8589 }
86- progress . report ( { message : ` Indexing - ${ indexer . getName ( ) } ` , increment : 0 } ) ;
90+ Logger . logWithTime ( ' Indexing' , indexer . getName ( ) ) ;
8791
88- const indexData = this . getIndexStorageData ( indexer . getId ( ) ) || new Map ( ) ;
92+ progress . report ( {
93+ message : `Indexing - ${ indexer . getName ( ) } [...]` ,
94+ } ) ;
8995
90- Logger . logWithTime ( 'Indexing' , indexer . getName ( ) ) ;
91- const files = await workspace . findFiles ( indexer . getPattern ( workspaceUri ) , 'dev/**' ) ;
96+ const indexData = new Map ( ) ;
97+
98+ Logger . logWithTime ( 'Discovering files to index' ) ;
99+
100+ const files = await workspace . findFiles (
101+ indexer . getPattern ( workspaceUri ) ,
102+ indexer . getExcludePattern ( workspaceUri )
103+ ) ;
92104
93105 let doneCount = 0 ;
94106 const totalCount = files . length ;
107+ Logger . logWithTime ( 'Found' , totalCount , 'files to index' ) ;
95108
96- for ( let i = 0 ; i < files . length ; i += IndexManager . INDEX_BATCH_SIZE ) {
97- const batch = files . slice ( i , i + IndexManager . INDEX_BATCH_SIZE ) ;
109+ const batchSize = Config . get < number > ( 'magento-toolbox.indexingBatchSize' , 25 ) ;
110+
111+ for ( let i = 0 ; i < files . length ; i += batchSize ) {
112+ const batch = files . slice ( i , i + batchSize ) ;
98113
99114 await Promise . all (
100115 batch . map ( async file => {
101- const data = await indexer . indexFile ( file ) ;
116+ try {
117+ const data = await indexer . indexFile ( file ) ;
102118
103- if ( data !== undefined ) {
104- indexData . set ( file . fsPath , data ) ;
105- }
119+ if ( data !== undefined ) {
120+ indexData . set ( file . fsPath , data ) ;
121+ }
106122
107- doneCount ++ ;
108- const pct = Math . round ( ( doneCount / totalCount ) * 100 ) ;
123+ doneCount ++ ;
109124
110- progress . report ( {
111- message : `Indexing - ${ indexer . getName ( ) } [${ doneCount } /${ totalCount } ]` ,
112- increment : pct ,
113- } ) ;
125+ if ( doneCount % IndexManager . REPORTING_BATCH_SIZE === 0 ) {
126+ Logger . logWithTime ( 'Indexed' , doneCount , 'files of' , totalCount ) ;
127+
128+ progress . report ( {
129+ message : `Indexing - ${ indexer . getName ( ) } [${ doneCount } /${ totalCount } ]` ,
130+ } ) ;
131+ }
132+ } catch ( error ) {
133+ Logger . error ( 'Error indexing file' , file . fsPath , String ( error ) ) ;
134+ }
114135 } )
115136 ) ;
116137 }
@@ -122,7 +143,7 @@ class IndexManager {
122143
123144 Logger . logWithTime ( 'Indexing' , indexer . getName ( ) , 'done' ) ;
124145
125- progress . report ( { increment : 100 } ) ;
146+ progress . report ( { message : `Indexing - ${ indexer . getName ( ) } [done]` } ) ;
126147 }
127148
128149 Logger . logWithTime ( 'Finished indexing workspace' , workspaceFolder . name ) ;
0 commit comments