Skip to content

Commit

Permalink
Move rewrite methods to GitMaintenanceStep
Browse files Browse the repository at this point in the history
  • Loading branch information
derrickstolee committed Jan 3, 2019
1 parent fcd7ec9 commit ed8d7d9
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 32 deletions.
28 changes: 28 additions & 0 deletions GVFS/GVFS.Common/Maintenance/GitMaintenanceStep.cs
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,34 @@ protected IEnumerable<int> RunningGitProcessIds()
{
Process[] allProcesses = Process.GetProcesses();
return allProcesses.Where(x => x.ProcessName.Equals("git", StringComparison.OrdinalIgnoreCase)).Select(x => x.Id);
}

protected void LogErrorAndRewriteMultiPackIndex(ITracer activity, GitProcess.Result result)
{
EventMetadata errorMetadata = this.CreateEventMetadata();
errorMetadata["MultiPackIndexVerifyOutput"] = result.Output;
errorMetadata["MultiPackIndexVerifyErrors"] = result.Errors;
string multiPackIndexPath = Path.Combine(this.Context.Enlistment.GitPackRoot, "multi-pack-index");
errorMetadata["TryDeleteFileResult"] = this.Context.FileSystem.TryDeleteFile(multiPackIndexPath);

GitProcess.Result rewriteResult = this.RunGitCommand((process) => process.WriteMultiPackIndex(this.Context.Enlistment.GitObjectsRoot));
errorMetadata["RewriteResultExitCode"] = rewriteResult.ExitCode;

activity.RelatedError(errorMetadata, "multi-pack-index is corrupt after write. Deleting and rewriting.");
}

protected void LogErrorAndRewriteCommitGraph(ITracer activity, GitProcess.Result result, List<string> packs)
{
EventMetadata errorMetadata = this.CreateEventMetadata();
errorMetadata["CommitGraphVerifyOutput"] = result.Output;
errorMetadata["CommitGraphVerifyErrors"] = result.Errors;
string commitGraphPath = Path.Combine(this.Context.Enlistment.GitObjectsRoot, "info", "commit-graph");
errorMetadata["TryDeleteFileResult"] = this.Context.FileSystem.TryDeleteFile(commitGraphPath);

GitProcess.Result rewriteResult = this.RunGitCommand((process) => process.WriteCommitGraph(this.Context.Enlistment.GitObjectsRoot, packs));
errorMetadata["RewriteResultExitCode"] = rewriteResult.ExitCode;

activity.RelatedError(errorMetadata, "commit-graph is corrupt after write. Deleting and rewriting.");
}

private void CreateProcessAndRun()
Expand Down
20 changes: 4 additions & 16 deletions GVFS/GVFS.Common/Maintenance/PackfileMaintenanceStep.cs
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ protected override void PerformMaintenance()
GitProcess.Result verifyAfterExpire = this.RunGitCommand((process) => process.VerifyMultiPackIndex(this.Context.Enlistment.GitObjectsRoot));
if (verifyAfterExpire.ExitCodeIsFailure)
{
this.LogErrorAndRewrite(activity, verifyAfterExpire);
this.LogErrorAndRewriteMultiPackIndex(activity, verifyAfterExpire);
}

GitProcess.Result repackResult = this.RunGitCommand((process) => process.MultiPackIndexRepack(this.Context.Enlistment.GitObjectsRoot, this.batchSize));
Expand All @@ -153,7 +153,7 @@ protected override void PerformMaintenance()
GitProcess.Result verifyAfterRepack = this.RunGitCommand((process) => process.VerifyMultiPackIndex(this.Context.Enlistment.GitObjectsRoot));
if (verifyAfterRepack.ExitCodeIsFailure)
{
this.LogErrorAndRewrite(activity, verifyAfterRepack);
this.LogErrorAndRewriteMultiPackIndex(activity, verifyAfterRepack);
}

EventMetadata metadata = new EventMetadata();
Expand All @@ -167,28 +167,16 @@ protected override void PerformMaintenance()
metadata.Add(nameof(afterSize), afterSize);
metadata.Add("ExpireOutput", expireResult.Output);
metadata.Add("ExpireErrors", expireResult.Errors);
metadata.Add("verifyAfterExpire", verifyAfterExpire.ExitCode);
metadata.Add("VerifyAfterExpireExitCode", verifyAfterExpire.ExitCode);
metadata.Add("RepackOutput", repackResult.Output);
metadata.Add("RepackErrors", repackResult.Errors);
metadata.Add("VerifyAfterRepack", verifyAfterRepack.ExitCode);
metadata.Add("VerifyAfterRepackExitCode", verifyAfterRepack.ExitCode);
metadata.Add("NumStaleIdxFiles", staleIdxFiles.Count);
metadata.Add("NumIdxDeletionsBlocked", numDeletionBlocked);
activity.RelatedEvent(EventLevel.Informational, $"{this.Area}_{nameof(this.PerformMaintenance)}", metadata, Keywords.Telemetry);

this.SaveLastRunTimeToFile();
}
}

private void LogErrorAndRewrite(ITracer activity, GitProcess.Result result)
{
EventMetadata errorMetadata = this.CreateEventMetadata();
errorMetadata["MultiPackIndexVerifyOutput"] = result.Output;
errorMetadata["MultiPackIndexVerifyErrors"] = result.Errors;
string multiPackIndexPath = Path.Combine(this.Context.Enlistment.GitPackRoot, "multi-pack-index");
errorMetadata["TryDeleteFileResult"] = this.Context.FileSystem.TryDeleteFile(multiPackIndexPath);
activity.RelatedError(errorMetadata, "multi-pack-index is corrupt after write. Deleting and rewriting.");

this.RunGitCommand((process) => process.WriteMultiPackIndex(this.Context.Enlistment.GitObjectsRoot));
}
}
}
18 changes: 2 additions & 16 deletions GVFS/GVFS.Common/Maintenance/PostFetchStep.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,7 @@ protected override void PerformMaintenance()

if (verifyResult.ExitCodeIsFailure)
{
EventMetadata metadata = this.CreateEventMetadata();
metadata["MultiPackIndexVerifyOutput"] = verifyResult.Output;
metadata["MultiPackIndexVerifyErrors"] = verifyResult.Errors;
string multiPackIndexPath = Path.Combine(this.Context.Enlistment.GitPackRoot, "multi-pack-index");
metadata["TryDeleteFileResult"] = this.Context.FileSystem.TryDeleteFile(multiPackIndexPath);
activity.RelatedError(metadata, "multi-pack-index is corrupt after write. Deleting and rewriting.");

this.RunGitCommand((process) => process.WriteMultiPackIndex(this.Context.Enlistment.GitObjectsRoot));
this.LogErrorAndRewriteMultiPackIndex(activity, verifyResult);
}
}

Expand All @@ -60,14 +53,7 @@ protected override void PerformMaintenance()

if (verifyResult.ExitCodeIsFailure)
{
EventMetadata metadata = this.CreateEventMetadata();
metadata["CommitGraphVerifyOutput"] = verifyResult.Output;
metadata["CommitGraphVerifyErrors"] = verifyResult.Errors;
string commitGraphPath = Path.Combine(this.Context.Enlistment.GitObjectsRoot, "info", "commit-graph");
metadata["TryDeleteFileResult"] = this.Context.FileSystem.TryDeleteFile(commitGraphPath);
activity.RelatedError(metadata, "commit-graph is corrupt after write. Deleting and rewriting.");

this.RunGitCommand((process) => process.WriteCommitGraph(this.Context.Enlistment.GitObjectsRoot, this.packIndexes));
this.LogErrorAndRewriteCommitGraph(activity, verifyResult, this.packIndexes);
}
}
}
Expand Down

0 comments on commit ed8d7d9

Please sign in to comment.