WIP

Antonio Scandurra created

Change summary

crates/collab/src/db.rs  | 20 +++++++++++++++++---
crates/collab/src/rpc.rs |  6 ++++++
2 files changed, 23 insertions(+), 3 deletions(-)

Detailed changes

crates/collab/src/db.rs 🔗

@@ -231,9 +231,23 @@ impl Database {
         .await
     }
 
-    fn delete_stale_servers(&self, environment: &str, new_epoch: ServerEpoch) -> Result<()> {
-        self.transaction(|tx| async {
-            server::Entity::delete_many().filter(Condition::all().add())
+    pub async fn delete_stale_servers(
+        &self,
+        new_epoch: ServerEpoch,
+        environment: &str,
+    ) -> Result<()> {
+        self.transaction(|tx| async move {
+            server::Entity::delete_many()
+                .filter(
+                    Condition::all().add(
+                        server::Column::Environment
+                            .eq(environment)
+                            .add(server::Column::Epoch.ne(new_epoch)),
+                    ),
+                )
+                .exec(&*tx)
+                .await?;
+            Ok(())
         })
         .await
     }

crates/collab/src/rpc.rs 🔗

@@ -351,6 +351,12 @@ impl Server {
                         }
                     }
                 }
+
+                app_state
+                    .db
+                    .delete_stale_servers(epoch, &app_state.config.zed_environment)
+                    .await
+                    .trace_err();
             }
             .instrument(span),
         );