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:
@@ -12,7 +12,11 @@ impl RemoteService for GitksService {
|
||||
) -> Result<tonic::Response<FindRemoteRepositoryResponse>, tonic::Status> {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.RemoteService/FindRemoteRepository");
|
||||
let inner = request.into_inner();
|
||||
let span = tracing::info_span!("remote.find_remote_repository", remote_url = %inner.remote_url);
|
||||
let _enter = span.enter();
|
||||
tracing::info!(remote_url = %inner.remote_url, "find_remote_repository");
|
||||
let resp = find_remote_repository(inner).map_err(super::into_status)?;
|
||||
tracing::info!(refs_count = resp.refs.len(), exists = resp.exists, "find_remote_repository done");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(resp))
|
||||
}
|
||||
@@ -23,7 +27,11 @@ impl RemoteService for GitksService {
|
||||
) -> Result<tonic::Response<FindRemoteRootRefResponse>, tonic::Status> {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.RemoteService/FindRemoteRootRef");
|
||||
let inner = request.into_inner();
|
||||
let span = tracing::info_span!("remote.find_remote_root_ref", remote_url = %inner.remote_url);
|
||||
let _enter = span.enter();
|
||||
tracing::info!(remote_url = %inner.remote_url, "find_remote_root_ref");
|
||||
let resp = find_remote_root_ref(inner).map_err(super::into_status)?;
|
||||
tracing::info!(ref_name = %resp.ref_name, target_oid = %resp.target_oid, "find_remote_root_ref done");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(resp))
|
||||
}
|
||||
@@ -34,9 +42,14 @@ impl RemoteService for GitksService {
|
||||
) -> Result<tonic::Response<UpdateRemoteMirrorResponse>, tonic::Status> {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.RemoteService/UpdateRemoteMirror");
|
||||
let inner = request.into_inner();
|
||||
let repo = self.repo_label(inner.repository.as_ref());
|
||||
let span = tracing::info_span!("remote.update_remote_mirror", %repo);
|
||||
let _enter = span.enter();
|
||||
tracing::info!(repo = %repo, remote_url = %inner.remote_url, force = inner.force, prune = inner.prune, "update_remote_mirror");
|
||||
let _rate = self.acquire_rate_limit(inner.repository.as_ref()).await?;
|
||||
let gb = self.resolve(inner.repository.as_ref())?;
|
||||
let resp = gb.update_remote_mirror(inner).map_err(super::into_status)?;
|
||||
tracing::info!(ok = resp.ok, "update_remote_mirror done");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(resp))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user