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:
@@ -283,8 +283,12 @@ impl commit_service_server::CommitService for GitksService {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.CommitService/FindCommit");
|
||||
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!("commit.find_commit", %repo);
|
||||
let _enter = span.enter();
|
||||
let gb = self.resolve(inner.repository.as_ref())?;
|
||||
let resp = gb.find_commit(inner).map_err(into_status)?;
|
||||
tracing::info!(%repo, "find_commit done");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(resp))
|
||||
}
|
||||
@@ -296,8 +300,12 @@ impl commit_service_server::CommitService for GitksService {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.CommitService/ListCommitsByOid");
|
||||
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!("commit.list_commits_by_oid", %repo);
|
||||
let _enter = span.enter();
|
||||
let gb = self.resolve(inner.repository.as_ref())?;
|
||||
let resp = gb.list_commits_by_oid(inner).map_err(into_status)?;
|
||||
tracing::info!(%repo, count = resp.commits.len(), "list_commits_by_oid done");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(resp))
|
||||
}
|
||||
@@ -309,8 +317,12 @@ impl commit_service_server::CommitService for GitksService {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.CommitService/CommitIsAncestor");
|
||||
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!("commit.commit_is_ancestor", %repo);
|
||||
let _enter = span.enter();
|
||||
let gb = self.resolve(inner.repository.as_ref())?;
|
||||
let resp = gb.commit_is_ancestor(inner).map_err(into_status)?;
|
||||
tracing::info!(%repo, is_ancestor = resp.is_ancestor, "commit_is_ancestor done");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(resp))
|
||||
}
|
||||
@@ -322,8 +334,12 @@ impl commit_service_server::CommitService for GitksService {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.CommitService/CheckObjectsExist");
|
||||
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!("commit.check_objects_exist", %repo);
|
||||
let _enter = span.enter();
|
||||
let gb = self.resolve(inner.repository.as_ref())?;
|
||||
let resp = gb.check_objects_exist(inner).map_err(into_status)?;
|
||||
tracing::info!(%repo, "check_objects_exist done");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(resp))
|
||||
}
|
||||
@@ -335,8 +351,12 @@ impl commit_service_server::CommitService for GitksService {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.CommitService/CommitsByMessage");
|
||||
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!("commit.commits_by_message", %repo);
|
||||
let _enter = span.enter();
|
||||
let gb = self.resolve(inner.repository.as_ref())?;
|
||||
let resp = gb.commits_by_message(inner).map_err(into_status)?;
|
||||
tracing::info!(%repo, count = resp.commits.len(), "commits_by_message done");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(resp))
|
||||
}
|
||||
@@ -348,8 +368,12 @@ impl commit_service_server::CommitService for GitksService {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.CommitService/GetCommitStats");
|
||||
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!("commit.get_commit_stats", %repo);
|
||||
let _enter = span.enter();
|
||||
let gb = self.resolve(inner.repository.as_ref())?;
|
||||
let resp = gb.get_commit_stats(inner).map_err(into_status)?;
|
||||
tracing::info!(%repo, additions = resp.additions, deletions = resp.deletions, changed_files = resp.changed_files, "get_commit_stats done");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(resp))
|
||||
}
|
||||
@@ -361,8 +385,12 @@ impl commit_service_server::CommitService for GitksService {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.CommitService/LastCommitForPath");
|
||||
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!("commit.last_commit_for_path", %repo);
|
||||
let _enter = span.enter();
|
||||
let gb = self.resolve(inner.repository.as_ref())?;
|
||||
let resp = gb.last_commit_for_path(inner).map_err(into_status)?;
|
||||
tracing::info!(%repo, "last_commit_for_path done");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(resp))
|
||||
}
|
||||
@@ -374,8 +402,12 @@ impl commit_service_server::CommitService for GitksService {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.CommitService/CountCommits");
|
||||
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!("commit.count_commits", %repo);
|
||||
let _enter = span.enter();
|
||||
let gb = self.resolve(inner.repository.as_ref())?;
|
||||
let resp = gb.count_commits(inner).map_err(into_status)?;
|
||||
tracing::info!(%repo, count = resp.count, "count_commits done");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(resp))
|
||||
}
|
||||
@@ -387,8 +419,12 @@ impl commit_service_server::CommitService for GitksService {
|
||||
let m = crate::metrics::RequestMetrics::new("gitks.CommitService/CountDivergingCommits");
|
||||
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!("commit.count_diverging_commits", %repo);
|
||||
let _enter = span.enter();
|
||||
let gb = self.resolve(inner.repository.as_ref())?;
|
||||
let resp = gb.count_diverging_commits(inner).map_err(into_status)?;
|
||||
tracing::info!(%repo, left = resp.left_count, right = resp.right_count, "count_diverging_commits done");
|
||||
m.record("ok");
|
||||
Ok(tonic::Response::new(resp))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user