File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -705,9 +705,13 @@ impl ExtensionManager {
705705 // Loop through each extension and try to read the resource, don't raise an error if the resource is not found
706706 // TODO: do we want to find if a provided uri is in multiple extensions?
707707 // currently it will return the first match and skip any others
708- for extension_name in self . extensions . lock ( ) . await . keys ( ) {
708+
709+ // Collect extension names first to avoid holding the lock during iteration
710+ let extension_names: Vec < String > = self . extensions . lock ( ) . await . keys ( ) . cloned ( ) . collect ( ) ;
711+
712+ for extension_name in extension_names {
709713 let result = self
710- . read_resource_from_extension ( uri, extension_name, cancellation_token. clone ( ) )
714+ . read_resource_from_extension ( uri, & extension_name, cancellation_token. clone ( ) )
711715 . await ;
712716 match result {
713717 Ok ( result) => return Ok ( result) ,
You can’t perform that action at this time.
0 commit comments