diff --git a/src/SuperDumpService/Models/DumpMetainfo.cs b/src/SuperDumpService/Models/DumpMetainfo.cs index eb03891..d80100f 100644 --- a/src/SuperDumpService/Models/DumpMetainfo.cs +++ b/src/SuperDumpService/Models/DumpMetainfo.cs @@ -49,6 +49,9 @@ public enum SDFileType { [Description("Results")] DebugDiagResult, + [Description("Metadata")] + SuperDumpMetaData, + [Description("Logs")] SuperDumpLogfile, diff --git a/src/SuperDumpService/Services/DumpStorageFilebased.cs b/src/SuperDumpService/Services/DumpStorageFilebased.cs index 665cdc1..32f3317 100644 --- a/src/SuperDumpService/Services/DumpStorageFilebased.cs +++ b/src/SuperDumpService/Services/DumpStorageFilebased.cs @@ -138,7 +138,7 @@ private SDFileEntry GetSDFileEntry(DumpMetainfo dumpInfo, FileInfo fileInfo) { return fileEntry; } if (Path.GetFileName(pathHelper.GetDumpMetadataPath(dumpInfo.BundleId, dumpInfo.DumpId)) == fileInfo.Name) { - fileEntry.Type = SDFileType.SuperDumpData; + fileEntry.Type = SDFileType.SuperDumpMetaData; return fileEntry; } if ("windbg.log" == fileInfo.Name) { diff --git a/src/SuperDumpService/Services/SuperDumpRepository.cs b/src/SuperDumpService/Services/SuperDumpRepository.cs index f8da630..f94ee26 100644 --- a/src/SuperDumpService/Services/SuperDumpRepository.cs +++ b/src/SuperDumpService/Services/SuperDumpRepository.cs @@ -70,9 +70,18 @@ public DumpMetainfo GetDump(string bundleId, string dumpId) { public void WipeAllExceptDump(string bundleId, string dumpId) { var dumpdir = pathHelper.GetDumpDirectory(bundleId, dumpId); - var dumpfile = dumpRepo.GetDumpFilePath(bundleId, dumpId); + var knownfiles = dumpRepo.GetFileNames(bundleId, dumpId); foreach (var file in Directory.EnumerateFiles(dumpdir)) { - if (file != dumpfile && file != pathHelper.GetDumpMetadataPath(bundleId, dumpId)) { + bool shallDelete = true; + var match = knownfiles.SingleOrDefault(x => x.FileInfo.FullName == file); + if (match != null) { + shallDelete = match.FileEntry.Type == SDFileType.SuperDumpData + || match.FileEntry.Type == SDFileType.SuperDumpLogfile + || match.FileEntry.Type == SDFileType.DebugDiagResult + || match.FileEntry.Type == SDFileType.CustomTextResult + || match.FileEntry.Type == SDFileType.WinDbg; + } + if (shallDelete) { File.Delete(file); } } @@ -123,7 +132,7 @@ private async Task ProcessZip(string bundleId, FileInfo zipfile) { private async Task ProcessDump(string bundleId, FileInfo file) { // add dump var dumpInfo = await dumpRepo.CreateDump(bundleId, file); - + // add other files within the same directory await IncludeOtherFiles(bundleId, file, dumpInfo); @@ -136,6 +145,8 @@ private async Task IncludeOtherFiles(string bundleId, FileInfo file, DumpMetainf var dir = file.Directory; foreach (var siblingFile in dir.EnumerateFiles()) { if (siblingFile.FullName == file.FullName) continue; // don't add actual dump file twice + if (siblingFile.Name.EndsWith(".dmp", StringComparison.OrdinalIgnoreCase)) continue; // don't include other dumps from same dir + if (siblingFile.Name.EndsWith(".core.gz", StringComparison.OrdinalIgnoreCase)) continue; // don't include other dumps from same dir await dumpRepo.AddFileCopy(bundleId, dumpInfo.DumpId, siblingFile, SDFileType.SiblingFile); } } diff --git a/src/SuperDumpService/Views/Home/Report.cshtml b/src/SuperDumpService/Views/Home/Report.cshtml index fe71fbc..757255b 100644 --- a/src/SuperDumpService/Views/Home/Report.cshtml +++ b/src/SuperDumpService/Views/Home/Report.cshtml @@ -52,7 +52,7 @@