dotnet / dotnet/orleans

Multiple Silos on single Host (One Cluster) Not updating database status with UseAdoNetClustering (3.2.2 and 3.7.1)

Open
#8,930 1 comment 2 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.