Esempio n. 1
0
        /// <summary>
        /// Deletes dump files from dumps that are older than the configured retention time.
        /// There is no exception handling because exceptions are visible in Hangfire as opposed to log messages.
        /// </summary>
        private void RemoveOldDumps(DumpMetainfo dump)
        {
            string dumpDirectory = pathHelper.GetDumpDirectory(dump.Id);

            if (!Directory.Exists(dumpDirectory))
            {
                return;
            }
            Console.WriteLine($"[DumpRetention] Deleting dump {dump.BundleId}/{dump.DumpId}");
            // Delete all directories in the dump directory
            foreach (var subdir in Directory.EnumerateDirectories(dumpDirectory))
            {
                Directory.Delete(subdir, true);
            }
            // Delete all dump files in the dump directory
            foreach (var file in Directory.EnumerateFiles(dumpDirectory))
            {
                if (file.EndsWith(".core.gz", StringComparison.OrdinalIgnoreCase) ||
                    file.EndsWith("libs.tar.gz", StringComparison.OrdinalIgnoreCase) ||
                    file.EndsWith(".dmp", StringComparison.OrdinalIgnoreCase))
                {
                    File.Delete(file);
                }
            }
            dumpRepo.UpdateIsDumpAvailable(dump.Id);
        }