我在激活谷物时遇到问题。我成功地建立了筒仓,但是grain激活抛出了TaskCanceledException。
以下日志可能有助于理解问题:
[Error] Orleans.Grain: Error activating grain [Activation: S192.168.1.33:10025:58975009/Placement=RandomPlacement State=Activating]
System.Threading.Tasks.TaskCanceledException: Timed out waiting for OnActivateAsync to complete
---> System.Threading.Tasks.TaskCanceledException: A task was canceled.
at Orleans.Internal.OrleansTaskExtentions.MakeCancellable(Task task, CancellationToken cancellationToken) in /_/src/Orleans.Core/Async/TaskExtensions.cs:line 188
at Orleans.Internal.OrleansTaskExtentions.WithCancellation(Task taskToComplete, String message, CancellationToken cancellationToken) in /_/src/Orleans.Core/Async/TaskExtensions.cs:line 145
[Error] Orleans.Runtime.GrainDirectory.ClientDirectory: Exception publishing client routing table to silo
Orleans.Runtime.OrleansMessageRejectionException: The target silo is no longer active: target was ......(silo details).. but this silo is ......(silo details)... The rejected message is Request [......(silo details).. Orleans.Runtime.GrainDirectory.IRemoteClientDirectory.OnUpdateClientRoutes(System.Collections.Immutable.ImmutableDictionary`2[Orleans.Runtime.SiloAddress,System.ValueTuple`2[System.Collections.Immutable.ImmutableHashSet`1[Orleans.Runtime.GrainId],System.Int64]]) #2.
at Orleans.Serialization.Invocation.ResponseCompletionSource.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) in /_/src/Orleans.Serialization/Invocation/ResponseCompletionSource.cs:line 98
at System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c.<.cctor>b__4_0(Object state)
--- End of stack trace from previous location ---
我的猜测是我的谷物无法与筒仓通信。
尝试过的场景:
1.配置 Host Builder 时,将 Grain 的 ActivationTimeout 更改为 3 分钟(默认为 2 分钟)。
2.检查长时间运行的应用程序的 OnActivateAsync 方法。
请帮忙解决这个问题。
您可以分享一些代码重现来澄清问题吗?这很大程度上表明存在某种异步/等待错误,因为它正在超时。