diff --git a/Aaru.CommonTypes/PluginRegister.cs b/Aaru.CommonTypes/PluginRegister.cs index bd77be727..7fe4135ca 100644 --- a/Aaru.CommonTypes/PluginRegister.cs +++ b/Aaru.CommonTypes/PluginRegister.cs @@ -257,7 +257,8 @@ public class PluginRegister /// The filter that allows reading the specified path public IFilter GetFilter(string path) { - IFilter noFilter = null; + ITransactionTracer transaction = SentrySdk.StartTransaction("GetPlugin", "DetectFilter"); + IFilter noFilter = null; foreach(IFilter filter in Filters.Values) { @@ -269,7 +270,12 @@ public class PluginRegister var foundFilter = (IFilter)filter.GetType().GetConstructor(Type.EmptyTypes)?.Invoke([]); - if(foundFilter?.Open(path) == ErrorNumber.NoError) return foundFilter; + if(foundFilter?.Open(path) == ErrorNumber.NoError) + { + transaction.Finish(); + + return foundFilter; + } } else noFilter = filter; @@ -281,10 +287,17 @@ public class PluginRegister } } - if(!noFilter?.Identify(path) == true) return null; + if(!noFilter?.Identify(path) == true) + { + transaction.Finish(); + + return null; + } noFilter?.Open(path); + transaction.Finish(); + return noFilter; } } \ No newline at end of file diff --git a/Aaru.Core/ArchiveFormat.cs b/Aaru.Core/ArchiveFormat.cs index cdc693472..9ab8276f2 100644 --- a/Aaru.Core/ArchiveFormat.cs +++ b/Aaru.Core/ArchiveFormat.cs @@ -48,6 +48,8 @@ public static class ArchiveFormat /// Detected archive plugin public static IArchive Detect(IFilter archiveFilter) { + ITransactionTracer transaction = SentrySdk.StartTransaction("GetPlugin", "DetectArchive"); + try { PluginRegister plugins = PluginRegister.Singleton; @@ -76,12 +78,16 @@ public static class ArchiveFormat } // Not recognized + transaction.Finish(); + return format; } catch(Exception ex) { SentrySdk.CaptureException(ex); + transaction.Finish(); + return null; } } diff --git a/Aaru.Core/Filesystems.cs b/Aaru.Core/Filesystems.cs index e056e0e2d..09f96cf8f 100644 --- a/Aaru.Core/Filesystems.cs +++ b/Aaru.Core/Filesystems.cs @@ -36,6 +36,7 @@ using System.Linq; using Aaru.CommonTypes; using Aaru.CommonTypes.Interfaces; using Aaru.Logging; +using Sentry; namespace Aaru.Core; @@ -53,7 +54,8 @@ public static class Filesystems public static void Identify(IMediaImage imagePlugin, out List idPlugins, Partition partition, bool getGuid = false) { - PluginRegister plugins = PluginRegister.Singleton; + ITransactionTracer transaction = SentrySdk.StartTransaction("GetPlugin", "DetectFilesystem"); + PluginRegister plugins = PluginRegister.Singleton; idPlugins = []; @@ -66,13 +68,12 @@ public static class Filesystems } catch(Exception ex) { - AaruLogging - .Error(Localization.Core.Filesystems_Identify_Error, - plugin.Name); + AaruLogging.Error(Localization.Core.Filesystems_Identify_Error, plugin.Name); - AaruLogging.Exception(ex, Localization.Core.Filesystems_Identify_Error, - plugin.Name); + AaruLogging.Exception(ex, Localization.Core.Filesystems_Identify_Error, plugin.Name); } } + + transaction.Finish(); } } \ No newline at end of file diff --git a/Aaru.Core/ImageFormat.cs b/Aaru.Core/ImageFormat.cs index bd7dbb9bc..9de2b1a65 100644 --- a/Aaru.Core/ImageFormat.cs +++ b/Aaru.Core/ImageFormat.cs @@ -48,6 +48,8 @@ public static class ImageFormat /// Detected image plugin public static IBaseImage Detect(IFilter imageFilter) { + ITransactionTracer transaction = SentrySdk.StartTransaction("GetPlugin", "DetectImageFormat"); + try { PluginRegister plugins = PluginRegister.Singleton; @@ -102,7 +104,12 @@ public static class ImageFormat } } - if(imageFormat != null) return imageFormat; + if(imageFormat != null) + { + transaction.Finish(); + + return imageFormat; + } // Check only RAW plugin foreach(IMediaImage imagePlugin in plugins.MediaImages.Values) @@ -128,12 +135,16 @@ public static class ImageFormat } // Still not recognized + transaction.Finish(); + return imageFormat; } catch(Exception ex) { SentrySdk.CaptureException(ex); + transaction.Finish(); + return null; } }