diff --git a/services/appflowy-collaborate/src/collab/cache/collab_cache.rs b/services/appflowy-collaborate/src/collab/cache/collab_cache.rs index eeeaf7d1..af1d6230 100644 --- a/services/appflowy-collaborate/src/collab/cache/collab_cache.rs +++ b/services/appflowy-collaborate/src/collab/cache/collab_cache.rs @@ -256,6 +256,35 @@ impl CollabCache { &self, records: Vec, ) -> Result<(), AppError> { - self.disk_cache.batch_insert_collab(records).await + let mem_cache_params: Vec<_> = records + .iter() + .map(|r| { + ( + r.params.object_id.clone(), + r.params.encoded_collab_v1.clone(), + cache_exp_secs_from_collab_type(&r.params.collab_type), + ) + }) + .collect(); + + self.disk_cache.batch_insert_collab(records).await?; + + let mem_cache = self.mem_cache.clone(); + tokio::spawn(async move { + let now = chrono::Utc::now().timestamp(); + for (oid, data, expire) in mem_cache_params { + if let Err(err) = mem_cache + .insert_encode_collab_data(&oid, &data, now, Some(expire)) + .await + { + error!( + "Failed to insert collab `{}` into memory cache: {}", + oid, err + ); + } + } + }); + + Ok(()) } }