diff --git a/src/Akka.Hosting.Tests/RequiredActorSpecs.cs b/src/Akka.Hosting.Tests/RequiredActorSpecs.cs index c52a9dd2..3f99e314 100644 --- a/src/Akka.Hosting.Tests/RequiredActorSpecs.cs +++ b/src/Akka.Hosting.Tests/RequiredActorSpecs.cs @@ -138,4 +138,37 @@ public async Task ShouldNotCacheNobodyAfterWhenWaitedForRegistration() // assert cachedActorRef.Should().NotBeOfType(); } + + [Fact] + public async Task ShouldNotCacheNobodyBeforeRegistrationWithSyncActorRef() + { + // arrange + using var host = new HostBuilder() + .ConfigureServices(services => + { + services.AddAkka("MySys", (builder, _) => + { + builder.WithActors((system, registry) => + { + var actor = system.ActorOf(Props.Create(() => new MyActorType()), "myactor"); + registry.Register(actor); + }); + }); + }) + .Build(); + + var myRequiredActor = host.Services.GetRequiredService>(); + + Action shouldThrow = () => _ = myRequiredActor.ActorRef; + + shouldThrow.Should().Throw(); + + await host.StartAsync(); + + // act + var cachedActorRef = await myRequiredActor.GetAsync(); + + // assert + cachedActorRef.Should().NotBeOfType(); + } } \ No newline at end of file diff --git a/src/Akka.Hosting/ActorRegistry.cs b/src/Akka.Hosting/ActorRegistry.cs index 017eebc2..62870a29 100644 --- a/src/Akka.Hosting/ActorRegistry.cs +++ b/src/Akka.Hosting/ActorRegistry.cs @@ -62,9 +62,9 @@ public IActorRef ActorRef return _internalRef; // attempt 2 - synchronously check the registry (fast path) - if (_registry.TryGet(out _internalRef)) + if (_registry.TryGet(out var internalRef)) { - return _internalRef; + return _internalRef = internalRef; }