From 061f1e5b9b2f8908a31eea083dd62802b5a97466 Mon Sep 17 00:00:00 2001 From: Reuben Bond <203839+ReubenBond@users.noreply.github.com> Date: Fri, 24 May 2024 06:37:02 -0700 Subject: [PATCH] Avoid changing soon-to-be-deprecated RegisterTimer method return type (#9020) --- src/Orleans.Core.Abstractions/Core/Grain.cs | 2 +- src/Orleans.Core.Abstractions/Timers/ITimerRegistry.cs | 4 ++-- src/Orleans.Runtime/Timers/TimerRegistry.cs | 2 +- test/Grains/TestInternalGrains/TimerGrain.cs | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Orleans.Core.Abstractions/Core/Grain.cs b/src/Orleans.Core.Abstractions/Core/Grain.cs index 5d310bdfff..4da1b9b0eb 100644 --- a/src/Orleans.Core.Abstractions/Core/Grain.cs +++ b/src/Orleans.Core.Abstractions/Core/Grain.cs @@ -95,7 +95,7 @@ protected Grain(IGrainContext grainContext, IGrainRuntime? grainRuntime = null) /// Period of subsequent timer ticks. /// Handle for this Timer. /// - protected IGrainTimer RegisterTimer(Func asyncCallback, object? state, TimeSpan dueTime, TimeSpan period) + protected IDisposable RegisterTimer(Func asyncCallback, object? state, TimeSpan dueTime, TimeSpan period) { if (asyncCallback == null) throw new ArgumentNullException(nameof(asyncCallback)); diff --git a/src/Orleans.Core.Abstractions/Timers/ITimerRegistry.cs b/src/Orleans.Core.Abstractions/Timers/ITimerRegistry.cs index e1341f1e2b..85e44e6bd3 100644 --- a/src/Orleans.Core.Abstractions/Timers/ITimerRegistry.cs +++ b/src/Orleans.Core.Abstractions/Timers/ITimerRegistry.cs @@ -26,7 +26,7 @@ public interface ITimerRegistry /// Specify to disable periodic signaling. /// /// - /// An instance which represents the timer. + /// An instance which represents the timer. /// - IGrainTimer RegisterTimer(IGrainContext grainContext, Func callback, object? state, TimeSpan dueTime, TimeSpan period); + IDisposable RegisterTimer(IGrainContext grainContext, Func callback, object? state, TimeSpan dueTime, TimeSpan period); } \ No newline at end of file diff --git a/src/Orleans.Runtime/Timers/TimerRegistry.cs b/src/Orleans.Runtime/Timers/TimerRegistry.cs index a15ddb5e40..4c06f84b6f 100644 --- a/src/Orleans.Runtime/Timers/TimerRegistry.cs +++ b/src/Orleans.Runtime/Timers/TimerRegistry.cs @@ -10,7 +10,7 @@ internal class TimerRegistry(ILoggerFactory loggerFactory, TimeProvider timeProv private readonly ILogger _timerLogger = loggerFactory.CreateLogger(); private readonly TimeProvider _timeProvider = timeProvider; - public IGrainTimer RegisterTimer(IGrainContext grainContext, Func asyncCallback, object state, TimeSpan dueTime, TimeSpan period) + public IDisposable RegisterTimer(IGrainContext grainContext, Func asyncCallback, object state, TimeSpan dueTime, TimeSpan period) { var timer = new GrainTimer(grainContext, _timerLogger, asyncCallback, state, _timeProvider); grainContext?.GetComponent().OnTimerCreated(timer); diff --git a/test/Grains/TestInternalGrains/TimerGrain.cs b/test/Grains/TestInternalGrains/TimerGrain.cs index df49f13711..730f6e608b 100644 --- a/test/Grains/TestInternalGrains/TimerGrain.cs +++ b/test/Grains/TestInternalGrains/TimerGrain.cs @@ -158,7 +158,7 @@ public Task StartTimer(string name, TimeSpan delay) { logger.LogInformation("StartTimer Name={Name} Delay={Delay}", name, delay); if (timer is not null) throw new InvalidOperationException("Expected timer to be null"); - this.timer = base.RegisterTimer(TimerTick, name, delay, Constants.INFINITE_TIMESPAN); // One shot timer + this.timer = (IGrainTimer)base.RegisterTimer(TimerTick, name, delay, Constants.INFINITE_TIMESPAN); // One shot timer this.timerName = name; return Task.CompletedTask; @@ -169,7 +169,7 @@ public Task StartTimer(string name, TimeSpan delay, string operationType) logger.LogInformation("StartTimer Name={Name} Delay={Delay}", name, delay); if (timer is not null) throw new InvalidOperationException("Expected timer to be null"); var state = Tuple.Create(operationType, name); - this.timer = base.RegisterTimer(TimerTickAdvanced, state, delay, Constants.INFINITE_TIMESPAN); // One shot timer + this.timer = (IGrainTimer)base.RegisterTimer(TimerTickAdvanced, state, delay, Constants.INFINITE_TIMESPAN); // One shot timer this.timerName = name; return Task.CompletedTask;