diff --git a/ProtoActor.sln b/ProtoActor.sln
index 49a9f0ad61..b0457a07da 100644
--- a/ProtoActor.sln
+++ b/ProtoActor.sln
@@ -272,6 +272,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Proto.Cluster.AzureContaine
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Proto.Cluster.SeedNode.Redis", "src\Proto.Cluster.SeedNode.Redis\Proto.Cluster.SeedNode.Redis.csproj", "{BDB67DAB-12F8-4D9F-BF7E-9F5D9E723816}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KubernetesDiagnostics", "benchmarks\KubernetesDiagnostics\KubernetesDiagnostics.csproj", "{5FECD1A8-A873-4927-81C3-E5C5A37D80C5}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -1374,6 +1376,18 @@ Global
{BDB67DAB-12F8-4D9F-BF7E-9F5D9E723816}.Release|x64.Build.0 = Release|Any CPU
{BDB67DAB-12F8-4D9F-BF7E-9F5D9E723816}.Release|x86.ActiveCfg = Release|Any CPU
{BDB67DAB-12F8-4D9F-BF7E-9F5D9E723816}.Release|x86.Build.0 = Release|Any CPU
+ {5FECD1A8-A873-4927-81C3-E5C5A37D80C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5FECD1A8-A873-4927-81C3-E5C5A37D80C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5FECD1A8-A873-4927-81C3-E5C5A37D80C5}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5FECD1A8-A873-4927-81C3-E5C5A37D80C5}.Debug|x64.Build.0 = Debug|Any CPU
+ {5FECD1A8-A873-4927-81C3-E5C5A37D80C5}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5FECD1A8-A873-4927-81C3-E5C5A37D80C5}.Debug|x86.Build.0 = Debug|Any CPU
+ {5FECD1A8-A873-4927-81C3-E5C5A37D80C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5FECD1A8-A873-4927-81C3-E5C5A37D80C5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5FECD1A8-A873-4927-81C3-E5C5A37D80C5}.Release|x64.ActiveCfg = Release|Any CPU
+ {5FECD1A8-A873-4927-81C3-E5C5A37D80C5}.Release|x64.Build.0 = Release|Any CPU
+ {5FECD1A8-A873-4927-81C3-E5C5A37D80C5}.Release|x86.ActiveCfg = Release|Any CPU
+ {5FECD1A8-A873-4927-81C3-E5C5A37D80C5}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1500,6 +1514,7 @@ Global
{E56413ED-8205-4AC1-A7CE-24A2C1711F54} = {9AA2BCF0-19AB-4DD9-8D91-7D188E463806}
{4DF9BBFF-C480-4550-B2BA-6603DAE6BC6F} = {3D12F5E5-9774-4D7E-8A5B-B1F64544925B}
{BDB67DAB-12F8-4D9F-BF7E-9F5D9E723816} = {3D12F5E5-9774-4D7E-8A5B-B1F64544925B}
+ {5FECD1A8-A873-4927-81C3-E5C5A37D80C5} = {0F3AB331-C042-4371-A2F0-0AFDFA13DC9F}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {CD0D1E44-8118-4682-8793-6B20ABFA824C}
diff --git a/benchmarks/KubernetesDiagnostics/.dockerignore b/benchmarks/KubernetesDiagnostics/.dockerignore
deleted file mode 100644
index cd967fc3a2..0000000000
--- a/benchmarks/KubernetesDiagnostics/.dockerignore
+++ /dev/null
@@ -1,25 +0,0 @@
-**/.dockerignore
-**/.env
-**/.git
-**/.gitignore
-**/.project
-**/.settings
-**/.toolstarget
-**/.vs
-**/.vscode
-**/.idea
-**/*.*proj.user
-**/*.dbmdl
-**/*.jfm
-**/azds.yaml
-**/bin
-**/charts
-**/docker-compose*
-**/Dockerfile*
-**/node_modules
-**/npm-debug.log
-**/obj
-**/secrets.dev.yaml
-**/values.dev.yaml
-LICENSE
-README.md
\ No newline at end of file
diff --git a/benchmarks/KubernetesDiagnostics/Dockerfile b/benchmarks/KubernetesDiagnostics/Dockerfile
deleted file mode 100644
index 7c0b92be47..0000000000
--- a/benchmarks/KubernetesDiagnostics/Dockerfile
+++ /dev/null
@@ -1,18 +0,0 @@
-FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
-WORKDIR /app
-
-FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
-WORKDIR /src
-COPY ["KubernetesDiagnostics.csproj", "/src"]
-RUN dotnet restore "/src/KubernetesDiagnostics.csproj"
-COPY . .
-WORKDIR /src
-RUN dotnet build "/src/KubernetesDiagnostics.csproj" -c Release -o /app/build
-
-FROM build AS publish
-RUN dotnet publish "KubernetesDiagnostics.csproj" -c Release -o /app/publish
-
-FROM base AS final
-WORKDIR /app
-COPY --from=publish /app/publish .
-ENTRYPOINT ["dotnet", "KubernetesDiagnostics.dll"]
\ No newline at end of file
diff --git a/benchmarks/KubernetesDiagnostics/Dockerfile-amd64 b/benchmarks/KubernetesDiagnostics/Dockerfile-amd64
deleted file mode 100644
index d8afa03515..0000000000
--- a/benchmarks/KubernetesDiagnostics/Dockerfile-amd64
+++ /dev/null
@@ -1,18 +0,0 @@
-FROM mcr.microsoft.com/dotnet/aspnet:5.0-focal-amd64 AS base
-WORKDIR /app
-
-FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
-WORKDIR /src
-COPY ["KubernetesDiagnostics.csproj", "/src"]
-RUN dotnet restore "/src/KubernetesDiagnostics.csproj"
-COPY . .
-WORKDIR /src
-RUN dotnet build "/src/KubernetesDiagnostics.csproj" -c Release -o /app/build
-
-FROM build AS publish
-RUN dotnet publish "KubernetesDiagnostics.csproj" -c Release -o /app/publish
-
-FROM base AS final
-WORKDIR /app
-COPY --from=publish /app/publish .
-ENTRYPOINT ["dotnet", "KubernetesDiagnostics.dll"]
diff --git a/benchmarks/KubernetesDiagnostics/KubernetesDiagnostics.csproj b/benchmarks/KubernetesDiagnostics/KubernetesDiagnostics.csproj
index 3eb2c4c48b..ef49c265e6 100644
--- a/benchmarks/KubernetesDiagnostics/KubernetesDiagnostics.csproj
+++ b/benchmarks/KubernetesDiagnostics/KubernetesDiagnostics.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/benchmarks/KubernetesDiagnostics/Program.cs b/benchmarks/KubernetesDiagnostics/Program.cs
index e56dddb081..3cb163b141 100644
--- a/benchmarks/KubernetesDiagnostics/Program.cs
+++ b/benchmarks/KubernetesDiagnostics/Program.cs
@@ -33,7 +33,7 @@ public static async Task Main()
var log = Log.CreateLogger("main");
var identity = new PartitionIdentityLookup(TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(2)
- ); // new IdentityStorageLookup(GetRedisId("MyCluster"));
+ );
/*
- name: "REDIS"
@@ -57,10 +57,7 @@ public static async Task Main()
var noOpsProps = Props.FromFunc(ctx => Task.CompletedTask);
var echoKind = new ClusterKind("echo", noOpsProps);
- var system = new ActorSystem(new ActorSystemConfig()
- // .WithDeveloperReceiveLogging(TimeSpan.FromSeconds(1))
- // .WithDeveloperSupervisionLogging(true)
- )
+ var system = new ActorSystem(new ActorSystemConfig())
.WithRemote(GrpcNetRemoteConfig
.BindTo(host, port)
.WithAdvertisedHost(advertisedHost)
@@ -72,21 +69,13 @@ public static async Task Main()
.WithClusterKind(echoKind)
);
- system.EventStream.Subscribe(e => { Console.WriteLine($"{DateTime.Now:O} Gossip update Member {e.MemberId} Key {e.Key}"); }
- );
+ // system.EventStream.Subscribe(e => { Console.WriteLine($"{DateTime.Now:O} Gossip update Member {e.MemberId} Key {e.Key}"); });
system.EventStream.Subscribe(e => {
- var members = e.Members;
- var x = members.Select(m => m.Id).OrderBy(i => i).ToArray();
- var key = string.Join("", x);
- var hash = MurmurHash2.Hash(key);
- Console.WriteLine($"{DateTime.Now:O} My members {hash}");
+ var hash = e.TopologyHash;
- // foreach (var member in members.OrderBy(m => m.Id))
- // {
- // Console.WriteLine(member.Id + "\t" + member.Address + "\t" + member.Kinds);
- // }
+ Console.WriteLine($"{DateTime.Now:O} My members {hash}");
}
);
@@ -97,6 +86,12 @@ public static async Task Main()
await system
.Cluster()
.StartMemberAsync();
+
+ system.Shutdown.Register(() =>
+ {
+ Console.WriteLine("Shutting down...");
+ Environment.Exit(0);
+ });
var props = Props.FromFunc(ctx => Task.CompletedTask);
system.Root.SpawnNamed(props, "dummy");
@@ -105,8 +100,6 @@ await system
while (!cts.IsCancellationRequested)
{
- // var res = await system.Cluster().MemberList.TopologyConsensus(CancellationTokens.FromSeconds(5));
-
var m = system.Cluster().MemberList.GetAllMembers();
var hash = Member.TopologyHash(m);
diff --git a/benchmarks/KubernetesDiagnostics/build-amd64.sh b/benchmarks/KubernetesDiagnostics/build-amd64.sh
deleted file mode 100755
index b926ad7580..0000000000
--- a/benchmarks/KubernetesDiagnostics/build-amd64.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-kubectl delete --filename service.yaml
-docker build . -t rogeralsing/kubdiagg:amd64 -f Dockerfile-amd64
-docker push docker.io/rogeralsing/kubdiagg:amd64
-kubectl apply --filename service-amd64.yaml --namespace rogerroger
\ No newline at end of file
diff --git a/benchmarks/KubernetesDiagnostics/build.sh b/benchmarks/KubernetesDiagnostics/build.sh
index 7f489c3b5e..b2a94dfbb1 100755
--- a/benchmarks/KubernetesDiagnostics/build.sh
+++ b/benchmarks/KubernetesDiagnostics/build.sh
@@ -1,3 +1,6 @@
+docker login
kubectl delete --filename service.yaml
-dotnet publish --os linux -c Release --arch x64 -p:PublishProfile=DefaultContainer
+dotnet publish --os linux -c Release --arch arm64 -p:PublishProfile=DefaultContainer
+docker tag kubernetesdiagnostics:1.0.0 rogeralsing/kubediag
+docker push rogeralsing/kubediag
kubectl apply --filename service.yaml
\ No newline at end of file
diff --git a/benchmarks/KubernetesDiagnostics/service-amd64.yaml b/benchmarks/KubernetesDiagnostics/service-amd64.yaml
deleted file mode 100644
index b1b6ba2504..0000000000
--- a/benchmarks/KubernetesDiagnostics/service-amd64.yaml
+++ /dev/null
@@ -1,86 +0,0 @@
-apiVersion: v1
-kind: ServiceAccount
-metadata:
- name: proto-cluster
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
- name: proto-cluster
- labels:
- app: kubdiag
-rules:
- - apiGroups:
- - ""
- resources:
- - endpoints
- - pods
- - services
- - services/status
- verbs:
- - get
- - list
- - watch
- - patch
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
- name: proto-cluster
- labels:
- app: kubdiag
-roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: Role
- name: proto-cluster
-subjects:
- - kind: ServiceAccount
- name: proto-cluster
----
-apiVersion: v1
-kind: Service
-metadata:
- name: testing
- labels:
- app: kubdiag
-spec:
- ports:
- - port: 8080
- name: protoactor
- selector:
- app: kubdiag
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: diagapp
-spec:
- replicas: 3
- selector:
- matchLabels:
- app: kubdiag
- template:
- metadata:
- labels:
- app: kubdiag
- version: v1
- spec:
- serviceAccountName: proto-cluster
- containers:
- - name: kubdiag
- # there is nothing sensitive in here, its just a diagnostics app
- image: rogeralsing/kubdiagg:amd64
- imagePullPolicy: Always
- ports:
- - containerPort: 8080
- env:
- - name: "REDIS"
- value: "redis"
- - name: PROTOPORT
- value: "8080"
- - name: PROTOHOST
- value: "0.0.0.0"
- - name: "PROTOHOSTPUBLIC"
- valueFrom:
- fieldRef:
- fieldPath: status.podIP
diff --git a/benchmarks/KubernetesDiagnostics/service.yaml b/benchmarks/KubernetesDiagnostics/service.yaml
index 24680c5779..b6d66f2b87 100644
--- a/benchmarks/KubernetesDiagnostics/service.yaml
+++ b/benchmarks/KubernetesDiagnostics/service.yaml
@@ -1,22 +1,24 @@
apiVersion: v1
+kind: Namespace
+metadata:
+ name: my-namespace
+---
+apiVersion: v1
kind: ServiceAccount
metadata:
name: proto-cluster
+ namespace: my-namespace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: proto-cluster
- labels:
- app: kubdiag
+ namespace: my-namespace
rules:
- apiGroups:
- ""
resources:
- - endpoints
- pods
- - services
- - services/status
verbs:
- get
- list
@@ -28,7 +30,8 @@ kind: RoleBinding
metadata:
name: proto-cluster
labels:
- app: kubdiag
+ app: kubediag
+ namespace: my-namespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
@@ -40,37 +43,38 @@ subjects:
apiVersion: v1
kind: Service
metadata:
- name: testing
+ name: kubediag
labels:
- app: kubdiag
+ app: kubediag
+ namespace: my-namespace
spec:
ports:
- port: 8080
name: protoactor
selector:
- app: kubdiag
+ app: kubediag
---
apiVersion: apps/v1
kind: Deployment
metadata:
- name: diagapp
+ name: kubediag
+ namespace: my-namespace
spec:
replicas: 3
selector:
matchLabels:
- app: kubdiag
+ app: kubediag
template:
metadata:
labels:
- app: kubdiag
+ app: kubediag
version: v1
spec:
serviceAccountName: proto-cluster
containers:
- - name: kubdiag
- # there is nothing sensitive in here, its just a diagnostics app
- image: rogeralsing/kubdiagg:default2
- imagePullPolicy: Never
+ - name: kubediag
+ image: rogeralsing/kubediag:latest
+ imagePullPolicy: Always
ports:
- containerPort: 8080
env:
diff --git a/service.yaml b/service.yaml
index e834b600db..b417855343 100644
--- a/service.yaml
+++ b/service.yaml
@@ -37,8 +37,6 @@ spec:
value: "8080"
- name: PROTOHOST
value: "0.0.0.0"
- - name: "MONGO"
- value: "mongodb://mongo"
- name: "PROTOHOSTPUBLIC"
valueFrom:
fieldRef:
@@ -70,8 +68,6 @@ spec:
value: "8080"
- name: PROTOHOST
value: "0.0.0.0"
- - name: "MONGO"
- value: "mongodb://mongo"
- name: "PROTOHOSTPUBLIC"
valueFrom:
fieldRef:
diff --git a/src/Proto.Actor/Context/ActorLoggingContext.cs b/src/Proto.Actor/Context/ActorLoggingContext.cs
index b7bf6473b7..00cac80574 100644
--- a/src/Proto.Actor/Context/ActorLoggingContext.cs
+++ b/src/Proto.Actor/Context/ActorLoggingContext.cs
@@ -47,7 +47,7 @@ public override async Task Receive(MessageEnvelope envelope)
if (logLevel != LogLevel.None && _logger.IsEnabled(logLevel))
{
- _logger.Log(logLevel, "Actor {Self} {ActorType} received message {MessageType}:{Message} from {Sender}",
+ _logger.Log(logLevel, "Actor {Self} {ActorType} received message {MessageType}:{MessagePayload} from {Sender}",
Self, ActorType, message.GetMessageTypeName(),
message,
SenderOrNone(envelope)
@@ -61,7 +61,7 @@ public override async Task Receive(MessageEnvelope envelope)
if (logLevel != LogLevel.None && _logger.IsEnabled(logLevel))
{
_logger.Log(logLevel,
- "Actor {Self} {ActorType} completed message {MessageType}:{Message} from {Sender}", Self, ActorType,
+ "Actor {Self} {ActorType} completed message {MessageType}:{MessagePayload} from {Sender}", Self, ActorType,
message.GetMessageTypeName(),
message,
SenderOrNone(envelope)
@@ -73,7 +73,7 @@ public override async Task Receive(MessageEnvelope envelope)
if (_exceptionLogLevel != LogLevel.None && _logger.IsEnabled(_exceptionLogLevel))
{
_logger.Log(_exceptionLogLevel, x,
- "Actor {Self} {ActorType} failed during message {MessageType}:{Message} from {Sender}", Self,
+ "Actor {Self} {ActorType} failed during message {MessageType}:{MessagePayload} from {Sender}", Self,
ActorType,
message.GetMessageTypeName(), message,
SenderOrNone(envelope)
@@ -110,7 +110,7 @@ public override async Task RequestAsync(PID target, object message, Cancel
{
if (_logLevel != LogLevel.None && _logger.IsEnabled(_logLevel))
{
- _logger.Log(_logLevel, "Actor {Self} {ActorType} Sending RequestAsync {MessageType}:{Message} to {Target}",
+ _logger.Log(_logLevel, "Actor {Self} {ActorType} Sending RequestAsync {MessageType}:{MessagePayload} to {Target}",
Self, ActorType,
message.GetMessageTypeName(), message, target
);
@@ -123,7 +123,7 @@ public override async Task RequestAsync(PID target, object message, Cancel
if (_logLevel != LogLevel.None && _logger.IsEnabled(_logLevel))
{
_logger.Log(_logLevel,
- "Actor {Self} {ActorType} Got response {Response} to {MessageType}:{Message} from {Target}", Self,
+ "Actor {Self} {ActorType} Got response {Response} to {MessageType}:{MessagePayload} from {Target}", Self,
ActorType,
response, message.GetMessageTypeName(), message, target
);
@@ -136,7 +136,7 @@ public override async Task RequestAsync(PID target, object message, Cancel
if (_exceptionLogLevel != LogLevel.None && _logger.IsEnabled(_exceptionLogLevel))
{
_logger.Log(_exceptionLogLevel, x,
- "Actor {Self} {ActorType} Got exception waiting for RequestAsync response of {MessageType}:{Message} from {Target}",
+ "Actor {Self} {ActorType} Got exception waiting for RequestAsync response of {MessageType}:{MessagePayload} from {Target}",
Self,
ActorType,
message.GetMessageTypeName(), message, target
@@ -195,7 +195,7 @@ public override void Respond(object message)
if (logLevel != LogLevel.None && _logger.IsEnabled(logLevel))
{
- _logger.Log(logLevel, "Actor {Self} {ActorType} responded with {MessageType}:{Message} to {Sender}", Self,
+ _logger.Log(logLevel, "Actor {Self} {ActorType} responded with {MessageType}:{MessagePayload} to {Sender}", Self,
ActorType,
message.GetMessageTypeName(), message, Sender
);
@@ -218,7 +218,7 @@ public override void Request(PID target, object message, PID? sender)
{
if (_logLevel != LogLevel.None && _logger.IsEnabled(_logLevel))
{
- _logger.Log(_logLevel, "Actor {Self} {ActorType} Sending Request {MessageType}:{Message} to {Target}",
+ _logger.Log(_logLevel, "Actor {Self} {ActorType} Sending Request {MessageType}:{MessagePayload} to {Target}",
Self, ActorType,
message.GetMessageTypeName(), message, target
);
@@ -231,7 +231,7 @@ public override void Send(PID target, object message)
{
if (_logLevel != LogLevel.None && _logger.IsEnabled(_logLevel))
{
- _logger.Log(_logLevel, "Actor {Self} {ActorType} Sending {MessageType}:{Message} to {Target}", Self,
+ _logger.Log(_logLevel, "Actor {Self} {ActorType} Sending {MessageType}:{MessagePayload} to {Target}", Self,
ActorType,
message.GetMessageTypeName(), message, target
);
diff --git a/src/Proto.Actor/Context/DeadlineContextDecorator.cs b/src/Proto.Actor/Context/DeadlineContextDecorator.cs
index ae333e7e81..526247b657 100644
--- a/src/Proto.Actor/Context/DeadlineContextDecorator.cs
+++ b/src/Proto.Actor/Context/DeadlineContextDecorator.cs
@@ -61,7 +61,7 @@ public override async Task Receive(MessageEnvelope envelope)
if (!ok)
{
- _logger.LogWarning("Actor {Self} deadline {Deadline}, exceeded on message {Message}", _context.Self,
+ _logger.LogWarning("Actor {Self} deadline {Deadline}, exceeded on message {MessagePayload}", _context.Self,
_deadline, envelope.Message);
// keep waiting, we cannot just ignore and continue as an async task might still be running and updating state of the actor
diff --git a/src/Proto.Actor/Context/RootLoggingContext.cs b/src/Proto.Actor/Context/RootLoggingContext.cs
index a10da58808..3a6995b91e 100644
--- a/src/Proto.Actor/Context/RootLoggingContext.cs
+++ b/src/Proto.Actor/Context/RootLoggingContext.cs
@@ -33,7 +33,7 @@ public override void Send(PID target, object message)
if (logLevel != LogLevel.None && _logger.IsEnabled(logLevel))
{
- _logger.Log(logLevel, "RootContext Sending {MessageType}:{Message} to {Target}", message.GetMessageTypeName(), message,
+ _logger.Log(logLevel, "RootContext Sending {MessageType}:{MessagePayload} to {Target}", message.GetMessageTypeName(), message,
target);
}
@@ -59,7 +59,7 @@ public override void Request(PID target, object message, PID? sender)
if (logLevel != LogLevel.None && _logger.IsEnabled(logLevel))
{
- _logger.Log(logLevel, "Sending Request {MessageType}:{Message} to {Target}", message.GetMessageTypeName(),
+ _logger.Log(logLevel, "Sending Request {MessageType}:{MessagePayload} to {Target}", message.GetMessageTypeName(),
message, target);
}
@@ -137,7 +137,7 @@ public override void Request(PID target, object message)
if (logLevel != LogLevel.None && _logger.IsEnabled(logLevel))
{
- _logger.Log(logLevel, "RootContext Sending Request {MessageType}:{Message} to {Target}", message.GetMessageTypeName(),
+ _logger.Log(logLevel, "RootContext Sending Request {MessageType}:{MessagePayload} to {Target}", message.GetMessageTypeName(),
message, target);
}
@@ -148,7 +148,7 @@ public override async Task RequestAsync(PID target, object message, Cancel
{
if (_logLevel != LogLevel.None && _logger.IsEnabled(_logLevel))
{
- _logger.Log(_logLevel, "RootContext Sending RequestAsync {MessageType}:{Message} to {Target}",
+ _logger.Log(_logLevel, "RootContext Sending RequestAsync {MessageType}:{MessagePayload} to {Target}",
message.GetMessageTypeName(), message, target
);
}
@@ -160,7 +160,7 @@ public override async Task RequestAsync(PID target, object message, Cancel
if (_logLevel != LogLevel.None && _logger.IsEnabled(_logLevel))
{
_logger.Log(_logLevel,
- "RootContext Got response {Response} to {MessageType}:{Message} from {Target}",
+ "RootContext Got response {Response} to {MessageType}:{MessagePayload} from {Target}",
response, message.GetMessageTypeName(), message, target
);
}
@@ -172,7 +172,7 @@ public override async Task RequestAsync(PID target, object message, Cancel
if (_exceptionLogLevel != LogLevel.None && _logger.IsEnabled(_exceptionLogLevel))
{
_logger.Log(_exceptionLogLevel, x,
- "RootContext Got exception waiting for RequestAsync response of {MessageType}:{Message} from {Target}",
+ "RootContext Got exception waiting for RequestAsync response of {MessageType}:{MessagePayload} from {Target}",
message.GetMessageTypeName(), message, target
);
}
diff --git a/src/Proto.Actor/Diagnostics/DiagnosticsStore.cs b/src/Proto.Actor/Diagnostics/DiagnosticsStore.cs
index 3240f881f1..0c9e0e523d 100644
--- a/src/Proto.Actor/Diagnostics/DiagnosticsStore.cs
+++ b/src/Proto.Actor/Diagnostics/DiagnosticsStore.cs
@@ -51,7 +51,7 @@ public void RegisterEvent(string module, string message)
var entry = new DiagnosticsEntry(module, message, null);
if (_entries.TryAdd(entry))
{
- _logger.Log(_logLevel, "[Diagnostics] {Module}: {Message}", module, message);
+ _logger.Log(_logLevel, "[Diagnostics] {Module}: {MessagePayload}", module, message);
}
}
diff --git a/src/Proto.Actor/EventStream/EventStream.cs b/src/Proto.Actor/EventStream/EventStream.cs
index d4397a926f..d4b8553445 100644
--- a/src/Proto.Actor/EventStream/EventStream.cs
+++ b/src/Proto.Actor/EventStream/EventStream.cs
@@ -50,7 +50,7 @@ internal EventStream(ActorSystem system)
dl.Message is not IIgnoreDeadLetterLogging)
{
_logger.LogInformation(
- "[DeadLetter] could not deliver '{MessageType}:{Message}' to '{Target}' from '{Sender}'",
+ "[DeadLetter] could not deliver '{MessageType}:{MessagePayload}' to '{Target}' from '{Sender}'",
dl.Message.GetMessageTypeName(),
dl.Message,
dl.Pid,
diff --git a/src/Proto.Actor/Logging/Log.cs b/src/Proto.Actor/Logging/Log.cs
index cabc928dbf..b974e137bf 100644
--- a/src/Proto.Actor/Logging/Log.cs
+++ b/src/Proto.Actor/Logging/Log.cs
@@ -4,6 +4,7 @@
//
// -----------------------------------------------------------------------
+using System;
using JetBrains.Annotations;
using Microsoft.Extensions.Logging;
using Proto.Logging;
@@ -44,5 +45,6 @@ public static class Log
///
///
///
+ [Obsolete("Inject ILogger instead", false)]
public static ILogger CreateLogger() => _loggerFactory.CreateLogger();
}
\ No newline at end of file
diff --git a/src/Proto.Cluster.Kubernetes/KubernetesClusterMonitor.cs b/src/Proto.Cluster.Kubernetes/KubernetesClusterMonitor.cs
index b43beb0fb3..8ca2bd9423 100644
--- a/src/Proto.Cluster.Kubernetes/KubernetesClusterMonitor.cs
+++ b/src/Proto.Cluster.Kubernetes/KubernetesClusterMonitor.cs
@@ -79,25 +79,30 @@ private Task StopWatchingCluster()
return Task.CompletedTask;
}
- private async Task StartWatchingCluster(IContext context)
+ private Task StartWatchingCluster(IContext context)
{
- try
+ _ = SafeTask.Run(async () =>
{
- await Poll();
- }
- catch (Exception x)
- {
- Logger.LogError(x, "[Cluster][KubernetesProvider] Failed to poll the Kubernetes API");
- }
+ try
+ {
+ await Poll();
+ }
+ catch (Exception x)
+ {
+ Logger.LogError(x, "[Cluster][KubernetesProvider] Failed to poll the Kubernetes API");
+ }
- if (!_config.DisableWatch)
- {
- await Watch();
- }
+ if (!_config.DisableWatch)
+ {
+ await Watch();
+ }
+
+ await Task.Delay(1000);
- await Task.Delay(1000);
+ context.Send(context.Self, new StartWatchingCluster(_clusterName));
+ });
- context.Send(context.Self, new StartWatchingCluster(_clusterName));
+ return Task.CompletedTask;
}
private Task Watch()
@@ -290,6 +295,12 @@ private void Watch(WatchEventType eventType, V1Pod eventPod)
private void UpdateTopology()
{
+ if (_clusterPods?.Values is null)
+ {
+ Logger.LogInformation("[Cluster][KubernetesProvider] No pods found in the cluster");
+ return;
+ }
+
var memberStatuses = _clusterPods.Values
.Select(x => x.GetMemberStatus())
.Where(x => x.IsRunning && (x.IsReady || x.Member.Id == _cluster.System.Id))
diff --git a/src/Proto.Cluster/Member/MemberList.cs b/src/Proto.Cluster/Member/MemberList.cs
index 59383c0236..9ebbcd13a1 100644
--- a/src/Proto.Cluster/Member/MemberList.cs
+++ b/src/Proto.Cluster/Member/MemberList.cs
@@ -361,7 +361,7 @@ public void BroadcastEvent(object message, bool includeSelf = true)
catch (Exception x)
{
x.CheckFailFast();
- Logger.LogError(x, "[MemberList] Failed to broadcast {Message} to {Pid}", message, pid);
+ Logger.LogError(x, "[MemberList] Failed to broadcast {MessagePayload} to {Pid}", message, pid);
}
}
}
diff --git a/src/Proto.Remote/Endpoints/Endpoint.cs b/src/Proto.Remote/Endpoints/Endpoint.cs
index 3719b64f6e..06148d4e23 100644
--- a/src/Proto.Remote/Endpoints/Endpoint.cs
+++ b/src/Proto.Remote/Endpoints/Endpoint.cs
@@ -100,7 +100,7 @@ public void SendMessage(PID target, object msg)
if (_logger.IsEnabled(LogLevel.Trace))
{
- _logger.LogTrace("[{SystemAddress}] Sending message {MessageType} {Message} to {Target} from {Sender}",
+ _logger.LogTrace("[{SystemAddress}] Sending message {MessageType} {MessagePayload} to {Target} from {Sender}",
System.Address,
message.GetMessageTypeName(), message, target, sender
);
@@ -115,7 +115,7 @@ public void SendMessage(PID target, object msg)
if (CancellationToken.IsCancellationRequested || !_remoteDelivers.Writer.TryWrite(env))
{
- _logger.LogWarning("[{SystemAddress}] Dropping message {MessageType} {Message} to {Target} from {Sender}",
+ _logger.LogWarning("[{SystemAddress}] Dropping message {MessageType} {MessagePayload} to {Target} from {Sender}",
System.Address,
message.GetMessageTypeName(), message, target, sender
);
@@ -249,7 +249,7 @@ private int DropMessagesInBatch(RemoteMessage remoteMessage)
message = RemoteConfig.Serialization.Deserialize(typeName, envelope.MessageData,
envelope.SerializerId);
- // _logger.LogDebug("Received (Type) {Message}", message.GetType(), message);
+ // _logger.LogDebug("Received (Type) {MessagePayload}", message.GetType(), message);
//translate from on-the-wire representation to in-process representation
//this only applies to root level messages, and never on nested child messages
@@ -468,14 +468,14 @@ private MessageBatch CreateBatch(IReadOnlyCollection m)
catch (CodedOutputStream.OutOfSpaceException oom)
{
System.Diagnostics.RegisterEvent("Remote", $"Message is too large {message.GetMessageTypeName()}");
- _logger.LogError(oom, "Message is too large {Message}", message.GetMessageTypeName());
+ _logger.LogError(oom, "Message is too large {MessagePayload}", message.GetMessageTypeName());
throw;
}
catch (Exception x)
{
System.Diagnostics.RegisterEvent("Remote", $"Missing serializer for {message.GetMessageTypeName()}");
- _logger.LogError(x, "Serialization failed for message {Message}", message.GetMessageTypeName());
+ _logger.LogError(x, "Serialization failed for message {MessagePayload}", message.GetMessageTypeName());
throw;
}
diff --git a/src/Proto.Remote/Endpoints/RemoteMessageHandler.cs b/src/Proto.Remote/Endpoints/RemoteMessageHandler.cs
index 13e3631d47..7bedcb800c 100644
--- a/src/Proto.Remote/Endpoints/RemoteMessageHandler.cs
+++ b/src/Proto.Remote/Endpoints/RemoteMessageHandler.cs
@@ -142,7 +142,7 @@ public void HandleRemoteMessage(RemoteMessage currentMessage, string remoteAddre
if (_logger.IsEnabled(LogLevel.Trace))
{
_logger.LogTrace(
- "[{SystemAddress}] Received message {MessageType} {Message} for {Target}",
+ "[{SystemAddress}] Received message {MessageType} {MessagePayload} for {Target}",
_system.Address,
msg.GetType().Name, msg, target
);
@@ -159,7 +159,7 @@ public void HandleRemoteMessage(RemoteMessage currentMessage, string remoteAddre
if (_logger.IsEnabled(LogLevel.Trace))
{
_logger.LogTrace(
- "[{SystemAddress}] Received system message {MessageType} {Message} for {Target}",
+ "[{SystemAddress}] Received system message {MessageType} {MessagePayload} for {Target}",
_system.Address,
sys.GetType().Name, sys, target
);
@@ -190,7 +190,7 @@ public void HandleRemoteMessage(RemoteMessage currentMessage, string remoteAddre
if (_logger.IsEnabled(LogLevel.Trace))
{
_logger.LogTrace(
- "[{SystemAddress}] Received user message {MessageType} {Message} for {Target} from {Sender}",
+ "[{SystemAddress}] Received user message {MessageType} {MessagePayload} for {Target} from {Sender}",
_system.Address, message.GetMessageTypeName(), message, target, sender
);
}
diff --git a/src/Proto.Remote/Endpoints/ServerConnector.cs b/src/Proto.Remote/Endpoints/ServerConnector.cs
index f7c0b986e0..d85dabbc0e 100644
--- a/src/Proto.Remote/Endpoints/ServerConnector.cs
+++ b/src/Proto.Remote/Endpoints/ServerConnector.cs
@@ -318,7 +318,7 @@ private Task StartReader(AsyncDuplexStreamingCall
if (_connectorType == Type.ServerSide)
{
_logger.LogWarning(
- "[ServerConnector][{SystemAddress}] Received {Message} from {Addres}",
+ "[ServerConnector][{SystemAddress}] Received {MessagePayload} from {Addres}",
_system.Address, currentMessage, _address);
}
else
diff --git a/src/Proto.Remote/GrpcNet/GrpcNetClientRemote.cs b/src/Proto.Remote/GrpcNet/GrpcNetClientRemote.cs
index 4c2f94bf4b..847c554c02 100644
--- a/src/Proto.Remote/GrpcNet/GrpcNetClientRemote.cs
+++ b/src/Proto.Remote/GrpcNet/GrpcNetClientRemote.cs
@@ -69,7 +69,7 @@ public Task ShutdownAsync(bool graceful = true)
catch (Exception ex)
{
_logger.LogError(
- ex, "Proto.Actor client {Id} stopped with error: {Message}",
+ ex, "Proto.Actor client {Id} stopped with error: {MessagePayload}",
System.Id, ex.Message
);
}
diff --git a/src/Proto.Remote/GrpcNet/GrpcNetRemote.cs b/src/Proto.Remote/GrpcNet/GrpcNetRemote.cs
index 727f6ad0ec..038441bcd5 100644
--- a/src/Proto.Remote/GrpcNet/GrpcNetRemote.cs
+++ b/src/Proto.Remote/GrpcNet/GrpcNetRemote.cs
@@ -174,7 +174,7 @@ public async Task ShutdownAsync(bool graceful = true)
catch (Exception ex)
{
_logger.LogError(
- ex, "Proto.Actor server stopped on {Address} with error: {Message}",
+ ex, "Proto.Actor server stopped on {Address} with error: {MessagePayload}",
System.Address, ex.Message
);
}
diff --git a/src/Proto.Remote/GrpcNet/HostedGrpcNetRemote.cs b/src/Proto.Remote/GrpcNet/HostedGrpcNetRemote.cs
index e1ebe5688a..fca7e8e3d3 100644
--- a/src/Proto.Remote/GrpcNet/HostedGrpcNetRemote.cs
+++ b/src/Proto.Remote/GrpcNet/HostedGrpcNetRemote.cs
@@ -87,7 +87,7 @@ public Task ShutdownAsync(bool graceful = true)
catch (Exception ex)
{
_logger.LogError(
- ex, "Proto.Actor server stopped on {Address} with error: {Message}",
+ ex, "Proto.Actor server stopped on {Address} with error: {MessagePayload}",
System.Address, ex.Message
);
diff --git a/src/Proto.Remote/Serialization/ForcedSerializationSenderMiddleware.cs b/src/Proto.Remote/Serialization/ForcedSerializationSenderMiddleware.cs
index a9145938c2..df5cb86fbb 100644
--- a/src/Proto.Remote/Serialization/ForcedSerializationSenderMiddleware.cs
+++ b/src/Proto.Remote/Serialization/ForcedSerializationSenderMiddleware.cs
@@ -78,7 +78,7 @@ public static Func Create(Func? sho
}
catch (CodedOutputStream.OutOfSpaceException oom)
{
- Logger.LogError(oom, "Message is too large for serialization {Message}", message?.GetType().Name);
+ Logger.LogError(oom, "Message is too large for serialization {MessagePayload}", message?.GetType().Name);
throw;
}
@@ -86,7 +86,7 @@ public static Func Create(Func? sho
{
ex.CheckFailFast();
- Logger.LogError(ex, "Forced serialization -> deserialization failed for message {Message}",
+ Logger.LogError(ex, "Forced serialization -> deserialization failed for message {MessagePayload}",
message?.GetType().Name);
throw;
diff --git a/tests/Proto.Cluster.Tests/ClusterFixture.cs b/tests/Proto.Cluster.Tests/ClusterFixture.cs
index fab5663f0c..f0fe6808c8 100644
--- a/tests/Proto.Cluster.Tests/ClusterFixture.cs
+++ b/tests/Proto.Cluster.Tests/ClusterFixture.cs
@@ -68,6 +68,7 @@ static ClusterFixture()
{
TracingSettings.OpenTelemetryUrl = Environment.GetEnvironmentVariable("OPENTELEMETRY_URL");
TracingSettings.TraceViewUrl = Environment.GetEnvironmentVariable("TRACEVIEW_URL");
+ // TracingSettings.OpenTelemetryUrl = "http://Localhost:4317";
TracingSettings.EnableTracing = TracingSettings.OpenTelemetryUrl != null;
//TODO: check if this helps low resource envs like github actions.
@@ -293,7 +294,7 @@ protected virtual async Task SpawnClusterMember(Func(e =>
{
- logger?.LogDebug("EventStream {MessageType}:{Message}", e.GetType().Name, e);
+ logger?.LogDebug("EventStream {MessageType}:{MessagePayload}", e.GetType().Name, e);
}
);