@@ -15,7 +15,7 @@ use crate::{
1515 cache:: persistent:: cacheable_context:: CacheableContext , AsyncDependenciesBlock ,
1616 AsyncDependenciesBlockIdentifier , BoxDependency , BoxModule , BuildDependency , DependencyParents ,
1717 ExportInfoData , ExportsInfoData , ModuleGraph , ModuleGraphConnection , ModuleGraphModule ,
18- ModuleGraphPartial ,
18+ ModuleGraphPartial , RayonConsumer ,
1919} ;
2020
2121const SCOPE : & str = "occasion_make_module_graph" ;
@@ -132,45 +132,45 @@ pub async fn recovery_module_graph(
132132 let mut need_check_dep = vec ! [ ] ;
133133 let mut partial = ModuleGraphPartial :: default ( ) ;
134134 let mut mg = ModuleGraph :: new ( vec ! [ ] , Some ( & mut partial) ) ;
135- let nodes : Vec < _ > = storage
135+ storage
136136 . load ( SCOPE )
137137 . await ?
138138 . into_par_iter ( )
139139 . map ( |( _, v) | {
140140 from_bytes :: < Node , CacheableContext > ( & v, context)
141141 . expect ( "unexpected module graph deserialize failed" )
142142 } )
143- . collect ( ) ;
144- for mut node in nodes {
145- for ( dep, parent_block) in node. dependencies {
146- mg. set_parents (
147- * dep. id ( ) ,
148- DependencyParents {
149- block : parent_block,
150- module : node. module . identifier ( ) ,
151- } ,
152- ) ;
153- mg. add_dependency ( dep) ;
154- }
155- for con in node. connections {
156- need_check_dep. push ( ( con. dependency_id , * con. module_identifier ( ) ) ) ;
157- mg. cache_recovery_connection ( con) ;
158- }
159- for block in node. blocks {
160- mg. add_block ( Box :: new ( block) ) ;
161- }
162- // recovery exports/export info
163- let other_exports_info = ExportInfoData :: new ( None , None ) ;
164- let side_effects_only_info = ExportInfoData :: new ( Some ( "*side effects only*" . into ( ) ) , None ) ;
165- let exports_info = ExportsInfoData :: new ( other_exports_info. id ( ) , side_effects_only_info. id ( ) ) ;
166- node. mgm . exports = exports_info. id ( ) ;
167- mg. set_exports_info ( exports_info. id ( ) , exports_info) ;
168- mg. set_export_info ( side_effects_only_info. id ( ) , side_effects_only_info) ;
169- mg. set_export_info ( other_exports_info. id ( ) , other_exports_info) ;
143+ . with_max_len ( 1 )
144+ . consume ( | mut node| {
145+ for ( dep, parent_block) in node. dependencies {
146+ mg. set_parents (
147+ * dep. id ( ) ,
148+ DependencyParents {
149+ block : parent_block,
150+ module : node. module . identifier ( ) ,
151+ } ,
152+ ) ;
153+ mg. add_dependency ( dep) ;
154+ }
155+ for con in node. connections {
156+ need_check_dep. push ( ( con. dependency_id , * con. module_identifier ( ) ) ) ;
157+ mg. cache_recovery_connection ( con) ;
158+ }
159+ for block in node. blocks {
160+ mg. add_block ( Box :: new ( block) ) ;
161+ }
162+ // recovery exports/export info
163+ let other_exports_info = ExportInfoData :: new ( None , None ) ;
164+ let side_effects_only_info = ExportInfoData :: new ( Some ( "*side effects only*" . into ( ) ) , None ) ;
165+ let exports_info = ExportsInfoData :: new ( other_exports_info. id ( ) , side_effects_only_info. id ( ) ) ;
166+ node. mgm . exports = exports_info. id ( ) ;
167+ mg. set_exports_info ( exports_info. id ( ) , exports_info) ;
168+ mg. set_export_info ( side_effects_only_info. id ( ) , side_effects_only_info) ;
169+ mg. set_export_info ( other_exports_info. id ( ) , other_exports_info) ;
170170
171- mg. add_module_graph_module ( node. mgm ) ;
172- mg. add_module ( node. module ) ;
173- }
171+ mg. add_module_graph_module ( node. mgm ) ;
172+ mg. add_module ( node. module ) ;
173+ } ) ;
174174 // recovery incoming connections
175175 for ( con_id, module_identifier) in & need_check_dep {
176176 if let Some ( mgm) = mg. module_graph_module_by_identifier_mut ( module_identifier) {
0 commit comments