我正在运行我在本地开发群集上的服务结构中创建的应用程序。
在调试并查看输出时,其中填充了
Exception thrown: 'System.InvalidOperationException' in Microsoft.ServiceFabric.Data.Impl.dll
Exception thrown: 'System.InvalidOperationException' in Microsoft.ServiceFabric.Data.Impl.dll
Exception thrown: 'System.InvalidOperationException' in Microsoft.ServiceFabric.Data.Impl.dll
Exception thrown: 'System.InvalidOperationException' in Microsoft.ServiceFabric.Data.Impl.dll
Exception thrown: 'System.InvalidOperationException' in Microsoft.ServiceFabric.Data.Impl.dll
Exception thrown: 'System.InvalidOperationException' in Microsoft.ServiceFabric.Data.Impl.dll
Exception thrown: 'System.InvalidOperationException' in Microsoft.ServiceFabric.Data.Impl.dll
Exception thrown: 'System.InvalidOperationException' in Microsoft.ServiceFabric.Data.Impl.dll
一切都是绿色的,我没有找到任何不按预期工作的东西。那么究竟我该怎么做才能找出它是什么InvalidOperation :)?
检查事件日志和诊断事件,不显示任何错误。
答案 0 :(得分:1)
它可能是在SFA内部被捕获和处理的,如果它会很严重,它会被重新抛出,所以我不会太担心它。
可能与本地开发环境有关,并且某些操作在非Azure /本地安装环境中无效。
例如,本地开发环境允许您在一台计算机上模拟5节点集群。由此引起的任何异常都可能被捕获,如果检测到它是非真实世界环境,则可以以不同方式处理。
答案 1 :(得分:0)
我看到了完全相同的东西,但在生产中也同意我并不认为这是一个问题,尽管它会影响性能。
我会在上下文中添加更多内容,以期帮助其他看到相同内容的人。
这里我的代码工作正常,而且我没有看到异常被抛出。
Log.Information("About to record activity for {Machine}", machineId);
using (var tx = StateManager.CreateTransaction())
{
await map.AddOrUpdateAsync(tx, machineId, _ => new SystemInfo { LastSeenUtc = timestampUtc }, (_, info) =>
{
info.LastSeenUtc = timestampUtc;
return info;
}).ConfigureAwait(false);
await tx.CommitAsync().ConfigureAwait(false);
Log.Information("Just committed transaction {Tx}", tx.TransactionId);
}
Log.Information("Recorded activity for {Machine}", machineId);
并使用调试输出窗口。我使用serilog
与Serilog.Sinks.Debug
接收器来捕获输出。
[07:48:27 INF] About to record activity for d6441d45e1834db7860c00a8074652f9
[07:48:27 INF] Just committed transaction 131489813076754311
[07:48:27 INF] Recorded activity for d6441d45e1834db7860c00a8074652f9
Exception thrown: 'System.InvalidOperationException' in Microsoft.ServiceFabric.Data.Impl.dll
Transaction 131489813076754311 is committing or rolling back or has already committed or rolled back
其他一切似乎都很好 - 但抛出异常并不是很好的表现。