fix: update redis cache when inserting collabs in batches

This commit is contained in:
Bartosz Sypytkowski 2024-12-10 10:06:48 +01:00
parent 813179fdb0
commit 9971c23749
1 changed files with 30 additions and 1 deletions

View File

@ -256,6 +256,35 @@ impl CollabCache {
&self,
records: Vec<PendingCollabWrite>,
) -> 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(())
}
}