Debounce language server reinstall attempts (#8277)

Thorsten Ball created

I don't think there's value in retrying 4 times as fast as possible,
especially if we might hit the Github API every time to check for the
newest version.

That gets us in rate limit problems quickly.

Release Notes:

- N/A

Change summary

crates/project/src/project.rs | 9 +++++++++
1 file changed, 9 insertions(+)

Detailed changes

crates/project/src/project.rs 🔗

@@ -100,6 +100,7 @@ pub use task_inventory::Inventory;
 pub use worktree::*;
 
 const MAX_SERVER_REINSTALL_ATTEMPT_COUNT: u64 = 4;
+const SERVER_REINSTALL_DEBOUNCE_TIMEOUT: Duration = Duration::from_secs(1);
 const SERVER_LAUNCHING_BEFORE_SHUTDOWN_TIMEOUT: Duration = Duration::from_secs(5);
 
 pub trait Item {
@@ -2877,6 +2878,14 @@ impl Project {
                             return None;
                         }
 
+                        log::info!(
+                            "retrying installation of language server {server_name:?} in {}s",
+                            SERVER_REINSTALL_DEBOUNCE_TIMEOUT.as_secs()
+                        );
+                        cx.background_executor()
+                            .timer(SERVER_REINSTALL_DEBOUNCE_TIMEOUT)
+                            .await;
+
                         let installation_test_binary = adapter
                             .installation_test_binary(container_dir.to_path_buf())
                             .await;