Skip to content

Commit

Permalink
Make actor start / stop telemetry descriptors overrideable (#7434)
Browse files Browse the repository at this point in the history
Designed to support petabridge/phobos-issues#82
  • Loading branch information
Aaronontheweb authored Dec 23, 2024
1 parent 61bdebf commit 0a01453
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ namespace Akka.Actor
public void CheckReceiveTimeout(bool reschedule = True) { }
protected void ClearActor(Akka.Actor.ActorBase actor) { }
protected void ClearActorCell() { }
protected virtual Akka.Actor.ActorStarted CreateActorStartedEvent() { }
protected virtual Akka.Actor.ActorStopped CreateActorStoppedEvent() { }
protected virtual Akka.Actor.ActorBase CreateNewActorInstance() { }
[System.ObsoleteAttribute("Use TryGetChildStatsByName [0.7.1]", true)]
public Akka.Actor.IInternalActorRef GetChildByName(string name) { }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ namespace Akka.Actor
public void CheckReceiveTimeout(bool reschedule = True) { }
protected void ClearActor(Akka.Actor.ActorBase actor) { }
protected void ClearActorCell() { }
protected virtual Akka.Actor.ActorStarted CreateActorStartedEvent() { }
protected virtual Akka.Actor.ActorStopped CreateActorStoppedEvent() { }
protected virtual Akka.Actor.ActorBase CreateNewActorInstance() { }
[System.ObsoleteAttribute("Use TryGetChildStatsByName [0.7.1]", true)]
public Akka.Actor.IInternalActorRef GetChildByName(string name) { }
Expand Down
18 changes: 17 additions & 1 deletion src/core/Akka/Actor/ActorCell.DefaultMessages.cs
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,22 @@ public void Restart(Exception cause)
SendSystemMessage(new Recreate(cause));
}

/// <summary>
/// Overrideable in order to support issues such as https://github.com/petabridge/phobos-issues/issues/82
/// </summary>
protected virtual ActorStarted CreateActorStartedEvent()
{
return new ActorStarted(Self, Props.Type);
}

/// <summary>
/// Overrideable in order to support issues such as https://github.com/petabridge/phobos-issues/issues/82
/// </summary>
protected virtual ActorStopped CreateActorStoppedEvent()
{
return new ActorStopped(Self, Props.Type);
}

private void Create(Exception failure)
{
if (failure != null)
Expand All @@ -442,7 +458,7 @@ private void Create(Exception failure)
if (System.Settings.DebugLifecycle)
Publish(new Debug(Self.Path.ToString(), created.GetType(), "Started (" + created + ")"));
if(System.Settings.EmitActorTelemetry)
System.EventStream.Publish(new ActorStarted(Self, Props.Type));
System.EventStream.Publish(CreateActorStartedEvent());
}
catch (Exception e)
{
Expand Down
2 changes: 1 addition & 1 deletion src/core/Akka/Actor/ActorCell.FaultHandling.cs
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ private void FinishTerminate()
}

if(System.Settings.EmitActorTelemetry)
System.EventStream.Publish(new ActorStopped(Self, Props.Type));
System.EventStream.Publish(CreateActorStoppedEvent());
}
catch (Exception x)
{
Expand Down

0 comments on commit 0a01453

Please sign in to comment.