From ed8d7d9f041025c4b3edc750fae1a4f1d5350a18 Mon Sep 17 00:00:00 2001 From: Derrick Stolee Date: Thu, 3 Jan 2019 11:36:45 -0500 Subject: [PATCH] Move rewrite methods to GitMaintenanceStep --- .../Maintenance/GitMaintenanceStep.cs | 28 +++++++++++++++++++ .../Maintenance/PackfileMaintenanceStep.cs | 20 +++---------- GVFS/GVFS.Common/Maintenance/PostFetchStep.cs | 18 ++---------- 3 files changed, 34 insertions(+), 32 deletions(-) diff --git a/GVFS/GVFS.Common/Maintenance/GitMaintenanceStep.cs b/GVFS/GVFS.Common/Maintenance/GitMaintenanceStep.cs index 4cb30639bf..6bab297bd7 100644 --- a/GVFS/GVFS.Common/Maintenance/GitMaintenanceStep.cs +++ b/GVFS/GVFS.Common/Maintenance/GitMaintenanceStep.cs @@ -182,6 +182,34 @@ protected IEnumerable 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 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() diff --git a/GVFS/GVFS.Common/Maintenance/PackfileMaintenanceStep.cs b/GVFS/GVFS.Common/Maintenance/PackfileMaintenanceStep.cs index 34f1c24c1f..e15a190036 100644 --- a/GVFS/GVFS.Common/Maintenance/PackfileMaintenanceStep.cs +++ b/GVFS/GVFS.Common/Maintenance/PackfileMaintenanceStep.cs @@ -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)); @@ -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(); @@ -167,10 +167,10 @@ 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); @@ -178,17 +178,5 @@ protected override void PerformMaintenance() 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)); - } } } diff --git a/GVFS/GVFS.Common/Maintenance/PostFetchStep.cs b/GVFS/GVFS.Common/Maintenance/PostFetchStep.cs index b5c80a581e..5420bab115 100644 --- a/GVFS/GVFS.Common/Maintenance/PostFetchStep.cs +++ b/GVFS/GVFS.Common/Maintenance/PostFetchStep.cs @@ -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); } } @@ -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); } } }