Skip to content

Commit

Permalink
Avoid unnecessary IServiceProvider access in MembershipGossiper
Browse files Browse the repository at this point in the history
  • Loading branch information
ReubenBond committed Feb 9, 2025
1 parent f280ef2 commit 90230c9
Showing 1 changed file with 20 additions and 27 deletions.
47 changes: 20 additions & 27 deletions src/Orleans.Runtime/MembershipService/MembershipGossiper.cs
Original file line number Diff line number Diff line change
@@ -1,41 +1,34 @@
#nullable enable
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

namespace Orleans.Runtime.MembershipService
namespace Orleans.Runtime.MembershipService;

internal class MembershipGossiper(IServiceProvider serviceProvider, ILogger<MembershipGossiper> logger) : IMembershipGossiper
{
internal class MembershipGossiper : IMembershipGossiper
private MembershipSystemTarget? _membershipSystemTarget;

public Task GossipToRemoteSilos(
List<SiloAddress> gossipPartners,
MembershipTableSnapshot snapshot,
SiloAddress updatedSilo,
SiloStatus updatedStatus)
{
private readonly IServiceProvider serviceProvider;
private readonly ILogger<MembershipGossiper> log;
if (gossipPartners.Count == 0) return Task.CompletedTask;

public MembershipGossiper(IServiceProvider serviceProvider, ILogger<MembershipGossiper> log)
if (logger.IsEnabled(LogLevel.Debug))
{
this.serviceProvider = serviceProvider;
this.log = log;
logger.LogDebug(
"Gossiping {Silo} status {Status} to {NumPartners} partners",
updatedSilo,
updatedStatus,
gossipPartners.Count);
}

public Task GossipToRemoteSilos(
List<SiloAddress> gossipPartners,
MembershipTableSnapshot snapshot,
SiloAddress updatedSilo,
SiloStatus updatedStatus)
{
if (gossipPartners.Count == 0) return Task.CompletedTask;

if (log.IsEnabled(LogLevel.Debug))
{
this.log.LogDebug(
"Gossiping {Silo} status {Status} to {NumPartners} partners",
updatedSilo,
updatedStatus,
gossipPartners.Count);
}

var systemTarget = this.serviceProvider.GetRequiredService<MembershipSystemTarget>();
return systemTarget.GossipToRemoteSilos(gossipPartners, snapshot, updatedSilo, updatedStatus);
}
var systemTarget = _membershipSystemTarget ??= serviceProvider.GetRequiredService<MembershipSystemTarget>();
return systemTarget.GossipToRemoteSilos(gossipPartners, snapshot, updatedSilo, updatedStatus);
}
}

0 comments on commit 90230c9

Please sign in to comment.