diff --git a/src/Managing.Application.Abstractions/Grains/IPriceFetcherGrain.cs b/src/Managing.Application.Abstractions/Grains/IPriceFetcherGrain.cs
index b80795cd..b4afc9f8 100644
--- a/src/Managing.Application.Abstractions/Grains/IPriceFetcherGrain.cs
+++ b/src/Managing.Application.Abstractions/Grains/IPriceFetcherGrain.cs
@@ -13,6 +13,5 @@ public interface IPriceFetcherGrain : IGrainWithStringKey
/// Fetches price data for all supported exchange/ticker combinations
/// and publishes new candles to their respective streams.
///
- /// True if the operation completed successfully, false otherwise
- Task FetchAndPublishPricesAsync();
-}
+ Task FetchAndPublishPricesAsync();
+}
\ No newline at end of file
diff --git a/src/Managing.Application/Bots/BotReminderInitializer.cs b/src/Managing.Application/Bots/BotReminderInitializer.cs
new file mode 100644
index 00000000..3a9fd264
--- /dev/null
+++ b/src/Managing.Application/Bots/BotReminderInitializer.cs
@@ -0,0 +1,5 @@
+namespace Managing.Application.Bots;
+
+public class BotReminderInitializer
+{
+}
\ No newline at end of file
diff --git a/src/Managing.Application/Grains/GeneticBacktestGrain.cs b/src/Managing.Application/Grains/GeneticBacktestGrain.cs
index 3a1cdad2..2405cdab 100644
--- a/src/Managing.Application/Grains/GeneticBacktestGrain.cs
+++ b/src/Managing.Application/Grains/GeneticBacktestGrain.cs
@@ -52,7 +52,8 @@ public class GeneticBacktestGrain : Grain, IGeneticBacktestGrain
request.Status = GeneticRequestStatus.Running;
await geneticService.UpdateGeneticRequestAsync(request);
- request.User.Accounts = await ServiceScopeHelpers.WithScopedService>(_scopeFactory,
+ request.User.Accounts = await ServiceScopeHelpers.WithScopedService>(
+ _scopeFactory,
async accountService => (await accountService.GetAccountsByUserAsync(request.User)).ToList());
// Run GA
@@ -70,7 +71,8 @@ public class GeneticBacktestGrain : Grain, IGeneticBacktestGrain
}
catch (Exception ex)
{
- _logger.LogError(ex, "[GeneticBacktestGrain] Error processing request {RequestId}", requestId);
+ SentrySdk.CaptureException(ex);
+
try
{
using var scope = _scopeFactory.CreateScope();
diff --git a/src/Managing.Application/Grains/PriceFetcherGrain.cs b/src/Managing.Application/Grains/PriceFetcherGrain.cs
index 5f3133b9..a5669001 100644
--- a/src/Managing.Application/Grains/PriceFetcherGrain.cs
+++ b/src/Managing.Application/Grains/PriceFetcherGrain.cs
@@ -81,12 +81,10 @@ public class PriceFetcherGrain : Grain, IPriceFetcherGrain, IRemindable
await base.OnDeactivateAsync(reason, cancellationToken);
}
- public async Task FetchAndPublishPricesAsync()
+ public async Task FetchAndPublishPricesAsync()
{
try
{
- _logger.LogInformation("Starting {timeframe} price fetch cycle", TargetTimeframe);
-
var fetchTasks = new List();
// Create fetch tasks for all exchange/ticker combinations for the target timeframe
@@ -100,16 +98,11 @@ public class PriceFetcherGrain : Grain, IPriceFetcherGrain, IRemindable
// Execute all fetch operations in parallel
await Task.WhenAll(fetchTasks);
-
- _logger.LogInformation("{0} - Completed {1} price fetch cycle for {2} combinations",
- nameof(PriceFetcherGrain), TargetTimeframe, fetchTasks.Count);
-
- return true;
}
catch (Exception ex)
{
_logger.LogError(ex, "Error during price fetch cycle for timeframe {Timeframe}", TargetTimeframe);
- return false;
+ SentrySdk.CaptureException(ex);
}
}
@@ -185,6 +178,7 @@ public class PriceFetcherGrain : Grain, IPriceFetcherGrain, IRemindable
{
_logger.LogError(ex, "Error fetching prices for {Exchange}-{Ticker}-{Timeframe}",
exchange, ticker, timeframe);
+ SentrySdk.CaptureException(ex);
}
}