Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SignalR Hubs do not receive messages from server-side senders after silo restarts #117

Open
kehigginbotham opened this issue Sep 24, 2020 · 4 comments

Comments

@kehigginbotham
Copy link

kehigginbotham commented Sep 24, 2020

Related to #99.
Also related to this Orleans issue

Version 1.4.0
Orleans 2.4.1
ADO.NET Membership provider
ADO.NET PubSubStore
ADO.NET GrainStorage

Minimal reproduction:
2+ silos (our prototype environment has 3) and 1+ aspnetcore web API instances. Rolling restart of the silos (only one down at a time). Messages sent via HubContext on server side are inconsistently/not received by aspnetcore web API instances.

Synopsis:
When we perform a rolling restart of our silos, we experience inconsistent behavior from the streams backing the OrleansHubLifetimeManager. Presumably this is because the clients are losing their stream handles (or said stream handles are being lost when the respective silo is restarted).

Contemplations:
I've considered side-chaining a process on each aspnetcore web API instance which receives regular (30 seconds) heartbeats from the server stream - if the heartbeat is not received, action would be taken to re-establish connectivity. However, I'm unsure what action would be necessary, as the internal stream handles in OrleansHubLifetimeManager would be invalid/stale.

Questions:
Is there an idiomatic way to re-establish connectivity with the streams when the silos are restarted, without restarting the aspnetcore web API instance?

@kehigginbotham
Copy link
Author

@stephenlautier @galvesribeiro Any thoughts / workarounds?

@nkosi23
Copy link

nkosi23 commented Oct 6, 2020

Are you using the PubSubStore with persistence as suggested in #99 ?

@kehigginbotham
Copy link
Author

Are you using the PubSubStore with persistence as suggested in #99 ?

We are, we use ADO.NET (SQL Server) for persistence, as suggested in #99

@digisimon
Copy link

digisimon commented Feb 28, 2021

@kehigginbotham

Have you been able to you solve this issue? I noticed the exact same behaviour, messages are not received anymore after scaling down silo instances.

I use AzureTableGrainStorage for PubSub and ORLEANS_SIGNALR_STORAGE_PROVIDER persistence.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants