feat(cluster): implement Raft consensus with tracing and HTTP support
- Add Raft log and snapshot mechanisms for distributed consensus - Integrate hyper HTTP server and client libraries for network communication - Enhance tracing capabilities with structured logging and spans - Add dependency tracking for new consensus-related crates - Implement snapshot storage with serialization and persistence - Add remote repository synchronization via Raft commands - Include comprehensive tracing instrumentation across services
This commit is contained in:
@@ -182,8 +182,12 @@ impl diff_service_server::DiffService for GitksService {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.DiffService/RawDiff");
|
||||
let inner = request.into_inner();
|
||||
let _rate = self.acquire_rate_limit(inner.repository.as_ref()).await?;
|
||||
let repo = self.repo_label(inner.repository.as_ref());
|
||||
let span = tracing::info_span!("diff.raw_diff", %repo);
|
||||
let _enter = span.enter();
|
||||
let gb = self.resolve(inner.repository.as_ref())?;
|
||||
let chunks = gb.raw_diff(inner).map_err(into_status)?;
|
||||
tracing::info!(%repo, "raw_diff streaming started");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(into_stream(chunks)))
|
||||
}
|
||||
@@ -195,8 +199,12 @@ impl diff_service_server::DiffService for GitksService {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.DiffService/RawPatch");
|
||||
let inner = request.into_inner();
|
||||
let _rate = self.acquire_rate_limit(inner.repository.as_ref()).await?;
|
||||
let repo = self.repo_label(inner.repository.as_ref());
|
||||
let span = tracing::info_span!("diff.raw_patch", %repo);
|
||||
let _enter = span.enter();
|
||||
let gb = self.resolve(inner.repository.as_ref())?;
|
||||
let chunks = gb.raw_patch(inner).map_err(into_status)?;
|
||||
tracing::info!(%repo, "raw_patch streaming started");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(into_stream(chunks)))
|
||||
}
|
||||
@@ -208,8 +216,12 @@ impl diff_service_server::DiffService for GitksService {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.DiffService/FindChangedPaths");
|
||||
let inner = request.into_inner();
|
||||
let _rate = self.acquire_rate_limit(inner.repository.as_ref()).await?;
|
||||
let repo = self.repo_label(inner.repository.as_ref());
|
||||
let span = tracing::info_span!("diff.find_changed_paths", %repo);
|
||||
let _enter = span.enter();
|
||||
let gb = self.resolve(inner.repository.as_ref())?;
|
||||
let resp = gb.find_changed_paths(inner).map_err(into_status)?;
|
||||
tracing::info!(%repo, paths = resp.paths.len(), "find_changed_paths done");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(resp))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user