Try fixing orleans server runtime

This commit is contained in:
2025-07-30 20:44:58 +07:00
parent 1071730978
commit 84f3e91dc6
3 changed files with 32 additions and 4 deletions

View File

@@ -287,4 +287,6 @@ app.UseEndpoints(endpoints =>
});
});
app.Run();

View File

@@ -409,7 +409,7 @@ public class LiveTradingBotGrain : Grain<TradingBotGrainState>, ITradingBotGrain
{
try
{
if (_tradingBot == null || State.Status != BotStatus.Up)
if (_tradingBot == null || State.Status != BotStatus.Up || _isDisposed)
{
return;
}
@@ -422,6 +422,12 @@ public class LiveTradingBotGrain : Grain<TradingBotGrainState>, ITradingBotGrain
await SaveBackupToState();
}
catch (ObjectDisposedException)
{
// Gracefully handle disposed service provider during shutdown
_logger.LogInformation("Service provider disposed during shutdown for LiveTradingBotGrain {GrainId}", this.GetPrimaryKey());
return;
}
catch (Exception ex)
{
_logger.LogError(ex, "Error during bot execution cycle for LiveTradingBotGrain {GrainId}", this.GetPrimaryKey());

View File

@@ -45,6 +45,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Orleans.Configuration;
namespace Managing.Bootstrap;
@@ -100,9 +101,22 @@ public static class ApiBootstrap
}
siloBuilder
.ConfigureLogging(logging => logging.SetMinimumLevel(LogLevel.Information))
.UseDashboard(options => { })
.AddMemoryGrainStorageAsDefault()
.ConfigureLogging(logging => logging.SetMinimumLevel(LogLevel.Information));
// Only enable dashboard in development to avoid shutdown issues
if (!isProduction)
{
siloBuilder.UseDashboard(options =>
{
// Configure dashboard with proper shutdown handling
options.Port = 8080;
options.HostSelf = true;
options.CounterUpdateIntervalMs = 10000; // 10 seconds
options.HideTrace = true; // Hide trace to reduce dashboard overhead
});
}
siloBuilder.AddMemoryGrainStorageAsDefault()
.ConfigureServices(services =>
{
// Register existing services for Orleans DI
@@ -112,6 +126,12 @@ public static class ApiBootstrap
services.AddTransient<ITradingService, TradingService>();
services.AddTransient<IMessengerService, MessengerService>();
services.AddTransient<IBackupBotService, BackupBotService>();
})
.Configure<ClusterOptions>(options =>
{
// Configure cluster options
options.ServiceId = "ManagingApp";
options.ClusterId = configuration["ASPNETCORE_ENVIRONMENT"] ?? "Development";
});
})
;