Exception while calling IQueueAdapter.CreateNewReceiver. System.NullReferenceException: Object reference not set to an instance of an object. at OrleansAWSUtils.Storage.SQSStorage.CreateClient() in D:\build\agent\_work\23\s\src\AWS\Orleans.Streaming.SQS\Storage\SQSStorage.cs:line 86 at OrleansAWSUtils.Streams.SQSAdapterReceiver.Create(SerializationManager serializationManager, ILoggerFactory loggerFactory, QueueId queueId, String dataConnectionString, String serviceId) in D:\build\agent\_work\23\s\src\AWS\Orleans.Streaming.SQS\Streams\SQSAdapterReceiver.cs:line 30 at OrleansAWSUtils.Streams.SQSAdapter.CreateReceiver(QueueId queueId) in D:\build\agent\_work\23\s\src\AWS\Orleans.Streaming.SQS\Streams\SQSAdapter.cs:line 39 at Orleans.Streams.PersistentStreamPullingAgent.InitializeInternal(IQueueAdapter qAdapter, IQueueAdapterCache queueAdapterCache, IStreamFailureHandler failureHandler) in D:\build\agent\_work\23\s\src\Orleans.Runtime\Streams\PersistentStream\PersistentStreamPullingAgent.cs:line 107
My question about tools for some kind on deployment help features like "suspend" cluster, when all grains deactivating and save state and no one new created, because now i implementing it for Blue-Green deploy in k8s, we has many inputs(HTTP, message bus) so can not use builtin k8s features for HTTP only
I'd like to understand this more - could you open an issue so we can discuss?
I assume pluggable grain directory would bring some out of the box options that would allow, for example, to guarantee a single activation for a certain grain instance... is that correct?
It's certainly a step in that direction. There would need to be an active deactivation protocol or leasing mechanism to give strong guarantees (because a silo might not know that it's been declared dead, for example, and a grain could still be processing some long-running request, etc)
Presumably you've checked that having string ids doesn't hit performance? Non-fixed size sounds like memory overhead and trouble.
Yes, they cheap and internable (poolable). There is a mechanism for amortizing allocations even when they're frequently sent over the wire.