Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Akka.Cluster.Metrics extension implementation #4126

Merged
merged 87 commits into from
Jan 27, 2020
Merged
Changes from 1 commit
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
2b7f153
Created project
IgorFedchenko Dec 20, 2019
d323eff
Updated proto to syntax3
IgorFedchenko Dec 20, 2019
29a3264
Generated messages file
IgorFedchenko Dec 24, 2019
f6a2ae6
Implemented collector builder
IgorFedchenko Dec 24, 2019
48682e1
Implemented new classes and interfaces
IgorFedchenko Dec 25, 2019
4ce8099
Minor fixes
IgorFedchenko Dec 25, 2019
71f6381
Implemented routing, metric selectors, fixed metric values storage
IgorFedchenko Dec 26, 2019
19ff99a
Fixed routing, added messages serialization (not complete)
IgorFedchenko Dec 26, 2019
9a52276
Merge branch 'dev' into cluster-metrics
IgorFedchenko Dec 26, 2019
afa8365
Kick off .net452 target
IgorFedchenko Dec 27, 2019
33624fc
Implemented messages serialization and other fixes and refactorings
IgorFedchenko Dec 27, 2019
0f806c6
Added dummy implementation for compression with TODO label
IgorFedchenko Dec 27, 2019
fe324fb
Added and fixed configuration spec
IgorFedchenko Dec 27, 2019
7f4e983
Added and fixed messages serialization
IgorFedchenko Dec 28, 2019
b42644a
Refactoring and fixes
IgorFedchenko Dec 28, 2019
0ef34ed
DynamicAccess fix
IgorFedchenko Dec 28, 2019
d6ac8dd
Added generation script for proto message types
IgorFedchenko Dec 28, 2019
5f078e5
Reusing AddressData protobuf message
IgorFedchenko Dec 28, 2019
39e5171
Fixed serializer configuration
IgorFedchenko Dec 28, 2019
a43e76b
Renamed Option.ForEach to Option.OnSuccess
IgorFedchenko Dec 28, 2019
a9ec08e
Merge branch 'dev' into cluster-metrics
IgorFedchenko Dec 28, 2019
e45c73c
Added collection spec + fixed implementation
IgorFedchenko Dec 30, 2019
dd84077
Added specs and applied fixes for MetricsSelectors
IgorFedchenko Dec 30, 2019
e5dcf83
Merge branch 'dev' into cluster-metrics
IgorFedchenko Jan 1, 2020
5476934
Added new specs and fixes
IgorFedchenko Jan 3, 2020
3ca5bf6
More fixes
IgorFedchenko Jan 3, 2020
5e24ecf
Added spec and fixed weighted routees
IgorFedchenko Jan 3, 2020
af5cb25
Merge branch 'dev' into cluster-metrics
IgorFedchenko Jan 3, 2020
93b88b1
Implemented DefaultCollector and updated metric names closer to .NET
IgorFedchenko Jan 5, 2020
6606492
Added specs and minor fixes for metrics collector
IgorFedchenko Jan 5, 2020
cab575e
Added MNTR tests (not all passing)
IgorFedchenko Jan 6, 2020
3087efb
MNTR tests configuration fix
IgorFedchenko Jan 6, 2020
52f04d4
Made DynamicAccess marked as InternalApi
IgorFedchenko Jan 6, 2020
295d699
Marked DynamicAccess methods with InternalApi
IgorFedchenko Jan 6, 2020
6825b2d
Merge branch 'dev' into cluster-metrics
IgorFedchenko Jan 6, 2020
6da830a
Reflection and configuration fixes
IgorFedchenko Jan 6, 2020
da13922
MNTR specs fix
IgorFedchenko Jan 7, 2020
727220b
Merge remote-tracking branch 'origin/cluster-metrics' into cluster-me…
IgorFedchenko Jan 7, 2020
b84f86a
MNTR StatsSampleSpec fix (now passing)
IgorFedchenko Jan 7, 2020
f1a044d
MNTR ClusterMetricsEnabledSpec fix
IgorFedchenko Jan 7, 2020
f1c5386
MNTR fix from #4139
IgorFedchenko Jan 9, 2020
a390887
Fixed memory use metric
IgorFedchenko Jan 9, 2020
ac4d12e
AwaitAssertAsync fix for async assertion
IgorFedchenko Jan 10, 2020
0fe2955
MNTR option to clear output folder
IgorFedchenko Jan 10, 2020
df32600
Some fixes
IgorFedchenko Jan 10, 2020
079bcac
Fix props creation in routing
IgorFedchenko Jan 10, 2020
eb05abc
Failed specs fixes
IgorFedchenko Jan 10, 2020
0572cf4
Added API approval
IgorFedchenko Jan 11, 2020
29950c0
Dispose process objects after loading metrics
IgorFedchenko Jan 11, 2020
4f7a51e
Merge branch 'dev' into cluster-metrics
Aaronontheweb Jan 13, 2020
8ddb1a5
Minor fixes and refactoring
IgorFedchenko Jan 14, 2020
4ef2e8c
Merge branch 'dev' into cluster-metrics
IgorFedchenko Jan 14, 2020
27b68e4
Updated API approval
IgorFedchenko Jan 14, 2020
454ca47
Fixed typo in reference.conf
IgorFedchenko Jan 15, 2020
e6bee49
Merge branch 'dev' into cluster-metrics
IgorFedchenko Jan 15, 2020
8fa0fd5
Akka.Remove protobuf AddressData payload reuse
IgorFedchenko Jan 15, 2020
b4f6996
Merge branch 'cluster-metrics-address-reuse' into cluster-metrics
IgorFedchenko Jan 15, 2020
878fe84
API approvement
IgorFedchenko Jan 16, 2020
18be9ee
Refactored test
IgorFedchenko Jan 16, 2020
57f371e
Using GC.GetTotalMemory instead of Process.PrivateMemorySize64
IgorFedchenko Jan 16, 2020
0223f66
Merge branch 'dev' into cluster-metrics
IgorFedchenko Jan 16, 2020
ff70a40
Fix CPU collection timings tracking
IgorFedchenko Jan 17, 2020
dfea281
DefaultCollector sample time tracking start/stop fix
IgorFedchenko Jan 20, 2020
22018bb
Merge branch 'dev' into cluster-metrics
IgorFedchenko Jan 20, 2020
188e025
Increased metric sampling timeouts
IgorFedchenko Jan 20, 2020
ecda6ea
Merge branch 'dev' into cluster-metrics
IgorFedchenko Jan 22, 2020
78b0109
Refactored test to be less racy
IgorFedchenko Jan 22, 2020
98b86da
Merge remote-tracking branch 'origin/cluster-metrics' into cluster-me…
IgorFedchenko Jan 22, 2020
9a9e1d2
Added CPU load value limitation
IgorFedchenko Jan 22, 2020
0e1495a
Merge branch 'dev' into cluster-metrics
IgorFedchenko Jan 23, 2020
c45c7ec
Disabled flaky performance test
IgorFedchenko Jan 23, 2020
8318488
CPU truncate fix
IgorFedchenko Jan 23, 2020
55f2ed7
Merge branch 'dev' into cluster-metrics
Aaronontheweb Jan 23, 2020
d7f4ae3
Merge branch 'dev' into cluster-metrics
Aaronontheweb Jan 23, 2020
7ec40f3
Merge branch 'dev' into cluster-metrics
Aaronontheweb Jan 23, 2020
6bfb91d
Merge branch 'dev' into cluster-metrics
Aaronontheweb Jan 24, 2020
85c0d28
Fixed Protobuf payload class visability
IgorFedchenko Jan 25, 2020
2c4006c
Disabled invalid racy MNTR test
IgorFedchenko Jan 25, 2020
b78dc52
Increased timeout for cluster to be up
IgorFedchenko Jan 25, 2020
9e50bef
Merge branch 'dev' into cluster-metrics
IgorFedchenko Jan 25, 2020
990d19e
One more Protobuf payload visability fix
IgorFedchenko Jan 25, 2020
fdd27e1
Increased timeout even more
IgorFedchenko Jan 25, 2020
6afac7e
Refactored test to be more rebust to timings
IgorFedchenko Jan 25, 2020
f7e4432
Using local public AddressData structure
IgorFedchenko Jan 27, 2020
62f7684
MNTR clear-output option fix
IgorFedchenko Jan 27, 2020
61ef434
Fixed issue with MNTR spec
Aaronontheweb Jan 27, 2020
36ac347
Updated API approvement
IgorFedchenko Jan 27, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ public class ClusterMetricsCommonConfig : MultiNodeConfig
public readonly RoleName Node4;
public readonly RoleName Node5;

public IImmutableSet<RoleName> NodeList => ImmutableHashSet.Create(Node1, Node2, Node3, Node4, Node5);

public Config EnableMetricsExtension => ConfigurationFactory.ParseString(@"
akka.extensions=[""Akka.Cluster.Metrics.ClusterMetricsExtensionProvider, Akka.Cluster.Metrics""]
akka.cluster.metrics.collector.enabled = on
Expand Down Expand Up @@ -93,7 +91,7 @@ private async Task Should_collect_and_publish_metrics_and_gossip_them_around_the
{
await AwaitAssertAsync(() =>
{
AwaitClusterUp(roles: _config.NodeList.ToArray());
AwaitClusterUp(Roles.ToArray());
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Aaronontheweb Could you give me a hint for the future: what is the difference here? Isn't Roles just same list of roles stored internally?
I see that I am using this Roles in another spec that passes without issues, and maybe this will work here too - but why?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Roles is something that gets populated automatically by the MultiNodeSpec base class - the content of the list is ordered and populated by the base classes themselves. The issue was that the HashSet<T> you were using could change the roles slightly since I think the HashCodes were different on a process by process basis.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, or course, set does not guarantee same ordering... Great catch, @Aaronontheweb , thanks a lot!

}, TimeSpan.FromSeconds(30));

EnterBarrier("cluster_started");
Expand Down Expand Up @@ -161,4 +159,4 @@ public void ClusterMetrics_Should_not_collect_publish_and_gossip_metrics_when_di
EnterBarrier("after");
}
}
}
}