chore: post merge fixes
This commit is contained in:
parent
401cc3ad25
commit
06b7ce0a29
|
|
@ -79,6 +79,7 @@ impl CollabGroup {
|
||||||
metrics: Arc<CollabRealtimeMetrics>,
|
metrics: Arc<CollabRealtimeMetrics>,
|
||||||
storage: Arc<S>,
|
storage: Arc<S>,
|
||||||
is_new_collab: bool,
|
is_new_collab: bool,
|
||||||
|
collab_redis_stream: Arc<CollabRedisStream>,
|
||||||
persistence_interval: Duration,
|
persistence_interval: Duration,
|
||||||
prune_grace_period: Duration,
|
prune_grace_period: Duration,
|
||||||
indexer: Option<Arc<dyn Indexer>>,
|
indexer: Option<Arc<dyn Indexer>>,
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ use access_control::collab::RealtimeAccessControl;
|
||||||
use app_error::AppError;
|
use app_error::AppError;
|
||||||
use collab_rt_entity::user::RealtimeUser;
|
use collab_rt_entity::user::RealtimeUser;
|
||||||
use collab_rt_entity::CollabMessage;
|
use collab_rt_entity::CollabMessage;
|
||||||
|
use collab_stream::client::CollabRedisStream;
|
||||||
use database::collab::{CollabStorage, GetCollabOrigin};
|
use database::collab::{CollabStorage, GetCollabOrigin};
|
||||||
use database_entity::dto::QueryCollabParams;
|
use database_entity::dto::QueryCollabParams;
|
||||||
|
|
||||||
|
|
@ -28,6 +28,7 @@ pub struct GroupManager<S> {
|
||||||
storage: Arc<S>,
|
storage: Arc<S>,
|
||||||
access_control: Arc<dyn RealtimeAccessControl>,
|
access_control: Arc<dyn RealtimeAccessControl>,
|
||||||
metrics_calculate: Arc<CollabRealtimeMetrics>,
|
metrics_calculate: Arc<CollabRealtimeMetrics>,
|
||||||
|
collab_redis_stream: Arc<CollabRedisStream>,
|
||||||
persistence_interval: Duration,
|
persistence_interval: Duration,
|
||||||
prune_grace_period: Duration,
|
prune_grace_period: Duration,
|
||||||
indexer_provider: Arc<IndexerProvider>,
|
indexer_provider: Arc<IndexerProvider>,
|
||||||
|
|
@ -42,15 +43,18 @@ where
|
||||||
storage: Arc<S>,
|
storage: Arc<S>,
|
||||||
access_control: Arc<dyn RealtimeAccessControl>,
|
access_control: Arc<dyn RealtimeAccessControl>,
|
||||||
metrics_calculate: Arc<CollabRealtimeMetrics>,
|
metrics_calculate: Arc<CollabRealtimeMetrics>,
|
||||||
|
collab_stream: CollabRedisStream,
|
||||||
persistence_interval: Duration,
|
persistence_interval: Duration,
|
||||||
prune_grace_period: Duration,
|
prune_grace_period: Duration,
|
||||||
indexer_provider: Arc<IndexerProvider>,
|
indexer_provider: Arc<IndexerProvider>,
|
||||||
) -> Result<Self, RealtimeError> {
|
) -> Result<Self, RealtimeError> {
|
||||||
|
let collab_stream = Arc::new(collab_stream);
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
state: GroupManagementState::new(metrics_calculate.clone()),
|
state: GroupManagementState::new(metrics_calculate.clone()),
|
||||||
storage,
|
storage,
|
||||||
access_control,
|
access_control,
|
||||||
metrics_calculate,
|
metrics_calculate,
|
||||||
|
collab_redis_stream: collab_stream,
|
||||||
persistence_interval,
|
persistence_interval,
|
||||||
prune_grace_period,
|
prune_grace_period,
|
||||||
indexer_provider,
|
indexer_provider,
|
||||||
|
|
@ -143,28 +147,6 @@ where
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let result = load_collab(user.uid, object_id, params, self.storage.clone()).await;
|
|
||||||
let (collab, _encode_collab) = {
|
|
||||||
let (mut collab, encode_collab) = match result {
|
|
||||||
Ok(value) => value,
|
|
||||||
Err(err) => {
|
|
||||||
if err.is_record_not_found() {
|
|
||||||
is_new_collab = true;
|
|
||||||
let collab = Collab::new_with_origin(CollabOrigin::Server, object_id, vec![], false);
|
|
||||||
let encode_collab = collab.encode_collab_v1(|_| Ok::<_, RealtimeError>(()))?;
|
|
||||||
(collab, encode_collab)
|
|
||||||
} else {
|
|
||||||
return Err(RealtimeError::CreateGroupFailed(
|
|
||||||
CreateGroupFailedReason::CannotGetCollabData,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
collab.initialize();
|
|
||||||
encode_collab
|
|
||||||
};
|
|
||||||
|
|
||||||
trace!(
|
trace!(
|
||||||
"[realtime]: create group: uid:{},workspace_id:{},object_id:{}:{}",
|
"[realtime]: create group: uid:{},workspace_id:{},object_id:{}:{}",
|
||||||
user.uid,
|
user.uid,
|
||||||
|
|
@ -193,6 +175,7 @@ where
|
||||||
self.metrics_calculate.clone(),
|
self.metrics_calculate.clone(),
|
||||||
self.storage.clone(),
|
self.storage.clone(),
|
||||||
is_new_collab,
|
is_new_collab,
|
||||||
|
self.collab_redis_stream.clone(),
|
||||||
self.persistence_interval,
|
self.persistence_interval,
|
||||||
self.prune_grace_period,
|
self.prune_grace_period,
|
||||||
indexer,
|
indexer,
|
||||||
|
|
|
||||||
|
|
@ -128,18 +128,6 @@ impl GroupManagementState {
|
||||||
error!("Group for object_id:{} not found", object_id);
|
error!("Group for object_id:{} not found", object_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Err(err) = self
|
|
||||||
.control_event_stream
|
|
||||||
.lock()
|
|
||||||
.await
|
|
||||||
.insert_message(CollabControlEvent::Close {
|
|
||||||
object_id: object_id.to_string(),
|
|
||||||
})
|
|
||||||
.await
|
|
||||||
{
|
|
||||||
error!("Failed to insert close event to control stream: {}", err);
|
|
||||||
}
|
|
||||||
|
|
||||||
self
|
self
|
||||||
.metrics_calculate
|
.metrics_calculate
|
||||||
.opening_collab_count
|
.opening_collab_count
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ use std::time::Duration;
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use dashmap::mapref::entry::Entry;
|
use dashmap::mapref::entry::Entry;
|
||||||
use dashmap::DashMap;
|
use dashmap::DashMap;
|
||||||
|
use redis::aio::ConnectionManager;
|
||||||
use tokio::sync::Notify;
|
use tokio::sync::Notify;
|
||||||
use tokio::time::interval;
|
use tokio::time::interval;
|
||||||
use tracing::{error, info, trace};
|
use tracing::{error, info, trace};
|
||||||
|
|
@ -52,7 +53,7 @@ where
|
||||||
metrics: Arc<CollabRealtimeMetrics>,
|
metrics: Arc<CollabRealtimeMetrics>,
|
||||||
command_recv: CLCommandReceiver,
|
command_recv: CLCommandReceiver,
|
||||||
redis_stream_router: Arc<StreamRouter>,
|
redis_stream_router: Arc<StreamRouter>,
|
||||||
redis_connection_manager: RedisConnectionManager,
|
redis_connection_manager: ConnectionManager,
|
||||||
group_persistence_interval: Duration,
|
group_persistence_interval: Duration,
|
||||||
prune_grace_period: Duration,
|
prune_grace_period: Duration,
|
||||||
indexer_provider: Arc<IndexerProvider>,
|
indexer_provider: Arc<IndexerProvider>,
|
||||||
|
|
@ -75,6 +76,7 @@ where
|
||||||
storage.clone(),
|
storage.clone(),
|
||||||
access_control.clone(),
|
access_control.clone(),
|
||||||
metrics.clone(),
|
metrics.clone(),
|
||||||
|
collab_stream,
|
||||||
group_persistence_interval,
|
group_persistence_interval,
|
||||||
prune_grace_period,
|
prune_grace_period,
|
||||||
indexer_provider.clone(),
|
indexer_provider.clone(),
|
||||||
|
|
|
||||||
|
|
@ -135,7 +135,9 @@ pub async fn run_actix_server(
|
||||||
rt_cmd_recv,
|
rt_cmd_recv,
|
||||||
state.redis_stream_router.clone(),
|
state.redis_stream_router.clone(),
|
||||||
state.redis_connection_manager.clone(),
|
state.redis_connection_manager.clone(),
|
||||||
Duration::from_secs(config.collab.group_persistence_interval_secs)
|
Duration::from_secs(config.collab.group_persistence_interval_secs),
|
||||||
|
Duration::from_secs(config.collab.group_prune_grace_period_secs),
|
||||||
|
state.indexer_provider.clone(),
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue