Multiple Silos on single Host (One Cluster) Not updating database status with UseAdoNetClustering (3.2.2 and 3.7.1)
- Dominant language
- C#
- Stars
- 10.9k
- Forks
- 2.1k
- Avg merge
- 14h 42m
- Merged PRs (30d)
- 354
Description
Dear Orleans Team,
I hope this message finds you well.
**Problem description**-
- Orleans Version - 3.2.2/3.7.1
- Our software isn't deployed to the cloud
- We currently run a single service per deployment, which hosts an Orleans cluster containing a single silo
- Our intention is to scale this out so that we can have multiple services per deployment, each containing one Orleans silo which are all part of a single cluster.
var **invariant** = "System.Data.SqlClient"; // for Microsoft SQL Server
var **connectionString** = " Data Source= .;Initial Catalog=Clustering;Integrated Security=True;Pooling=False;Max Pool Size=200;MultipleActiveResultSets=True";
**SILO Host Config**--
// Define the cluster configuration
var builder = new SiloHostBuilder()
.Configure(options =>
{
options.ClusterId = "dev"; // Unique ID for the Orleans cluster
options.ServiceId = "SiloHostService"; // Unique ID for your application
})
.ConfigureEndpoints(siloPort: 11112, gatewayPort: 22223)
//ADODOTNET Clustering
.UseAdoNetClustering(options =>
{
options.Invariant = invariant;
options.ConnectionString = connectionString;
})
.UseDashboard(options => { })
this._siloHost = builder.Build();
**Client Config** --
var clientBuilder = new ClientBuilder()
.Configure(options =>
{
options.ClusterId = "dev"; // Unique ID for the Orleans cluster
options.ServiceId = "SiloHostService"; // Unique ID for your application
})
//ADONETclustering
.UseAdoNetClustering(options =>
{
options.Invariant = invariant;
options.ConnectionString = connectionString;
})
1. We have two windows services (Silos) with different Silo ports and Gateway Ports running on the same localhost/Machine, along with one Web application/website tied to one of the Services mentioned.
2. Both windows services started normally , We are able to see both Silos running on OrleansDashboard with Orleans 3.2.2 activated grain using AdoNetClustering method. **OrleansDashboard not supported with 3.7.1.**
- If all silos are stopped, the status of the last one is not updated in the membership table (it remains at 3). This prevents other silos from being restarted - how can this be resolved?
- observed issue in silo status update in membership table.
Contributor guide
Research direction
Start by reproducing the issue with the two Windows services configured with UseAdoNetClustering and the shared SQL Server membership table. Inspect how silo shutdown status is written when both silos run on one host, then verify that stopping the last silo updates its membership status and permits the silos to restart.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, sql
- Domain
- backend, databases, distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100