From 452b3f14060094e718e9080425b773bf7c88be59 Mon Sep 17 00:00:00 2001 From: Patrik Nordwall Date: Fri, 20 Jan 2017 13:48:36 +0100 Subject: [PATCH] remove old deprecated cluster metrics, #21423 * corresponding was moved to akka-cluster-metrics, see http://doc.akka.io/docs/akka/2.4/project/migration-guide-2.3.x-2.4.x.html#New_Cluster_Metrics_Extension --- .../metrics/ClusterMetricsCollector.scala | 21 +- .../metrics/ClusterMetricsExtensionSpec.scala | 7 +- .../metrics/ClusterMetricsRoutingSpec.scala | 4 - .../metrics}/WeightedRouteesSpec.scala | 3 +- .../ClusterShardingGetStateSpec.scala | 1 - .../ClusterShardingGetStatsSpec.scala | 1 - .../cluster/protobuf/msg/ClusterMessages.java | 5146 +---------------- .../src/main/protobuf/ClusterMessages.proto | 53 - .../src/main/resources/reference.conf | 43 - .../scala/akka/cluster/ClusterDaemon.scala | 12 - .../scala/akka/cluster/ClusterEvent.scala | 14 - .../cluster/ClusterMetricsCollector.scala | 818 --- .../scala/akka/cluster/ClusterReadView.scala | 18 +- .../scala/akka/cluster/ClusterSettings.scala | 9 - .../protobuf/ClusterMessageSerializer.scala | 94 +- .../routing/AdaptiveLoadBalancing.scala | 534 -- .../cluster/ClusterMetricsDisabledSpec.scala | 37 - .../akka/cluster/ClusterMetricsSpec.scala | 61 - .../akka/cluster/MultiNodeClusterSpec.scala | 6 - .../scala/akka/cluster/StressSpec.scala | 50 +- .../AdaptiveLoadBalancingRouterSpec.scala | 220 - .../akka/cluster/ClusterConfigSpec.scala | 6 - .../akka/cluster/ClusterDeployerSpec.scala | 6 - .../test/scala/akka/cluster/EWMASpec.scala | 100 - .../cluster/MetricNumericConverterSpec.scala | 50 - .../scala/akka/cluster/MetricValuesSpec.scala | 66 - .../akka/cluster/MetricsCollectorSpec.scala | 128 - .../akka/cluster/MetricsGossipSpec.scala | 115 - .../scala/akka/cluster/NodeMetricsSpec.scala | 49 - .../ClusterMessageSerializerSpec.scala | 13 - .../cluster/routing/MetricsSelectorSpec.scala | 119 - akka-docs/rst/java/cluster-metrics.rst | 3 - akka-docs/rst/scala/cluster-metrics.rst | 3 - .../src/main/resources/application.conf | 3 - .../stats/StatsSampleSingleMasterSpec.scala | 2 - .../cluster/stats/StatsSampleSpec.scala | 2 - .../TransformationSampleSpec.scala | 2 - .../src/main/resources/application.conf | 3 - .../stats/StatsSampleSingleMasterSpec.scala | 2 - .../cluster/stats/StatsSampleSpec.scala | 2 - .../TransformationSampleSpec.scala | 2 - project/Dependencies.scala | 1 - project/MiMa.scala | 75 +- 43 files changed, 107 insertions(+), 7797 deletions(-) rename {akka-cluster/src/test/scala/akka/cluster/routing => akka-cluster-metrics/src/test/scala/akka/cluster/metrics}/WeightedRouteesSpec.scala (98%) delete mode 100644 akka-cluster/src/main/scala/akka/cluster/ClusterMetricsCollector.scala delete mode 100644 akka-cluster/src/main/scala/akka/cluster/routing/AdaptiveLoadBalancing.scala delete mode 100644 akka-cluster/src/multi-jvm/scala/akka/cluster/ClusterMetricsDisabledSpec.scala delete mode 100644 akka-cluster/src/multi-jvm/scala/akka/cluster/ClusterMetricsSpec.scala delete mode 100644 akka-cluster/src/multi-jvm/scala/akka/cluster/routing/AdaptiveLoadBalancingRouterSpec.scala delete mode 100644 akka-cluster/src/test/scala/akka/cluster/EWMASpec.scala delete mode 100644 akka-cluster/src/test/scala/akka/cluster/MetricNumericConverterSpec.scala delete mode 100644 akka-cluster/src/test/scala/akka/cluster/MetricValuesSpec.scala delete mode 100644 akka-cluster/src/test/scala/akka/cluster/MetricsCollectorSpec.scala delete mode 100644 akka-cluster/src/test/scala/akka/cluster/MetricsGossipSpec.scala delete mode 100644 akka-cluster/src/test/scala/akka/cluster/NodeMetricsSpec.scala delete mode 100644 akka-cluster/src/test/scala/akka/cluster/routing/MetricsSelectorSpec.scala diff --git a/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/ClusterMetricsCollector.scala b/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/ClusterMetricsCollector.scala index 8ec2a3a9a5..e1ade0763f 100644 --- a/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/ClusterMetricsCollector.scala +++ b/akka-cluster-metrics/src/main/scala/akka/cluster/metrics/ClusterMetricsCollector.scala @@ -110,23 +110,22 @@ private[metrics] trait ClusterMetricsMessage extends Serializable private[metrics] final case class MetricsGossipEnvelope(from: Address, gossip: MetricsGossip, reply: Boolean) extends ClusterMetricsMessage with DeadLetterSuppression +/** + * INTERNAL API. + */ +private[metrics] object ClusterMetricsCollector { + case object MetricsTick + case object GossipTick +} + /** * INTERNAL API. * * Actor responsible for periodic data sampling in the node and publication to the cluster. */ private[metrics] class ClusterMetricsCollector extends Actor with ActorLogging { - import InternalClusterAction._ - // TODO collapse to ClusterEvent._ after akka-cluster metrics is gone - import ClusterEvent.MemberEvent - import ClusterEvent.MemberUp - import ClusterEvent.MemberWeaklyUp - import ClusterEvent.MemberRemoved - import ClusterEvent.MemberExited - import ClusterEvent.ReachabilityEvent - import ClusterEvent.ReachableMember - import ClusterEvent.UnreachableMember - import ClusterEvent.CurrentClusterState + import ClusterMetricsCollector._ + import ClusterEvent._ import Member.addressOrdering import context.dispatcher val cluster = Cluster(context.system) diff --git a/akka-cluster-metrics/src/multi-jvm/scala/akka/cluster/metrics/ClusterMetricsExtensionSpec.scala b/akka-cluster-metrics/src/multi-jvm/scala/akka/cluster/metrics/ClusterMetricsExtensionSpec.scala index dd3c5ec738..64d5551e8b 100644 --- a/akka-cluster-metrics/src/multi-jvm/scala/akka/cluster/metrics/ClusterMetricsExtensionSpec.scala +++ b/akka-cluster-metrics/src/multi-jvm/scala/akka/cluster/metrics/ClusterMetricsExtensionSpec.scala @@ -28,13 +28,10 @@ trait ClusterMetricsCommonConfig extends MultiNodeConfig { // Extract individual sigar library for every node. nodeList foreach { role ⇒ nodeConfig(role) { - parseString("akka.cluster.metrics.native-library-extract-folder=${user.dir}/target/native/" + role.name) + parseString(s"akka.cluster.metrics.native-library-extract-folder=$${user.dir}/target/native/" + role.name) } } - // Disable legacy metrics in akka-cluster. - def disableMetricsLegacy = parseString("""akka.cluster.metrics.enabled=off""") - // Enable metrics extension in akka-cluster-metrics. def enableMetricsExtension = parseString(""" akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"] @@ -56,7 +53,6 @@ object ClusterMetricsDisabledConfig extends ClusterMetricsCommonConfig { commonConfig { Seq( customLogging, - disableMetricsLegacy, disableMetricsExtension, debugConfig(on = false), MultiNodeClusterSpec.clusterConfigWithFailureDetectorPuppet) @@ -70,7 +66,6 @@ object ClusterMetricsEnabledConfig extends ClusterMetricsCommonConfig { commonConfig { Seq( customLogging, - disableMetricsLegacy, enableMetricsExtension, debugConfig(on = false), MultiNodeClusterSpec.clusterConfigWithFailureDetectorPuppet) diff --git a/akka-cluster-metrics/src/multi-jvm/scala/akka/cluster/metrics/ClusterMetricsRoutingSpec.scala b/akka-cluster-metrics/src/multi-jvm/scala/akka/cluster/metrics/ClusterMetricsRoutingSpec.scala index d3c0069a18..dee09b0def 100644 --- a/akka-cluster-metrics/src/multi-jvm/scala/akka/cluster/metrics/ClusterMetricsRoutingSpec.scala +++ b/akka-cluster-metrics/src/multi-jvm/scala/akka/cluster/metrics/ClusterMetricsRoutingSpec.scala @@ -66,10 +66,6 @@ object AdaptiveLoadBalancingRouterConfig extends MultiNodeConfig { } commonConfig(debugConfig(on = false).withFallback(ConfigFactory.parseString(""" - - # Disable legacy metrics. - akka.cluster.metrics.enabled=off - # Enable metrics estension. akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"] diff --git a/akka-cluster/src/test/scala/akka/cluster/routing/WeightedRouteesSpec.scala b/akka-cluster-metrics/src/test/scala/akka/cluster/metrics/WeightedRouteesSpec.scala similarity index 98% rename from akka-cluster/src/test/scala/akka/cluster/routing/WeightedRouteesSpec.scala rename to akka-cluster-metrics/src/test/scala/akka/cluster/metrics/WeightedRouteesSpec.scala index edddde0521..cd5458f788 100644 --- a/akka-cluster/src/test/scala/akka/cluster/routing/WeightedRouteesSpec.scala +++ b/akka-cluster-metrics/src/test/scala/akka/cluster/metrics/WeightedRouteesSpec.scala @@ -2,7 +2,7 @@ * Copyright (C) 2009-2017 Lightbend Inc. */ -package akka.cluster.routing +package akka.cluster.metrics import com.typesafe.config.ConfigFactory import akka.actor.Address @@ -11,6 +11,7 @@ import akka.remote.RARP import akka.testkit.AkkaSpec import akka.routing.ActorSelectionRoutee import akka.routing.ActorRefRoutee +import scala.Vector class WeightedRouteesSpec extends AkkaSpec(ConfigFactory.parseString(""" akka.actor.provider = "cluster" diff --git a/akka-cluster-sharding/src/multi-jvm/scala/akka/cluster/sharding/ClusterShardingGetStateSpec.scala b/akka-cluster-sharding/src/multi-jvm/scala/akka/cluster/sharding/ClusterShardingGetStateSpec.scala index 1427f8f34c..faa80a54ae 100644 --- a/akka-cluster-sharding/src/multi-jvm/scala/akka/cluster/sharding/ClusterShardingGetStateSpec.scala +++ b/akka-cluster-sharding/src/multi-jvm/scala/akka/cluster/sharding/ClusterShardingGetStateSpec.scala @@ -48,7 +48,6 @@ object ClusterShardingGetStateSpecConfig extends MultiNodeConfig { akka.loglevel = INFO akka.actor.provider = "cluster" akka.remote.log-remote-lifecycle-events = off - akka.cluster.metrics.enabled = off akka.cluster.auto-down-unreachable-after = 0s akka.cluster.sharding { coordinator-failure-backoff = 3s diff --git a/akka-cluster-sharding/src/multi-jvm/scala/akka/cluster/sharding/ClusterShardingGetStatsSpec.scala b/akka-cluster-sharding/src/multi-jvm/scala/akka/cluster/sharding/ClusterShardingGetStatsSpec.scala index 463b0a6b19..91409e0daf 100644 --- a/akka-cluster-sharding/src/multi-jvm/scala/akka/cluster/sharding/ClusterShardingGetStatsSpec.scala +++ b/akka-cluster-sharding/src/multi-jvm/scala/akka/cluster/sharding/ClusterShardingGetStatsSpec.scala @@ -50,7 +50,6 @@ object ClusterShardingGetStatsSpecConfig extends MultiNodeConfig { akka.actor.provider = "cluster" akka.remote.log-remote-lifecycle-events = off akka.log-dead-letters-during-shutdown = off - akka.cluster.metrics.enabled = off akka.cluster.auto-down-unreachable-after = 0s akka.cluster.sharding { state-store-mode = "ddata" diff --git a/akka-cluster/src/main/java/akka/cluster/protobuf/msg/ClusterMessages.java b/akka-cluster/src/main/java/akka/cluster/protobuf/msg/ClusterMessages.java index 15db086207..e642bd267e 100644 --- a/akka-cluster/src/main/java/akka/cluster/protobuf/msg/ClusterMessages.java +++ b/akka-cluster/src/main/java/akka/cluster/protobuf/msg/ClusterMessages.java @@ -9759,5045 +9759,6 @@ public final class ClusterMessages { // @@protoc_insertion_point(class_scope:VectorClock) } - public interface MetricsGossipEnvelopeOrBuilder - extends akka.protobuf.MessageOrBuilder { - - // required .Address from = 1; - /** - * required .Address from = 1; - */ - boolean hasFrom(); - /** - * required .Address from = 1; - */ - akka.cluster.protobuf.msg.ClusterMessages.Address getFrom(); - /** - * required .Address from = 1; - */ - akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getFromOrBuilder(); - - // required .MetricsGossip gossip = 2; - /** - * required .MetricsGossip gossip = 2; - */ - boolean hasGossip(); - /** - * required .MetricsGossip gossip = 2; - */ - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip getGossip(); - /** - * required .MetricsGossip gossip = 2; - */ - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder getGossipOrBuilder(); - - // required bool reply = 3; - /** - * required bool reply = 3; - */ - boolean hasReply(); - /** - * required bool reply = 3; - */ - boolean getReply(); - } - /** - * Protobuf type {@code MetricsGossipEnvelope} - * - *
-   **
-   * Metrics Gossip Envelope
-   * 
- */ - public static final class MetricsGossipEnvelope extends - akka.protobuf.GeneratedMessage - implements MetricsGossipEnvelopeOrBuilder { - // Use MetricsGossipEnvelope.newBuilder() to construct. - private MetricsGossipEnvelope(akka.protobuf.GeneratedMessage.Builder builder) { - super(builder); - this.unknownFields = builder.getUnknownFields(); - } - private MetricsGossipEnvelope(boolean noInit) { this.unknownFields = akka.protobuf.UnknownFieldSet.getDefaultInstance(); } - - private static final MetricsGossipEnvelope defaultInstance; - public static MetricsGossipEnvelope getDefaultInstance() { - return defaultInstance; - } - - public MetricsGossipEnvelope getDefaultInstanceForType() { - return defaultInstance; - } - - private final akka.protobuf.UnknownFieldSet unknownFields; - @java.lang.Override - public final akka.protobuf.UnknownFieldSet - getUnknownFields() { - return this.unknownFields; - } - private MetricsGossipEnvelope( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - initFields(); - int mutable_bitField0_ = 0; - akka.protobuf.UnknownFieldSet.Builder unknownFields = - akka.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - done = true; - } - break; - } - case 10: { - akka.cluster.protobuf.msg.ClusterMessages.Address.Builder subBuilder = null; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - subBuilder = from_.toBuilder(); - } - from_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.Address.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(from_); - from_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000001; - break; - } - case 18: { - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder subBuilder = null; - if (((bitField0_ & 0x00000002) == 0x00000002)) { - subBuilder = gossip_.toBuilder(); - } - gossip_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(gossip_); - gossip_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000002; - break; - } - case 24: { - bitField0_ |= 0x00000004; - reply_ = input.readBool(); - break; - } - } - } - } catch (akka.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new akka.protobuf.InvalidProtocolBufferException( - e.getMessage()).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final akka.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossipEnvelope_descriptor; - } - - protected akka.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossipEnvelope_fieldAccessorTable - .ensureFieldAccessorsInitialized( - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.class, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.Builder.class); - } - - public static akka.protobuf.Parser PARSER = - new akka.protobuf.AbstractParser() { - public MetricsGossipEnvelope parsePartialFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return new MetricsGossipEnvelope(input, extensionRegistry); - } - }; - - @java.lang.Override - public akka.protobuf.Parser getParserForType() { - return PARSER; - } - - private int bitField0_; - // required .Address from = 1; - public static final int FROM_FIELD_NUMBER = 1; - private akka.cluster.protobuf.msg.ClusterMessages.Address from_; - /** - * required .Address from = 1; - */ - public boolean hasFrom() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required .Address from = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.Address getFrom() { - return from_; - } - /** - * required .Address from = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getFromOrBuilder() { - return from_; - } - - // required .MetricsGossip gossip = 2; - public static final int GOSSIP_FIELD_NUMBER = 2; - private akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip gossip_; - /** - * required .MetricsGossip gossip = 2; - */ - public boolean hasGossip() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * required .MetricsGossip gossip = 2; - */ - public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip getGossip() { - return gossip_; - } - /** - * required .MetricsGossip gossip = 2; - */ - public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder getGossipOrBuilder() { - return gossip_; - } - - // required bool reply = 3; - public static final int REPLY_FIELD_NUMBER = 3; - private boolean reply_; - /** - * required bool reply = 3; - */ - public boolean hasReply() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - /** - * required bool reply = 3; - */ - public boolean getReply() { - return reply_; - } - - private void initFields() { - from_ = akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance(); - gossip_ = akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance(); - reply_ = false; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasFrom()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasGossip()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasReply()) { - memoizedIsInitialized = 0; - return false; - } - if (!getFrom().isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - if (!getGossip().isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(akka.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeMessage(1, from_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeMessage(2, gossip_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeBool(3, reply_); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += akka.protobuf.CodedOutputStream - .computeMessageSize(1, from_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += akka.protobuf.CodedOutputStream - .computeMessageSize(2, gossip_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += akka.protobuf.CodedOutputStream - .computeBoolSize(3, reply_); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom( - akka.protobuf.ByteString data) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom( - akka.protobuf.ByteString data, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom(byte[] data) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom( - byte[] data, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom( - java.io.InputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseDelimitedFrom( - java.io.InputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom( - akka.protobuf.CodedInputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parseFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - @java.lang.Override - protected Builder newBuilderForType( - akka.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code MetricsGossipEnvelope} - * - *
-     **
-     * Metrics Gossip Envelope
-     * 
- */ - public static final class Builder extends - akka.protobuf.GeneratedMessage.Builder - implements akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelopeOrBuilder { - public static final akka.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossipEnvelope_descriptor; - } - - protected akka.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossipEnvelope_fieldAccessorTable - .ensureFieldAccessorsInitialized( - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.class, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.Builder.class); - } - - // Construct using akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - akka.protobuf.GeneratedMessage.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (akka.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - getFromFieldBuilder(); - getGossipFieldBuilder(); - } - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - if (fromBuilder_ == null) { - from_ = akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance(); - } else { - fromBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000001); - if (gossipBuilder_ == null) { - gossip_ = akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance(); - } else { - gossipBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000002); - reply_ = false; - bitField0_ = (bitField0_ & ~0x00000004); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public akka.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossipEnvelope_descriptor; - } - - public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope getDefaultInstanceForType() { - return akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.getDefaultInstance(); - } - - public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope build() { - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope buildPartial() { - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope result = new akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - if (fromBuilder_ == null) { - result.from_ = from_; - } else { - result.from_ = fromBuilder_.build(); - } - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - if (gossipBuilder_ == null) { - result.gossip_ = gossip_; - } else { - result.gossip_ = gossipBuilder_.build(); - } - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.reply_ = reply_; - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } - - public Builder mergeFrom(akka.protobuf.Message other) { - if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope) { - return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope other) { - if (other == akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope.getDefaultInstance()) return this; - if (other.hasFrom()) { - mergeFrom(other.getFrom()); - } - if (other.hasGossip()) { - mergeGossip(other.getGossip()); - } - if (other.hasReply()) { - setReply(other.getReply()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public final boolean isInitialized() { - if (!hasFrom()) { - - return false; - } - if (!hasGossip()) { - - return false; - } - if (!hasReply()) { - - return false; - } - if (!getFrom().isInitialized()) { - - return false; - } - if (!getGossip().isInitialized()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (akka.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipEnvelope) e.getUnfinishedMessage(); - throw e; - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - private int bitField0_; - - // required .Address from = 1; - private akka.cluster.protobuf.msg.ClusterMessages.Address from_ = akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance(); - private akka.protobuf.SingleFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder> fromBuilder_; - /** - * required .Address from = 1; - */ - public boolean hasFrom() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required .Address from = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.Address getFrom() { - if (fromBuilder_ == null) { - return from_; - } else { - return fromBuilder_.getMessage(); - } - } - /** - * required .Address from = 1; - */ - public Builder setFrom(akka.cluster.protobuf.msg.ClusterMessages.Address value) { - if (fromBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - from_ = value; - onChanged(); - } else { - fromBuilder_.setMessage(value); - } - bitField0_ |= 0x00000001; - return this; - } - /** - * required .Address from = 1; - */ - public Builder setFrom( - akka.cluster.protobuf.msg.ClusterMessages.Address.Builder builderForValue) { - if (fromBuilder_ == null) { - from_ = builderForValue.build(); - onChanged(); - } else { - fromBuilder_.setMessage(builderForValue.build()); - } - bitField0_ |= 0x00000001; - return this; - } - /** - * required .Address from = 1; - */ - public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.Address value) { - if (fromBuilder_ == null) { - if (((bitField0_ & 0x00000001) == 0x00000001) && - from_ != akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance()) { - from_ = - akka.cluster.protobuf.msg.ClusterMessages.Address.newBuilder(from_).mergeFrom(value).buildPartial(); - } else { - from_ = value; - } - onChanged(); - } else { - fromBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00000001; - return this; - } - /** - * required .Address from = 1; - */ - public Builder clearFrom() { - if (fromBuilder_ == null) { - from_ = akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance(); - onChanged(); - } else { - fromBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000001); - return this; - } - /** - * required .Address from = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.Address.Builder getFromBuilder() { - bitField0_ |= 0x00000001; - onChanged(); - return getFromFieldBuilder().getBuilder(); - } - /** - * required .Address from = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getFromOrBuilder() { - if (fromBuilder_ != null) { - return fromBuilder_.getMessageOrBuilder(); - } else { - return from_; - } - } - /** - * required .Address from = 1; - */ - private akka.protobuf.SingleFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder> - getFromFieldBuilder() { - if (fromBuilder_ == null) { - fromBuilder_ = new akka.protobuf.SingleFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder>( - from_, - getParentForChildren(), - isClean()); - from_ = null; - } - return fromBuilder_; - } - - // required .MetricsGossip gossip = 2; - private akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip gossip_ = akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance(); - private akka.protobuf.SingleFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder> gossipBuilder_; - /** - * required .MetricsGossip gossip = 2; - */ - public boolean hasGossip() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * required .MetricsGossip gossip = 2; - */ - public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip getGossip() { - if (gossipBuilder_ == null) { - return gossip_; - } else { - return gossipBuilder_.getMessage(); - } - } - /** - * required .MetricsGossip gossip = 2; - */ - public Builder setGossip(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip value) { - if (gossipBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - gossip_ = value; - onChanged(); - } else { - gossipBuilder_.setMessage(value); - } - bitField0_ |= 0x00000002; - return this; - } - /** - * required .MetricsGossip gossip = 2; - */ - public Builder setGossip( - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder builderForValue) { - if (gossipBuilder_ == null) { - gossip_ = builderForValue.build(); - onChanged(); - } else { - gossipBuilder_.setMessage(builderForValue.build()); - } - bitField0_ |= 0x00000002; - return this; - } - /** - * required .MetricsGossip gossip = 2; - */ - public Builder mergeGossip(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip value) { - if (gossipBuilder_ == null) { - if (((bitField0_ & 0x00000002) == 0x00000002) && - gossip_ != akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance()) { - gossip_ = - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.newBuilder(gossip_).mergeFrom(value).buildPartial(); - } else { - gossip_ = value; - } - onChanged(); - } else { - gossipBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00000002; - return this; - } - /** - * required .MetricsGossip gossip = 2; - */ - public Builder clearGossip() { - if (gossipBuilder_ == null) { - gossip_ = akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance(); - onChanged(); - } else { - gossipBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - /** - * required .MetricsGossip gossip = 2; - */ - public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder getGossipBuilder() { - bitField0_ |= 0x00000002; - onChanged(); - return getGossipFieldBuilder().getBuilder(); - } - /** - * required .MetricsGossip gossip = 2; - */ - public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder getGossipOrBuilder() { - if (gossipBuilder_ != null) { - return gossipBuilder_.getMessageOrBuilder(); - } else { - return gossip_; - } - } - /** - * required .MetricsGossip gossip = 2; - */ - private akka.protobuf.SingleFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder> - getGossipFieldBuilder() { - if (gossipBuilder_ == null) { - gossipBuilder_ = new akka.protobuf.SingleFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder>( - gossip_, - getParentForChildren(), - isClean()); - gossip_ = null; - } - return gossipBuilder_; - } - - // required bool reply = 3; - private boolean reply_ ; - /** - * required bool reply = 3; - */ - public boolean hasReply() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - /** - * required bool reply = 3; - */ - public boolean getReply() { - return reply_; - } - /** - * required bool reply = 3; - */ - public Builder setReply(boolean value) { - bitField0_ |= 0x00000004; - reply_ = value; - onChanged(); - return this; - } - /** - * required bool reply = 3; - */ - public Builder clearReply() { - bitField0_ = (bitField0_ & ~0x00000004); - reply_ = false; - onChanged(); - return this; - } - - // @@protoc_insertion_point(builder_scope:MetricsGossipEnvelope) - } - - static { - defaultInstance = new MetricsGossipEnvelope(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:MetricsGossipEnvelope) - } - - public interface MetricsGossipOrBuilder - extends akka.protobuf.MessageOrBuilder { - - // repeated .Address allAddresses = 1; - /** - * repeated .Address allAddresses = 1; - */ - java.util.List - getAllAddressesList(); - /** - * repeated .Address allAddresses = 1; - */ - akka.cluster.protobuf.msg.ClusterMessages.Address getAllAddresses(int index); - /** - * repeated .Address allAddresses = 1; - */ - int getAllAddressesCount(); - /** - * repeated .Address allAddresses = 1; - */ - java.util.List - getAllAddressesOrBuilderList(); - /** - * repeated .Address allAddresses = 1; - */ - akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getAllAddressesOrBuilder( - int index); - - // repeated string allMetricNames = 2; - /** - * repeated string allMetricNames = 2; - */ - java.util.List - getAllMetricNamesList(); - /** - * repeated string allMetricNames = 2; - */ - int getAllMetricNamesCount(); - /** - * repeated string allMetricNames = 2; - */ - java.lang.String getAllMetricNames(int index); - /** - * repeated string allMetricNames = 2; - */ - akka.protobuf.ByteString - getAllMetricNamesBytes(int index); - - // repeated .NodeMetrics nodeMetrics = 3; - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - java.util.List - getNodeMetricsList(); - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics getNodeMetrics(int index); - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - int getNodeMetricsCount(); - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - java.util.List - getNodeMetricsOrBuilderList(); - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder getNodeMetricsOrBuilder( - int index); - } - /** - * Protobuf type {@code MetricsGossip} - * - *
-   **
-   * Metrics Gossip
-   * 
- */ - public static final class MetricsGossip extends - akka.protobuf.GeneratedMessage - implements MetricsGossipOrBuilder { - // Use MetricsGossip.newBuilder() to construct. - private MetricsGossip(akka.protobuf.GeneratedMessage.Builder builder) { - super(builder); - this.unknownFields = builder.getUnknownFields(); - } - private MetricsGossip(boolean noInit) { this.unknownFields = akka.protobuf.UnknownFieldSet.getDefaultInstance(); } - - private static final MetricsGossip defaultInstance; - public static MetricsGossip getDefaultInstance() { - return defaultInstance; - } - - public MetricsGossip getDefaultInstanceForType() { - return defaultInstance; - } - - private final akka.protobuf.UnknownFieldSet unknownFields; - @java.lang.Override - public final akka.protobuf.UnknownFieldSet - getUnknownFields() { - return this.unknownFields; - } - private MetricsGossip( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - initFields(); - int mutable_bitField0_ = 0; - akka.protobuf.UnknownFieldSet.Builder unknownFields = - akka.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - done = true; - } - break; - } - case 10: { - if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { - allAddresses_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000001; - } - allAddresses_.add(input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.Address.PARSER, extensionRegistry)); - break; - } - case 18: { - if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { - allMetricNames_ = new akka.protobuf.LazyStringArrayList(); - mutable_bitField0_ |= 0x00000002; - } - allMetricNames_.add(input.readBytes()); - break; - } - case 26: { - if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { - nodeMetrics_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000004; - } - nodeMetrics_.add(input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.PARSER, extensionRegistry)); - break; - } - } - } - } catch (akka.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new akka.protobuf.InvalidProtocolBufferException( - e.getMessage()).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { - allAddresses_ = java.util.Collections.unmodifiableList(allAddresses_); - } - if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { - allMetricNames_ = new akka.protobuf.UnmodifiableLazyStringList(allMetricNames_); - } - if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { - nodeMetrics_ = java.util.Collections.unmodifiableList(nodeMetrics_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final akka.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossip_descriptor; - } - - protected akka.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossip_fieldAccessorTable - .ensureFieldAccessorsInitialized( - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.class, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder.class); - } - - public static akka.protobuf.Parser PARSER = - new akka.protobuf.AbstractParser() { - public MetricsGossip parsePartialFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return new MetricsGossip(input, extensionRegistry); - } - }; - - @java.lang.Override - public akka.protobuf.Parser getParserForType() { - return PARSER; - } - - // repeated .Address allAddresses = 1; - public static final int ALLADDRESSES_FIELD_NUMBER = 1; - private java.util.List allAddresses_; - /** - * repeated .Address allAddresses = 1; - */ - public java.util.List getAllAddressesList() { - return allAddresses_; - } - /** - * repeated .Address allAddresses = 1; - */ - public java.util.List - getAllAddressesOrBuilderList() { - return allAddresses_; - } - /** - * repeated .Address allAddresses = 1; - */ - public int getAllAddressesCount() { - return allAddresses_.size(); - } - /** - * repeated .Address allAddresses = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.Address getAllAddresses(int index) { - return allAddresses_.get(index); - } - /** - * repeated .Address allAddresses = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getAllAddressesOrBuilder( - int index) { - return allAddresses_.get(index); - } - - // repeated string allMetricNames = 2; - public static final int ALLMETRICNAMES_FIELD_NUMBER = 2; - private akka.protobuf.LazyStringList allMetricNames_; - /** - * repeated string allMetricNames = 2; - */ - public java.util.List - getAllMetricNamesList() { - return allMetricNames_; - } - /** - * repeated string allMetricNames = 2; - */ - public int getAllMetricNamesCount() { - return allMetricNames_.size(); - } - /** - * repeated string allMetricNames = 2; - */ - public java.lang.String getAllMetricNames(int index) { - return allMetricNames_.get(index); - } - /** - * repeated string allMetricNames = 2; - */ - public akka.protobuf.ByteString - getAllMetricNamesBytes(int index) { - return allMetricNames_.getByteString(index); - } - - // repeated .NodeMetrics nodeMetrics = 3; - public static final int NODEMETRICS_FIELD_NUMBER = 3; - private java.util.List nodeMetrics_; - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public java.util.List getNodeMetricsList() { - return nodeMetrics_; - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public java.util.List - getNodeMetricsOrBuilderList() { - return nodeMetrics_; - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public int getNodeMetricsCount() { - return nodeMetrics_.size(); - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics getNodeMetrics(int index) { - return nodeMetrics_.get(index); - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder getNodeMetricsOrBuilder( - int index) { - return nodeMetrics_.get(index); - } - - private void initFields() { - allAddresses_ = java.util.Collections.emptyList(); - allMetricNames_ = akka.protobuf.LazyStringArrayList.EMPTY; - nodeMetrics_ = java.util.Collections.emptyList(); - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - for (int i = 0; i < getAllAddressesCount(); i++) { - if (!getAllAddresses(i).isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } - for (int i = 0; i < getNodeMetricsCount(); i++) { - if (!getNodeMetrics(i).isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(akka.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - for (int i = 0; i < allAddresses_.size(); i++) { - output.writeMessage(1, allAddresses_.get(i)); - } - for (int i = 0; i < allMetricNames_.size(); i++) { - output.writeBytes(2, allMetricNames_.getByteString(i)); - } - for (int i = 0; i < nodeMetrics_.size(); i++) { - output.writeMessage(3, nodeMetrics_.get(i)); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - for (int i = 0; i < allAddresses_.size(); i++) { - size += akka.protobuf.CodedOutputStream - .computeMessageSize(1, allAddresses_.get(i)); - } - { - int dataSize = 0; - for (int i = 0; i < allMetricNames_.size(); i++) { - dataSize += akka.protobuf.CodedOutputStream - .computeBytesSizeNoTag(allMetricNames_.getByteString(i)); - } - size += dataSize; - size += 1 * getAllMetricNamesList().size(); - } - for (int i = 0; i < nodeMetrics_.size(); i++) { - size += akka.protobuf.CodedOutputStream - .computeMessageSize(3, nodeMetrics_.get(i)); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom( - akka.protobuf.ByteString data) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom( - akka.protobuf.ByteString data, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom(byte[] data) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom( - byte[] data, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom( - java.io.InputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseDelimitedFrom( - java.io.InputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom( - akka.protobuf.CodedInputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parseFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - @java.lang.Override - protected Builder newBuilderForType( - akka.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code MetricsGossip} - * - *
-     **
-     * Metrics Gossip
-     * 
- */ - public static final class Builder extends - akka.protobuf.GeneratedMessage.Builder - implements akka.cluster.protobuf.msg.ClusterMessages.MetricsGossipOrBuilder { - public static final akka.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossip_descriptor; - } - - protected akka.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossip_fieldAccessorTable - .ensureFieldAccessorsInitialized( - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.class, akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.Builder.class); - } - - // Construct using akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - akka.protobuf.GeneratedMessage.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (akka.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - getAllAddressesFieldBuilder(); - getNodeMetricsFieldBuilder(); - } - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - if (allAddressesBuilder_ == null) { - allAddresses_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); - } else { - allAddressesBuilder_.clear(); - } - allMetricNames_ = akka.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000002); - if (nodeMetricsBuilder_ == null) { - nodeMetrics_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); - } else { - nodeMetricsBuilder_.clear(); - } - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public akka.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_MetricsGossip_descriptor; - } - - public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip getDefaultInstanceForType() { - return akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance(); - } - - public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip build() { - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip buildPartial() { - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip result = new akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip(this); - int from_bitField0_ = bitField0_; - if (allAddressesBuilder_ == null) { - if (((bitField0_ & 0x00000001) == 0x00000001)) { - allAddresses_ = java.util.Collections.unmodifiableList(allAddresses_); - bitField0_ = (bitField0_ & ~0x00000001); - } - result.allAddresses_ = allAddresses_; - } else { - result.allAddresses_ = allAddressesBuilder_.build(); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - allMetricNames_ = new akka.protobuf.UnmodifiableLazyStringList( - allMetricNames_); - bitField0_ = (bitField0_ & ~0x00000002); - } - result.allMetricNames_ = allMetricNames_; - if (nodeMetricsBuilder_ == null) { - if (((bitField0_ & 0x00000004) == 0x00000004)) { - nodeMetrics_ = java.util.Collections.unmodifiableList(nodeMetrics_); - bitField0_ = (bitField0_ & ~0x00000004); - } - result.nodeMetrics_ = nodeMetrics_; - } else { - result.nodeMetrics_ = nodeMetricsBuilder_.build(); - } - onBuilt(); - return result; - } - - public Builder mergeFrom(akka.protobuf.Message other) { - if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip) { - return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip other) { - if (other == akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip.getDefaultInstance()) return this; - if (allAddressesBuilder_ == null) { - if (!other.allAddresses_.isEmpty()) { - if (allAddresses_.isEmpty()) { - allAddresses_ = other.allAddresses_; - bitField0_ = (bitField0_ & ~0x00000001); - } else { - ensureAllAddressesIsMutable(); - allAddresses_.addAll(other.allAddresses_); - } - onChanged(); - } - } else { - if (!other.allAddresses_.isEmpty()) { - if (allAddressesBuilder_.isEmpty()) { - allAddressesBuilder_.dispose(); - allAddressesBuilder_ = null; - allAddresses_ = other.allAddresses_; - bitField0_ = (bitField0_ & ~0x00000001); - allAddressesBuilder_ = - akka.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? - getAllAddressesFieldBuilder() : null; - } else { - allAddressesBuilder_.addAllMessages(other.allAddresses_); - } - } - } - if (!other.allMetricNames_.isEmpty()) { - if (allMetricNames_.isEmpty()) { - allMetricNames_ = other.allMetricNames_; - bitField0_ = (bitField0_ & ~0x00000002); - } else { - ensureAllMetricNamesIsMutable(); - allMetricNames_.addAll(other.allMetricNames_); - } - onChanged(); - } - if (nodeMetricsBuilder_ == null) { - if (!other.nodeMetrics_.isEmpty()) { - if (nodeMetrics_.isEmpty()) { - nodeMetrics_ = other.nodeMetrics_; - bitField0_ = (bitField0_ & ~0x00000004); - } else { - ensureNodeMetricsIsMutable(); - nodeMetrics_.addAll(other.nodeMetrics_); - } - onChanged(); - } - } else { - if (!other.nodeMetrics_.isEmpty()) { - if (nodeMetricsBuilder_.isEmpty()) { - nodeMetricsBuilder_.dispose(); - nodeMetricsBuilder_ = null; - nodeMetrics_ = other.nodeMetrics_; - bitField0_ = (bitField0_ & ~0x00000004); - nodeMetricsBuilder_ = - akka.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? - getNodeMetricsFieldBuilder() : null; - } else { - nodeMetricsBuilder_.addAllMessages(other.nodeMetrics_); - } - } - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public final boolean isInitialized() { - for (int i = 0; i < getAllAddressesCount(); i++) { - if (!getAllAddresses(i).isInitialized()) { - - return false; - } - } - for (int i = 0; i < getNodeMetricsCount(); i++) { - if (!getNodeMetrics(i).isInitialized()) { - - return false; - } - } - return true; - } - - public Builder mergeFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (akka.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.MetricsGossip) e.getUnfinishedMessage(); - throw e; - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - private int bitField0_; - - // repeated .Address allAddresses = 1; - private java.util.List allAddresses_ = - java.util.Collections.emptyList(); - private void ensureAllAddressesIsMutable() { - if (!((bitField0_ & 0x00000001) == 0x00000001)) { - allAddresses_ = new java.util.ArrayList(allAddresses_); - bitField0_ |= 0x00000001; - } - } - - private akka.protobuf.RepeatedFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder> allAddressesBuilder_; - - /** - * repeated .Address allAddresses = 1; - */ - public java.util.List getAllAddressesList() { - if (allAddressesBuilder_ == null) { - return java.util.Collections.unmodifiableList(allAddresses_); - } else { - return allAddressesBuilder_.getMessageList(); - } - } - /** - * repeated .Address allAddresses = 1; - */ - public int getAllAddressesCount() { - if (allAddressesBuilder_ == null) { - return allAddresses_.size(); - } else { - return allAddressesBuilder_.getCount(); - } - } - /** - * repeated .Address allAddresses = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.Address getAllAddresses(int index) { - if (allAddressesBuilder_ == null) { - return allAddresses_.get(index); - } else { - return allAddressesBuilder_.getMessage(index); - } - } - /** - * repeated .Address allAddresses = 1; - */ - public Builder setAllAddresses( - int index, akka.cluster.protobuf.msg.ClusterMessages.Address value) { - if (allAddressesBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureAllAddressesIsMutable(); - allAddresses_.set(index, value); - onChanged(); - } else { - allAddressesBuilder_.setMessage(index, value); - } - return this; - } - /** - * repeated .Address allAddresses = 1; - */ - public Builder setAllAddresses( - int index, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder builderForValue) { - if (allAddressesBuilder_ == null) { - ensureAllAddressesIsMutable(); - allAddresses_.set(index, builderForValue.build()); - onChanged(); - } else { - allAddressesBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .Address allAddresses = 1; - */ - public Builder addAllAddresses(akka.cluster.protobuf.msg.ClusterMessages.Address value) { - if (allAddressesBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureAllAddressesIsMutable(); - allAddresses_.add(value); - onChanged(); - } else { - allAddressesBuilder_.addMessage(value); - } - return this; - } - /** - * repeated .Address allAddresses = 1; - */ - public Builder addAllAddresses( - int index, akka.cluster.protobuf.msg.ClusterMessages.Address value) { - if (allAddressesBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureAllAddressesIsMutable(); - allAddresses_.add(index, value); - onChanged(); - } else { - allAddressesBuilder_.addMessage(index, value); - } - return this; - } - /** - * repeated .Address allAddresses = 1; - */ - public Builder addAllAddresses( - akka.cluster.protobuf.msg.ClusterMessages.Address.Builder builderForValue) { - if (allAddressesBuilder_ == null) { - ensureAllAddressesIsMutable(); - allAddresses_.add(builderForValue.build()); - onChanged(); - } else { - allAddressesBuilder_.addMessage(builderForValue.build()); - } - return this; - } - /** - * repeated .Address allAddresses = 1; - */ - public Builder addAllAddresses( - int index, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder builderForValue) { - if (allAddressesBuilder_ == null) { - ensureAllAddressesIsMutable(); - allAddresses_.add(index, builderForValue.build()); - onChanged(); - } else { - allAddressesBuilder_.addMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .Address allAddresses = 1; - */ - public Builder addAllAllAddresses( - java.lang.Iterable values) { - if (allAddressesBuilder_ == null) { - ensureAllAddressesIsMutable(); - super.addAll(values, allAddresses_); - onChanged(); - } else { - allAddressesBuilder_.addAllMessages(values); - } - return this; - } - /** - * repeated .Address allAddresses = 1; - */ - public Builder clearAllAddresses() { - if (allAddressesBuilder_ == null) { - allAddresses_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); - onChanged(); - } else { - allAddressesBuilder_.clear(); - } - return this; - } - /** - * repeated .Address allAddresses = 1; - */ - public Builder removeAllAddresses(int index) { - if (allAddressesBuilder_ == null) { - ensureAllAddressesIsMutable(); - allAddresses_.remove(index); - onChanged(); - } else { - allAddressesBuilder_.remove(index); - } - return this; - } - /** - * repeated .Address allAddresses = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.Address.Builder getAllAddressesBuilder( - int index) { - return getAllAddressesFieldBuilder().getBuilder(index); - } - /** - * repeated .Address allAddresses = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder getAllAddressesOrBuilder( - int index) { - if (allAddressesBuilder_ == null) { - return allAddresses_.get(index); } else { - return allAddressesBuilder_.getMessageOrBuilder(index); - } - } - /** - * repeated .Address allAddresses = 1; - */ - public java.util.List - getAllAddressesOrBuilderList() { - if (allAddressesBuilder_ != null) { - return allAddressesBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(allAddresses_); - } - } - /** - * repeated .Address allAddresses = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.Address.Builder addAllAddressesBuilder() { - return getAllAddressesFieldBuilder().addBuilder( - akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance()); - } - /** - * repeated .Address allAddresses = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.Address.Builder addAllAddressesBuilder( - int index) { - return getAllAddressesFieldBuilder().addBuilder( - index, akka.cluster.protobuf.msg.ClusterMessages.Address.getDefaultInstance()); - } - /** - * repeated .Address allAddresses = 1; - */ - public java.util.List - getAllAddressesBuilderList() { - return getAllAddressesFieldBuilder().getBuilderList(); - } - private akka.protobuf.RepeatedFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder> - getAllAddressesFieldBuilder() { - if (allAddressesBuilder_ == null) { - allAddressesBuilder_ = new akka.protobuf.RepeatedFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.Address, akka.cluster.protobuf.msg.ClusterMessages.Address.Builder, akka.cluster.protobuf.msg.ClusterMessages.AddressOrBuilder>( - allAddresses_, - ((bitField0_ & 0x00000001) == 0x00000001), - getParentForChildren(), - isClean()); - allAddresses_ = null; - } - return allAddressesBuilder_; - } - - // repeated string allMetricNames = 2; - private akka.protobuf.LazyStringList allMetricNames_ = akka.protobuf.LazyStringArrayList.EMPTY; - private void ensureAllMetricNamesIsMutable() { - if (!((bitField0_ & 0x00000002) == 0x00000002)) { - allMetricNames_ = new akka.protobuf.LazyStringArrayList(allMetricNames_); - bitField0_ |= 0x00000002; - } - } - /** - * repeated string allMetricNames = 2; - */ - public java.util.List - getAllMetricNamesList() { - return java.util.Collections.unmodifiableList(allMetricNames_); - } - /** - * repeated string allMetricNames = 2; - */ - public int getAllMetricNamesCount() { - return allMetricNames_.size(); - } - /** - * repeated string allMetricNames = 2; - */ - public java.lang.String getAllMetricNames(int index) { - return allMetricNames_.get(index); - } - /** - * repeated string allMetricNames = 2; - */ - public akka.protobuf.ByteString - getAllMetricNamesBytes(int index) { - return allMetricNames_.getByteString(index); - } - /** - * repeated string allMetricNames = 2; - */ - public Builder setAllMetricNames( - int index, java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - ensureAllMetricNamesIsMutable(); - allMetricNames_.set(index, value); - onChanged(); - return this; - } - /** - * repeated string allMetricNames = 2; - */ - public Builder addAllMetricNames( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - ensureAllMetricNamesIsMutable(); - allMetricNames_.add(value); - onChanged(); - return this; - } - /** - * repeated string allMetricNames = 2; - */ - public Builder addAllAllMetricNames( - java.lang.Iterable values) { - ensureAllMetricNamesIsMutable(); - super.addAll(values, allMetricNames_); - onChanged(); - return this; - } - /** - * repeated string allMetricNames = 2; - */ - public Builder clearAllMetricNames() { - allMetricNames_ = akka.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000002); - onChanged(); - return this; - } - /** - * repeated string allMetricNames = 2; - */ - public Builder addAllMetricNamesBytes( - akka.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - ensureAllMetricNamesIsMutable(); - allMetricNames_.add(value); - onChanged(); - return this; - } - - // repeated .NodeMetrics nodeMetrics = 3; - private java.util.List nodeMetrics_ = - java.util.Collections.emptyList(); - private void ensureNodeMetricsIsMutable() { - if (!((bitField0_ & 0x00000004) == 0x00000004)) { - nodeMetrics_ = new java.util.ArrayList(nodeMetrics_); - bitField0_ |= 0x00000004; - } - } - - private akka.protobuf.RepeatedFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder> nodeMetricsBuilder_; - - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public java.util.List getNodeMetricsList() { - if (nodeMetricsBuilder_ == null) { - return java.util.Collections.unmodifiableList(nodeMetrics_); - } else { - return nodeMetricsBuilder_.getMessageList(); - } - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public int getNodeMetricsCount() { - if (nodeMetricsBuilder_ == null) { - return nodeMetrics_.size(); - } else { - return nodeMetricsBuilder_.getCount(); - } - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics getNodeMetrics(int index) { - if (nodeMetricsBuilder_ == null) { - return nodeMetrics_.get(index); - } else { - return nodeMetricsBuilder_.getMessage(index); - } - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public Builder setNodeMetrics( - int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics value) { - if (nodeMetricsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureNodeMetricsIsMutable(); - nodeMetrics_.set(index, value); - onChanged(); - } else { - nodeMetricsBuilder_.setMessage(index, value); - } - return this; - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public Builder setNodeMetrics( - int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder builderForValue) { - if (nodeMetricsBuilder_ == null) { - ensureNodeMetricsIsMutable(); - nodeMetrics_.set(index, builderForValue.build()); - onChanged(); - } else { - nodeMetricsBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public Builder addNodeMetrics(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics value) { - if (nodeMetricsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureNodeMetricsIsMutable(); - nodeMetrics_.add(value); - onChanged(); - } else { - nodeMetricsBuilder_.addMessage(value); - } - return this; - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public Builder addNodeMetrics( - int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics value) { - if (nodeMetricsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureNodeMetricsIsMutable(); - nodeMetrics_.add(index, value); - onChanged(); - } else { - nodeMetricsBuilder_.addMessage(index, value); - } - return this; - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public Builder addNodeMetrics( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder builderForValue) { - if (nodeMetricsBuilder_ == null) { - ensureNodeMetricsIsMutable(); - nodeMetrics_.add(builderForValue.build()); - onChanged(); - } else { - nodeMetricsBuilder_.addMessage(builderForValue.build()); - } - return this; - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public Builder addNodeMetrics( - int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder builderForValue) { - if (nodeMetricsBuilder_ == null) { - ensureNodeMetricsIsMutable(); - nodeMetrics_.add(index, builderForValue.build()); - onChanged(); - } else { - nodeMetricsBuilder_.addMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public Builder addAllNodeMetrics( - java.lang.Iterable values) { - if (nodeMetricsBuilder_ == null) { - ensureNodeMetricsIsMutable(); - super.addAll(values, nodeMetrics_); - onChanged(); - } else { - nodeMetricsBuilder_.addAllMessages(values); - } - return this; - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public Builder clearNodeMetrics() { - if (nodeMetricsBuilder_ == null) { - nodeMetrics_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); - onChanged(); - } else { - nodeMetricsBuilder_.clear(); - } - return this; - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public Builder removeNodeMetrics(int index) { - if (nodeMetricsBuilder_ == null) { - ensureNodeMetricsIsMutable(); - nodeMetrics_.remove(index); - onChanged(); - } else { - nodeMetricsBuilder_.remove(index); - } - return this; - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder getNodeMetricsBuilder( - int index) { - return getNodeMetricsFieldBuilder().getBuilder(index); - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder getNodeMetricsOrBuilder( - int index) { - if (nodeMetricsBuilder_ == null) { - return nodeMetrics_.get(index); } else { - return nodeMetricsBuilder_.getMessageOrBuilder(index); - } - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public java.util.List - getNodeMetricsOrBuilderList() { - if (nodeMetricsBuilder_ != null) { - return nodeMetricsBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(nodeMetrics_); - } - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder addNodeMetricsBuilder() { - return getNodeMetricsFieldBuilder().addBuilder( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.getDefaultInstance()); - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder addNodeMetricsBuilder( - int index) { - return getNodeMetricsFieldBuilder().addBuilder( - index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.getDefaultInstance()); - } - /** - * repeated .NodeMetrics nodeMetrics = 3; - */ - public java.util.List - getNodeMetricsBuilderList() { - return getNodeMetricsFieldBuilder().getBuilderList(); - } - private akka.protobuf.RepeatedFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder> - getNodeMetricsFieldBuilder() { - if (nodeMetricsBuilder_ == null) { - nodeMetricsBuilder_ = new akka.protobuf.RepeatedFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder>( - nodeMetrics_, - ((bitField0_ & 0x00000004) == 0x00000004), - getParentForChildren(), - isClean()); - nodeMetrics_ = null; - } - return nodeMetricsBuilder_; - } - - // @@protoc_insertion_point(builder_scope:MetricsGossip) - } - - static { - defaultInstance = new MetricsGossip(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:MetricsGossip) - } - - public interface NodeMetricsOrBuilder - extends akka.protobuf.MessageOrBuilder { - - // required int32 addressIndex = 1; - /** - * required int32 addressIndex = 1; - */ - boolean hasAddressIndex(); - /** - * required int32 addressIndex = 1; - */ - int getAddressIndex(); - - // required int64 timestamp = 2; - /** - * required int64 timestamp = 2; - */ - boolean hasTimestamp(); - /** - * required int64 timestamp = 2; - */ - long getTimestamp(); - - // repeated .NodeMetrics.Metric metrics = 3; - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - java.util.List - getMetricsList(); - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric getMetrics(int index); - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - int getMetricsCount(); - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - java.util.List - getMetricsOrBuilderList(); - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder getMetricsOrBuilder( - int index); - } - /** - * Protobuf type {@code NodeMetrics} - * - *
-   **
-   * Node Metrics
-   * 
- */ - public static final class NodeMetrics extends - akka.protobuf.GeneratedMessage - implements NodeMetricsOrBuilder { - // Use NodeMetrics.newBuilder() to construct. - private NodeMetrics(akka.protobuf.GeneratedMessage.Builder builder) { - super(builder); - this.unknownFields = builder.getUnknownFields(); - } - private NodeMetrics(boolean noInit) { this.unknownFields = akka.protobuf.UnknownFieldSet.getDefaultInstance(); } - - private static final NodeMetrics defaultInstance; - public static NodeMetrics getDefaultInstance() { - return defaultInstance; - } - - public NodeMetrics getDefaultInstanceForType() { - return defaultInstance; - } - - private final akka.protobuf.UnknownFieldSet unknownFields; - @java.lang.Override - public final akka.protobuf.UnknownFieldSet - getUnknownFields() { - return this.unknownFields; - } - private NodeMetrics( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - initFields(); - int mutable_bitField0_ = 0; - akka.protobuf.UnknownFieldSet.Builder unknownFields = - akka.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - done = true; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - addressIndex_ = input.readInt32(); - break; - } - case 16: { - bitField0_ |= 0x00000002; - timestamp_ = input.readInt64(); - break; - } - case 26: { - if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { - metrics_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000004; - } - metrics_.add(input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.PARSER, extensionRegistry)); - break; - } - } - } - } catch (akka.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new akka.protobuf.InvalidProtocolBufferException( - e.getMessage()).setUnfinishedMessage(this); - } finally { - if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { - metrics_ = java.util.Collections.unmodifiableList(metrics_); - } - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final akka.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_descriptor; - } - - protected akka.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_fieldAccessorTable - .ensureFieldAccessorsInitialized( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder.class); - } - - public static akka.protobuf.Parser PARSER = - new akka.protobuf.AbstractParser() { - public NodeMetrics parsePartialFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return new NodeMetrics(input, extensionRegistry); - } - }; - - @java.lang.Override - public akka.protobuf.Parser getParserForType() { - return PARSER; - } - - /** - * Protobuf enum {@code NodeMetrics.NumberType} - */ - public enum NumberType - implements akka.protobuf.ProtocolMessageEnum { - /** - * Serialized = 0; - */ - Serialized(0, 0), - /** - * Double = 1; - */ - Double(1, 1), - /** - * Float = 2; - */ - Float(2, 2), - /** - * Integer = 3; - */ - Integer(3, 3), - /** - * Long = 4; - */ - Long(4, 4), - ; - - /** - * Serialized = 0; - */ - public static final int Serialized_VALUE = 0; - /** - * Double = 1; - */ - public static final int Double_VALUE = 1; - /** - * Float = 2; - */ - public static final int Float_VALUE = 2; - /** - * Integer = 3; - */ - public static final int Integer_VALUE = 3; - /** - * Long = 4; - */ - public static final int Long_VALUE = 4; - - - public final int getNumber() { return value; } - - public static NumberType valueOf(int value) { - switch (value) { - case 0: return Serialized; - case 1: return Double; - case 2: return Float; - case 3: return Integer; - case 4: return Long; - default: return null; - } - } - - public static akka.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static akka.protobuf.Internal.EnumLiteMap - internalValueMap = - new akka.protobuf.Internal.EnumLiteMap() { - public NumberType findValueByNumber(int number) { - return NumberType.valueOf(number); - } - }; - - public final akka.protobuf.Descriptors.EnumValueDescriptor - getValueDescriptor() { - return getDescriptor().getValues().get(index); - } - public final akka.protobuf.Descriptors.EnumDescriptor - getDescriptorForType() { - return getDescriptor(); - } - public static final akka.protobuf.Descriptors.EnumDescriptor - getDescriptor() { - return akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.getDescriptor().getEnumTypes().get(0); - } - - private static final NumberType[] VALUES = values(); - - public static NumberType valueOf( - akka.protobuf.Descriptors.EnumValueDescriptor desc) { - if (desc.getType() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "EnumValueDescriptor is not for this type."); - } - return VALUES[desc.getIndex()]; - } - - private final int index; - private final int value; - - private NumberType(int index, int value) { - this.index = index; - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:NodeMetrics.NumberType) - } - - public interface NumberOrBuilder - extends akka.protobuf.MessageOrBuilder { - - // required .NodeMetrics.NumberType type = 1; - /** - * required .NodeMetrics.NumberType type = 1; - */ - boolean hasType(); - /** - * required .NodeMetrics.NumberType type = 1; - */ - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType getType(); - - // optional uint32 value32 = 2; - /** - * optional uint32 value32 = 2; - */ - boolean hasValue32(); - /** - * optional uint32 value32 = 2; - */ - int getValue32(); - - // optional uint64 value64 = 3; - /** - * optional uint64 value64 = 3; - */ - boolean hasValue64(); - /** - * optional uint64 value64 = 3; - */ - long getValue64(); - - // optional bytes serialized = 4; - /** - * optional bytes serialized = 4; - */ - boolean hasSerialized(); - /** - * optional bytes serialized = 4; - */ - akka.protobuf.ByteString getSerialized(); - } - /** - * Protobuf type {@code NodeMetrics.Number} - */ - public static final class Number extends - akka.protobuf.GeneratedMessage - implements NumberOrBuilder { - // Use Number.newBuilder() to construct. - private Number(akka.protobuf.GeneratedMessage.Builder builder) { - super(builder); - this.unknownFields = builder.getUnknownFields(); - } - private Number(boolean noInit) { this.unknownFields = akka.protobuf.UnknownFieldSet.getDefaultInstance(); } - - private static final Number defaultInstance; - public static Number getDefaultInstance() { - return defaultInstance; - } - - public Number getDefaultInstanceForType() { - return defaultInstance; - } - - private final akka.protobuf.UnknownFieldSet unknownFields; - @java.lang.Override - public final akka.protobuf.UnknownFieldSet - getUnknownFields() { - return this.unknownFields; - } - private Number( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - initFields(); - int mutable_bitField0_ = 0; - akka.protobuf.UnknownFieldSet.Builder unknownFields = - akka.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - done = true; - } - break; - } - case 8: { - int rawValue = input.readEnum(); - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType value = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(1, rawValue); - } else { - bitField0_ |= 0x00000001; - type_ = value; - } - break; - } - case 16: { - bitField0_ |= 0x00000002; - value32_ = input.readUInt32(); - break; - } - case 24: { - bitField0_ |= 0x00000004; - value64_ = input.readUInt64(); - break; - } - case 34: { - bitField0_ |= 0x00000008; - serialized_ = input.readBytes(); - break; - } - } - } - } catch (akka.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new akka.protobuf.InvalidProtocolBufferException( - e.getMessage()).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final akka.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Number_descriptor; - } - - protected akka.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Number_fieldAccessorTable - .ensureFieldAccessorsInitialized( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder.class); - } - - public static akka.protobuf.Parser PARSER = - new akka.protobuf.AbstractParser() { - public Number parsePartialFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return new Number(input, extensionRegistry); - } - }; - - @java.lang.Override - public akka.protobuf.Parser getParserForType() { - return PARSER; - } - - private int bitField0_; - // required .NodeMetrics.NumberType type = 1; - public static final int TYPE_FIELD_NUMBER = 1; - private akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType type_; - /** - * required .NodeMetrics.NumberType type = 1; - */ - public boolean hasType() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required .NodeMetrics.NumberType type = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType getType() { - return type_; - } - - // optional uint32 value32 = 2; - public static final int VALUE32_FIELD_NUMBER = 2; - private int value32_; - /** - * optional uint32 value32 = 2; - */ - public boolean hasValue32() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * optional uint32 value32 = 2; - */ - public int getValue32() { - return value32_; - } - - // optional uint64 value64 = 3; - public static final int VALUE64_FIELD_NUMBER = 3; - private long value64_; - /** - * optional uint64 value64 = 3; - */ - public boolean hasValue64() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - /** - * optional uint64 value64 = 3; - */ - public long getValue64() { - return value64_; - } - - // optional bytes serialized = 4; - public static final int SERIALIZED_FIELD_NUMBER = 4; - private akka.protobuf.ByteString serialized_; - /** - * optional bytes serialized = 4; - */ - public boolean hasSerialized() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - /** - * optional bytes serialized = 4; - */ - public akka.protobuf.ByteString getSerialized() { - return serialized_; - } - - private void initFields() { - type_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType.Serialized; - value32_ = 0; - value64_ = 0L; - serialized_ = akka.protobuf.ByteString.EMPTY; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasType()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(akka.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeEnum(1, type_.getNumber()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, value32_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeUInt64(3, value64_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeBytes(4, serialized_); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += akka.protobuf.CodedOutputStream - .computeEnumSize(1, type_.getNumber()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += akka.protobuf.CodedOutputStream - .computeUInt32Size(2, value32_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += akka.protobuf.CodedOutputStream - .computeUInt64Size(3, value64_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += akka.protobuf.CodedOutputStream - .computeBytesSize(4, serialized_); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom( - akka.protobuf.ByteString data) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom( - akka.protobuf.ByteString data, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom(byte[] data) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom( - byte[] data, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom( - java.io.InputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseDelimitedFrom( - java.io.InputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom( - akka.protobuf.CodedInputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parseFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - @java.lang.Override - protected Builder newBuilderForType( - akka.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code NodeMetrics.Number} - */ - public static final class Builder extends - akka.protobuf.GeneratedMessage.Builder - implements akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder { - public static final akka.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Number_descriptor; - } - - protected akka.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Number_fieldAccessorTable - .ensureFieldAccessorsInitialized( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder.class); - } - - // Construct using akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - akka.protobuf.GeneratedMessage.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (akka.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - } - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - type_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType.Serialized; - bitField0_ = (bitField0_ & ~0x00000001); - value32_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - value64_ = 0L; - bitField0_ = (bitField0_ & ~0x00000004); - serialized_ = akka.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00000008); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public akka.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Number_descriptor; - } - - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number getDefaultInstanceForType() { - return akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance(); - } - - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number build() { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number buildPartial() { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number result = new akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.type_ = type_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.value32_ = value32_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.value64_ = value64_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.serialized_ = serialized_; - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } - - public Builder mergeFrom(akka.protobuf.Message other) { - if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number) { - return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number other) { - if (other == akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance()) return this; - if (other.hasType()) { - setType(other.getType()); - } - if (other.hasValue32()) { - setValue32(other.getValue32()); - } - if (other.hasValue64()) { - setValue64(other.getValue64()); - } - if (other.hasSerialized()) { - setSerialized(other.getSerialized()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public final boolean isInitialized() { - if (!hasType()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (akka.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number) e.getUnfinishedMessage(); - throw e; - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - private int bitField0_; - - // required .NodeMetrics.NumberType type = 1; - private akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType type_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType.Serialized; - /** - * required .NodeMetrics.NumberType type = 1; - */ - public boolean hasType() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required .NodeMetrics.NumberType type = 1; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType getType() { - return type_; - } - /** - * required .NodeMetrics.NumberType type = 1; - */ - public Builder setType(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - type_ = value; - onChanged(); - return this; - } - /** - * required .NodeMetrics.NumberType type = 1; - */ - public Builder clearType() { - bitField0_ = (bitField0_ & ~0x00000001); - type_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberType.Serialized; - onChanged(); - return this; - } - - // optional uint32 value32 = 2; - private int value32_ ; - /** - * optional uint32 value32 = 2; - */ - public boolean hasValue32() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * optional uint32 value32 = 2; - */ - public int getValue32() { - return value32_; - } - /** - * optional uint32 value32 = 2; - */ - public Builder setValue32(int value) { - bitField0_ |= 0x00000002; - value32_ = value; - onChanged(); - return this; - } - /** - * optional uint32 value32 = 2; - */ - public Builder clearValue32() { - bitField0_ = (bitField0_ & ~0x00000002); - value32_ = 0; - onChanged(); - return this; - } - - // optional uint64 value64 = 3; - private long value64_ ; - /** - * optional uint64 value64 = 3; - */ - public boolean hasValue64() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - /** - * optional uint64 value64 = 3; - */ - public long getValue64() { - return value64_; - } - /** - * optional uint64 value64 = 3; - */ - public Builder setValue64(long value) { - bitField0_ |= 0x00000004; - value64_ = value; - onChanged(); - return this; - } - /** - * optional uint64 value64 = 3; - */ - public Builder clearValue64() { - bitField0_ = (bitField0_ & ~0x00000004); - value64_ = 0L; - onChanged(); - return this; - } - - // optional bytes serialized = 4; - private akka.protobuf.ByteString serialized_ = akka.protobuf.ByteString.EMPTY; - /** - * optional bytes serialized = 4; - */ - public boolean hasSerialized() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - /** - * optional bytes serialized = 4; - */ - public akka.protobuf.ByteString getSerialized() { - return serialized_; - } - /** - * optional bytes serialized = 4; - */ - public Builder setSerialized(akka.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000008; - serialized_ = value; - onChanged(); - return this; - } - /** - * optional bytes serialized = 4; - */ - public Builder clearSerialized() { - bitField0_ = (bitField0_ & ~0x00000008); - serialized_ = getDefaultInstance().getSerialized(); - onChanged(); - return this; - } - - // @@protoc_insertion_point(builder_scope:NodeMetrics.Number) - } - - static { - defaultInstance = new Number(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:NodeMetrics.Number) - } - - public interface EWMAOrBuilder - extends akka.protobuf.MessageOrBuilder { - - // required double value = 1; - /** - * required double value = 1; - */ - boolean hasValue(); - /** - * required double value = 1; - */ - double getValue(); - - // required double alpha = 2; - /** - * required double alpha = 2; - */ - boolean hasAlpha(); - /** - * required double alpha = 2; - */ - double getAlpha(); - } - /** - * Protobuf type {@code NodeMetrics.EWMA} - */ - public static final class EWMA extends - akka.protobuf.GeneratedMessage - implements EWMAOrBuilder { - // Use EWMA.newBuilder() to construct. - private EWMA(akka.protobuf.GeneratedMessage.Builder builder) { - super(builder); - this.unknownFields = builder.getUnknownFields(); - } - private EWMA(boolean noInit) { this.unknownFields = akka.protobuf.UnknownFieldSet.getDefaultInstance(); } - - private static final EWMA defaultInstance; - public static EWMA getDefaultInstance() { - return defaultInstance; - } - - public EWMA getDefaultInstanceForType() { - return defaultInstance; - } - - private final akka.protobuf.UnknownFieldSet unknownFields; - @java.lang.Override - public final akka.protobuf.UnknownFieldSet - getUnknownFields() { - return this.unknownFields; - } - private EWMA( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - initFields(); - int mutable_bitField0_ = 0; - akka.protobuf.UnknownFieldSet.Builder unknownFields = - akka.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - done = true; - } - break; - } - case 9: { - bitField0_ |= 0x00000001; - value_ = input.readDouble(); - break; - } - case 17: { - bitField0_ |= 0x00000002; - alpha_ = input.readDouble(); - break; - } - } - } - } catch (akka.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new akka.protobuf.InvalidProtocolBufferException( - e.getMessage()).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final akka.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_EWMA_descriptor; - } - - protected akka.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_EWMA_fieldAccessorTable - .ensureFieldAccessorsInitialized( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder.class); - } - - public static akka.protobuf.Parser PARSER = - new akka.protobuf.AbstractParser() { - public EWMA parsePartialFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return new EWMA(input, extensionRegistry); - } - }; - - @java.lang.Override - public akka.protobuf.Parser getParserForType() { - return PARSER; - } - - private int bitField0_; - // required double value = 1; - public static final int VALUE_FIELD_NUMBER = 1; - private double value_; - /** - * required double value = 1; - */ - public boolean hasValue() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required double value = 1; - */ - public double getValue() { - return value_; - } - - // required double alpha = 2; - public static final int ALPHA_FIELD_NUMBER = 2; - private double alpha_; - /** - * required double alpha = 2; - */ - public boolean hasAlpha() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * required double alpha = 2; - */ - public double getAlpha() { - return alpha_; - } - - private void initFields() { - value_ = 0D; - alpha_ = 0D; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasValue()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasAlpha()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(akka.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeDouble(1, value_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeDouble(2, alpha_); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += akka.protobuf.CodedOutputStream - .computeDoubleSize(1, value_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += akka.protobuf.CodedOutputStream - .computeDoubleSize(2, alpha_); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom( - akka.protobuf.ByteString data) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom( - akka.protobuf.ByteString data, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom(byte[] data) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom( - byte[] data, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom( - java.io.InputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseDelimitedFrom( - java.io.InputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom( - akka.protobuf.CodedInputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parseFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - @java.lang.Override - protected Builder newBuilderForType( - akka.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code NodeMetrics.EWMA} - */ - public static final class Builder extends - akka.protobuf.GeneratedMessage.Builder - implements akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder { - public static final akka.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_EWMA_descriptor; - } - - protected akka.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_EWMA_fieldAccessorTable - .ensureFieldAccessorsInitialized( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder.class); - } - - // Construct using akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - akka.protobuf.GeneratedMessage.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (akka.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - } - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - value_ = 0D; - bitField0_ = (bitField0_ & ~0x00000001); - alpha_ = 0D; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public akka.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_EWMA_descriptor; - } - - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA getDefaultInstanceForType() { - return akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance(); - } - - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA build() { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA buildPartial() { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA result = new akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.value_ = value_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.alpha_ = alpha_; - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } - - public Builder mergeFrom(akka.protobuf.Message other) { - if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA) { - return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA other) { - if (other == akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance()) return this; - if (other.hasValue()) { - setValue(other.getValue()); - } - if (other.hasAlpha()) { - setAlpha(other.getAlpha()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public final boolean isInitialized() { - if (!hasValue()) { - - return false; - } - if (!hasAlpha()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (akka.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA) e.getUnfinishedMessage(); - throw e; - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - private int bitField0_; - - // required double value = 1; - private double value_ ; - /** - * required double value = 1; - */ - public boolean hasValue() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required double value = 1; - */ - public double getValue() { - return value_; - } - /** - * required double value = 1; - */ - public Builder setValue(double value) { - bitField0_ |= 0x00000001; - value_ = value; - onChanged(); - return this; - } - /** - * required double value = 1; - */ - public Builder clearValue() { - bitField0_ = (bitField0_ & ~0x00000001); - value_ = 0D; - onChanged(); - return this; - } - - // required double alpha = 2; - private double alpha_ ; - /** - * required double alpha = 2; - */ - public boolean hasAlpha() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * required double alpha = 2; - */ - public double getAlpha() { - return alpha_; - } - /** - * required double alpha = 2; - */ - public Builder setAlpha(double value) { - bitField0_ |= 0x00000002; - alpha_ = value; - onChanged(); - return this; - } - /** - * required double alpha = 2; - */ - public Builder clearAlpha() { - bitField0_ = (bitField0_ & ~0x00000002); - alpha_ = 0D; - onChanged(); - return this; - } - - // @@protoc_insertion_point(builder_scope:NodeMetrics.EWMA) - } - - static { - defaultInstance = new EWMA(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:NodeMetrics.EWMA) - } - - public interface MetricOrBuilder - extends akka.protobuf.MessageOrBuilder { - - // required int32 nameIndex = 1; - /** - * required int32 nameIndex = 1; - */ - boolean hasNameIndex(); - /** - * required int32 nameIndex = 1; - */ - int getNameIndex(); - - // required .NodeMetrics.Number number = 2; - /** - * required .NodeMetrics.Number number = 2; - */ - boolean hasNumber(); - /** - * required .NodeMetrics.Number number = 2; - */ - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number getNumber(); - /** - * required .NodeMetrics.Number number = 2; - */ - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder getNumberOrBuilder(); - - // optional .NodeMetrics.EWMA ewma = 3; - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - boolean hasEwma(); - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA getEwma(); - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder getEwmaOrBuilder(); - } - /** - * Protobuf type {@code NodeMetrics.Metric} - */ - public static final class Metric extends - akka.protobuf.GeneratedMessage - implements MetricOrBuilder { - // Use Metric.newBuilder() to construct. - private Metric(akka.protobuf.GeneratedMessage.Builder builder) { - super(builder); - this.unknownFields = builder.getUnknownFields(); - } - private Metric(boolean noInit) { this.unknownFields = akka.protobuf.UnknownFieldSet.getDefaultInstance(); } - - private static final Metric defaultInstance; - public static Metric getDefaultInstance() { - return defaultInstance; - } - - public Metric getDefaultInstanceForType() { - return defaultInstance; - } - - private final akka.protobuf.UnknownFieldSet unknownFields; - @java.lang.Override - public final akka.protobuf.UnknownFieldSet - getUnknownFields() { - return this.unknownFields; - } - private Metric( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - initFields(); - int mutable_bitField0_ = 0; - akka.protobuf.UnknownFieldSet.Builder unknownFields = - akka.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - done = true; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - nameIndex_ = input.readInt32(); - break; - } - case 18: { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder subBuilder = null; - if (((bitField0_ & 0x00000002) == 0x00000002)) { - subBuilder = number_.toBuilder(); - } - number_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(number_); - number_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000002; - break; - } - case 26: { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder subBuilder = null; - if (((bitField0_ & 0x00000004) == 0x00000004)) { - subBuilder = ewma_.toBuilder(); - } - ewma_ = input.readMessage(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(ewma_); - ewma_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000004; - break; - } - } - } - } catch (akka.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new akka.protobuf.InvalidProtocolBufferException( - e.getMessage()).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final akka.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Metric_descriptor; - } - - protected akka.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Metric_fieldAccessorTable - .ensureFieldAccessorsInitialized( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder.class); - } - - public static akka.protobuf.Parser PARSER = - new akka.protobuf.AbstractParser() { - public Metric parsePartialFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return new Metric(input, extensionRegistry); - } - }; - - @java.lang.Override - public akka.protobuf.Parser getParserForType() { - return PARSER; - } - - private int bitField0_; - // required int32 nameIndex = 1; - public static final int NAMEINDEX_FIELD_NUMBER = 1; - private int nameIndex_; - /** - * required int32 nameIndex = 1; - */ - public boolean hasNameIndex() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required int32 nameIndex = 1; - */ - public int getNameIndex() { - return nameIndex_; - } - - // required .NodeMetrics.Number number = 2; - public static final int NUMBER_FIELD_NUMBER = 2; - private akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number number_; - /** - * required .NodeMetrics.Number number = 2; - */ - public boolean hasNumber() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * required .NodeMetrics.Number number = 2; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number getNumber() { - return number_; - } - /** - * required .NodeMetrics.Number number = 2; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder getNumberOrBuilder() { - return number_; - } - - // optional .NodeMetrics.EWMA ewma = 3; - public static final int EWMA_FIELD_NUMBER = 3; - private akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA ewma_; - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - public boolean hasEwma() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA getEwma() { - return ewma_; - } - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder getEwmaOrBuilder() { - return ewma_; - } - - private void initFields() { - nameIndex_ = 0; - number_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance(); - ewma_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance(); - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasNameIndex()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasNumber()) { - memoizedIsInitialized = 0; - return false; - } - if (!getNumber().isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - if (hasEwma()) { - if (!getEwma().isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(akka.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeInt32(1, nameIndex_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeMessage(2, number_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeMessage(3, ewma_); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += akka.protobuf.CodedOutputStream - .computeInt32Size(1, nameIndex_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += akka.protobuf.CodedOutputStream - .computeMessageSize(2, number_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += akka.protobuf.CodedOutputStream - .computeMessageSize(3, ewma_); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom( - akka.protobuf.ByteString data) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom( - akka.protobuf.ByteString data, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom(byte[] data) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom( - byte[] data, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom( - java.io.InputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseDelimitedFrom( - java.io.InputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom( - akka.protobuf.CodedInputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parseFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - @java.lang.Override - protected Builder newBuilderForType( - akka.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code NodeMetrics.Metric} - */ - public static final class Builder extends - akka.protobuf.GeneratedMessage.Builder - implements akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder { - public static final akka.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Metric_descriptor; - } - - protected akka.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Metric_fieldAccessorTable - .ensureFieldAccessorsInitialized( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder.class); - } - - // Construct using akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - akka.protobuf.GeneratedMessage.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (akka.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - getNumberFieldBuilder(); - getEwmaFieldBuilder(); - } - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - nameIndex_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - if (numberBuilder_ == null) { - number_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance(); - } else { - numberBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000002); - if (ewmaBuilder_ == null) { - ewma_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance(); - } else { - ewmaBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000004); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public akka.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_Metric_descriptor; - } - - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric getDefaultInstanceForType() { - return akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.getDefaultInstance(); - } - - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric build() { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric buildPartial() { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric result = new akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.nameIndex_ = nameIndex_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - if (numberBuilder_ == null) { - result.number_ = number_; - } else { - result.number_ = numberBuilder_.build(); - } - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - if (ewmaBuilder_ == null) { - result.ewma_ = ewma_; - } else { - result.ewma_ = ewmaBuilder_.build(); - } - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } - - public Builder mergeFrom(akka.protobuf.Message other) { - if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric) { - return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric other) { - if (other == akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.getDefaultInstance()) return this; - if (other.hasNameIndex()) { - setNameIndex(other.getNameIndex()); - } - if (other.hasNumber()) { - mergeNumber(other.getNumber()); - } - if (other.hasEwma()) { - mergeEwma(other.getEwma()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public final boolean isInitialized() { - if (!hasNameIndex()) { - - return false; - } - if (!hasNumber()) { - - return false; - } - if (!getNumber().isInitialized()) { - - return false; - } - if (hasEwma()) { - if (!getEwma().isInitialized()) { - - return false; - } - } - return true; - } - - public Builder mergeFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (akka.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric) e.getUnfinishedMessage(); - throw e; - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - private int bitField0_; - - // required int32 nameIndex = 1; - private int nameIndex_ ; - /** - * required int32 nameIndex = 1; - */ - public boolean hasNameIndex() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required int32 nameIndex = 1; - */ - public int getNameIndex() { - return nameIndex_; - } - /** - * required int32 nameIndex = 1; - */ - public Builder setNameIndex(int value) { - bitField0_ |= 0x00000001; - nameIndex_ = value; - onChanged(); - return this; - } - /** - * required int32 nameIndex = 1; - */ - public Builder clearNameIndex() { - bitField0_ = (bitField0_ & ~0x00000001); - nameIndex_ = 0; - onChanged(); - return this; - } - - // required .NodeMetrics.Number number = 2; - private akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number number_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance(); - private akka.protobuf.SingleFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder> numberBuilder_; - /** - * required .NodeMetrics.Number number = 2; - */ - public boolean hasNumber() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * required .NodeMetrics.Number number = 2; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number getNumber() { - if (numberBuilder_ == null) { - return number_; - } else { - return numberBuilder_.getMessage(); - } - } - /** - * required .NodeMetrics.Number number = 2; - */ - public Builder setNumber(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number value) { - if (numberBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - number_ = value; - onChanged(); - } else { - numberBuilder_.setMessage(value); - } - bitField0_ |= 0x00000002; - return this; - } - /** - * required .NodeMetrics.Number number = 2; - */ - public Builder setNumber( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder builderForValue) { - if (numberBuilder_ == null) { - number_ = builderForValue.build(); - onChanged(); - } else { - numberBuilder_.setMessage(builderForValue.build()); - } - bitField0_ |= 0x00000002; - return this; - } - /** - * required .NodeMetrics.Number number = 2; - */ - public Builder mergeNumber(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number value) { - if (numberBuilder_ == null) { - if (((bitField0_ & 0x00000002) == 0x00000002) && - number_ != akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance()) { - number_ = - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.newBuilder(number_).mergeFrom(value).buildPartial(); - } else { - number_ = value; - } - onChanged(); - } else { - numberBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00000002; - return this; - } - /** - * required .NodeMetrics.Number number = 2; - */ - public Builder clearNumber() { - if (numberBuilder_ == null) { - number_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.getDefaultInstance(); - onChanged(); - } else { - numberBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - /** - * required .NodeMetrics.Number number = 2; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder getNumberBuilder() { - bitField0_ |= 0x00000002; - onChanged(); - return getNumberFieldBuilder().getBuilder(); - } - /** - * required .NodeMetrics.Number number = 2; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder getNumberOrBuilder() { - if (numberBuilder_ != null) { - return numberBuilder_.getMessageOrBuilder(); - } else { - return number_; - } - } - /** - * required .NodeMetrics.Number number = 2; - */ - private akka.protobuf.SingleFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder> - getNumberFieldBuilder() { - if (numberBuilder_ == null) { - numberBuilder_ = new akka.protobuf.SingleFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Number.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.NumberOrBuilder>( - number_, - getParentForChildren(), - isClean()); - number_ = null; - } - return numberBuilder_; - } - - // optional .NodeMetrics.EWMA ewma = 3; - private akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA ewma_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance(); - private akka.protobuf.SingleFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder> ewmaBuilder_; - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - public boolean hasEwma() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA getEwma() { - if (ewmaBuilder_ == null) { - return ewma_; - } else { - return ewmaBuilder_.getMessage(); - } - } - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - public Builder setEwma(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA value) { - if (ewmaBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ewma_ = value; - onChanged(); - } else { - ewmaBuilder_.setMessage(value); - } - bitField0_ |= 0x00000004; - return this; - } - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - public Builder setEwma( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder builderForValue) { - if (ewmaBuilder_ == null) { - ewma_ = builderForValue.build(); - onChanged(); - } else { - ewmaBuilder_.setMessage(builderForValue.build()); - } - bitField0_ |= 0x00000004; - return this; - } - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - public Builder mergeEwma(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA value) { - if (ewmaBuilder_ == null) { - if (((bitField0_ & 0x00000004) == 0x00000004) && - ewma_ != akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance()) { - ewma_ = - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.newBuilder(ewma_).mergeFrom(value).buildPartial(); - } else { - ewma_ = value; - } - onChanged(); - } else { - ewmaBuilder_.mergeFrom(value); - } - bitField0_ |= 0x00000004; - return this; - } - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - public Builder clearEwma() { - if (ewmaBuilder_ == null) { - ewma_ = akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.getDefaultInstance(); - onChanged(); - } else { - ewmaBuilder_.clear(); - } - bitField0_ = (bitField0_ & ~0x00000004); - return this; - } - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder getEwmaBuilder() { - bitField0_ |= 0x00000004; - onChanged(); - return getEwmaFieldBuilder().getBuilder(); - } - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder getEwmaOrBuilder() { - if (ewmaBuilder_ != null) { - return ewmaBuilder_.getMessageOrBuilder(); - } else { - return ewma_; - } - } - /** - * optional .NodeMetrics.EWMA ewma = 3; - */ - private akka.protobuf.SingleFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder> - getEwmaFieldBuilder() { - if (ewmaBuilder_ == null) { - ewmaBuilder_ = new akka.protobuf.SingleFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMA.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.EWMAOrBuilder>( - ewma_, - getParentForChildren(), - isClean()); - ewma_ = null; - } - return ewmaBuilder_; - } - - // @@protoc_insertion_point(builder_scope:NodeMetrics.Metric) - } - - static { - defaultInstance = new Metric(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:NodeMetrics.Metric) - } - - private int bitField0_; - // required int32 addressIndex = 1; - public static final int ADDRESSINDEX_FIELD_NUMBER = 1; - private int addressIndex_; - /** - * required int32 addressIndex = 1; - */ - public boolean hasAddressIndex() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required int32 addressIndex = 1; - */ - public int getAddressIndex() { - return addressIndex_; - } - - // required int64 timestamp = 2; - public static final int TIMESTAMP_FIELD_NUMBER = 2; - private long timestamp_; - /** - * required int64 timestamp = 2; - */ - public boolean hasTimestamp() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * required int64 timestamp = 2; - */ - public long getTimestamp() { - return timestamp_; - } - - // repeated .NodeMetrics.Metric metrics = 3; - public static final int METRICS_FIELD_NUMBER = 3; - private java.util.List metrics_; - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public java.util.List getMetricsList() { - return metrics_; - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public java.util.List - getMetricsOrBuilderList() { - return metrics_; - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public int getMetricsCount() { - return metrics_.size(); - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric getMetrics(int index) { - return metrics_.get(index); - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder getMetricsOrBuilder( - int index) { - return metrics_.get(index); - } - - private void initFields() { - addressIndex_ = 0; - timestamp_ = 0L; - metrics_ = java.util.Collections.emptyList(); - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasAddressIndex()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasTimestamp()) { - memoizedIsInitialized = 0; - return false; - } - for (int i = 0; i < getMetricsCount(); i++) { - if (!getMetrics(i).isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(akka.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeInt32(1, addressIndex_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeInt64(2, timestamp_); - } - for (int i = 0; i < metrics_.size(); i++) { - output.writeMessage(3, metrics_.get(i)); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += akka.protobuf.CodedOutputStream - .computeInt32Size(1, addressIndex_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += akka.protobuf.CodedOutputStream - .computeInt64Size(2, timestamp_); - } - for (int i = 0; i < metrics_.size(); i++) { - size += akka.protobuf.CodedOutputStream - .computeMessageSize(3, metrics_.get(i)); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom( - akka.protobuf.ByteString data) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom( - akka.protobuf.ByteString data, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom(byte[] data) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom( - byte[] data, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws akka.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom( - java.io.InputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseDelimitedFrom( - java.io.InputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input, extensionRegistry); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom( - akka.protobuf.CodedInputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parseFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return PARSER.parseFrom(input, extensionRegistry); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - @java.lang.Override - protected Builder newBuilderForType( - akka.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code NodeMetrics} - * - *
-     **
-     * Node Metrics
-     * 
- */ - public static final class Builder extends - akka.protobuf.GeneratedMessage.Builder - implements akka.cluster.protobuf.msg.ClusterMessages.NodeMetricsOrBuilder { - public static final akka.protobuf.Descriptors.Descriptor - getDescriptor() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_descriptor; - } - - protected akka.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_fieldAccessorTable - .ensureFieldAccessorsInitialized( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.class, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Builder.class); - } - - // Construct using akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - akka.protobuf.GeneratedMessage.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (akka.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - getMetricsFieldBuilder(); - } - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - addressIndex_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - timestamp_ = 0L; - bitField0_ = (bitField0_ & ~0x00000002); - if (metricsBuilder_ == null) { - metrics_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); - } else { - metricsBuilder_.clear(); - } - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public akka.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return akka.cluster.protobuf.msg.ClusterMessages.internal_static_NodeMetrics_descriptor; - } - - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics getDefaultInstanceForType() { - return akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.getDefaultInstance(); - } - - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics build() { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics buildPartial() { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics result = new akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.addressIndex_ = addressIndex_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.timestamp_ = timestamp_; - if (metricsBuilder_ == null) { - if (((bitField0_ & 0x00000004) == 0x00000004)) { - metrics_ = java.util.Collections.unmodifiableList(metrics_); - bitField0_ = (bitField0_ & ~0x00000004); - } - result.metrics_ = metrics_; - } else { - result.metrics_ = metricsBuilder_.build(); - } - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } - - public Builder mergeFrom(akka.protobuf.Message other) { - if (other instanceof akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics) { - return mergeFrom((akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics other) { - if (other == akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.getDefaultInstance()) return this; - if (other.hasAddressIndex()) { - setAddressIndex(other.getAddressIndex()); - } - if (other.hasTimestamp()) { - setTimestamp(other.getTimestamp()); - } - if (metricsBuilder_ == null) { - if (!other.metrics_.isEmpty()) { - if (metrics_.isEmpty()) { - metrics_ = other.metrics_; - bitField0_ = (bitField0_ & ~0x00000004); - } else { - ensureMetricsIsMutable(); - metrics_.addAll(other.metrics_); - } - onChanged(); - } - } else { - if (!other.metrics_.isEmpty()) { - if (metricsBuilder_.isEmpty()) { - metricsBuilder_.dispose(); - metricsBuilder_ = null; - metrics_ = other.metrics_; - bitField0_ = (bitField0_ & ~0x00000004); - metricsBuilder_ = - akka.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? - getMetricsFieldBuilder() : null; - } else { - metricsBuilder_.addAllMessages(other.metrics_); - } - } - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public final boolean isInitialized() { - if (!hasAddressIndex()) { - - return false; - } - if (!hasTimestamp()) { - - return false; - } - for (int i = 0; i < getMetricsCount(); i++) { - if (!getMetrics(i).isInitialized()) { - - return false; - } - } - return true; - } - - public Builder mergeFrom( - akka.protobuf.CodedInputStream input, - akka.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (akka.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics) e.getUnfinishedMessage(); - throw e; - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - private int bitField0_; - - // required int32 addressIndex = 1; - private int addressIndex_ ; - /** - * required int32 addressIndex = 1; - */ - public boolean hasAddressIndex() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required int32 addressIndex = 1; - */ - public int getAddressIndex() { - return addressIndex_; - } - /** - * required int32 addressIndex = 1; - */ - public Builder setAddressIndex(int value) { - bitField0_ |= 0x00000001; - addressIndex_ = value; - onChanged(); - return this; - } - /** - * required int32 addressIndex = 1; - */ - public Builder clearAddressIndex() { - bitField0_ = (bitField0_ & ~0x00000001); - addressIndex_ = 0; - onChanged(); - return this; - } - - // required int64 timestamp = 2; - private long timestamp_ ; - /** - * required int64 timestamp = 2; - */ - public boolean hasTimestamp() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * required int64 timestamp = 2; - */ - public long getTimestamp() { - return timestamp_; - } - /** - * required int64 timestamp = 2; - */ - public Builder setTimestamp(long value) { - bitField0_ |= 0x00000002; - timestamp_ = value; - onChanged(); - return this; - } - /** - * required int64 timestamp = 2; - */ - public Builder clearTimestamp() { - bitField0_ = (bitField0_ & ~0x00000002); - timestamp_ = 0L; - onChanged(); - return this; - } - - // repeated .NodeMetrics.Metric metrics = 3; - private java.util.List metrics_ = - java.util.Collections.emptyList(); - private void ensureMetricsIsMutable() { - if (!((bitField0_ & 0x00000004) == 0x00000004)) { - metrics_ = new java.util.ArrayList(metrics_); - bitField0_ |= 0x00000004; - } - } - - private akka.protobuf.RepeatedFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder> metricsBuilder_; - - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public java.util.List getMetricsList() { - if (metricsBuilder_ == null) { - return java.util.Collections.unmodifiableList(metrics_); - } else { - return metricsBuilder_.getMessageList(); - } - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public int getMetricsCount() { - if (metricsBuilder_ == null) { - return metrics_.size(); - } else { - return metricsBuilder_.getCount(); - } - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric getMetrics(int index) { - if (metricsBuilder_ == null) { - return metrics_.get(index); - } else { - return metricsBuilder_.getMessage(index); - } - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public Builder setMetrics( - int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric value) { - if (metricsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureMetricsIsMutable(); - metrics_.set(index, value); - onChanged(); - } else { - metricsBuilder_.setMessage(index, value); - } - return this; - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public Builder setMetrics( - int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder builderForValue) { - if (metricsBuilder_ == null) { - ensureMetricsIsMutable(); - metrics_.set(index, builderForValue.build()); - onChanged(); - } else { - metricsBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public Builder addMetrics(akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric value) { - if (metricsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureMetricsIsMutable(); - metrics_.add(value); - onChanged(); - } else { - metricsBuilder_.addMessage(value); - } - return this; - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public Builder addMetrics( - int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric value) { - if (metricsBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureMetricsIsMutable(); - metrics_.add(index, value); - onChanged(); - } else { - metricsBuilder_.addMessage(index, value); - } - return this; - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public Builder addMetrics( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder builderForValue) { - if (metricsBuilder_ == null) { - ensureMetricsIsMutable(); - metrics_.add(builderForValue.build()); - onChanged(); - } else { - metricsBuilder_.addMessage(builderForValue.build()); - } - return this; - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public Builder addMetrics( - int index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder builderForValue) { - if (metricsBuilder_ == null) { - ensureMetricsIsMutable(); - metrics_.add(index, builderForValue.build()); - onChanged(); - } else { - metricsBuilder_.addMessage(index, builderForValue.build()); - } - return this; - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public Builder addAllMetrics( - java.lang.Iterable values) { - if (metricsBuilder_ == null) { - ensureMetricsIsMutable(); - super.addAll(values, metrics_); - onChanged(); - } else { - metricsBuilder_.addAllMessages(values); - } - return this; - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public Builder clearMetrics() { - if (metricsBuilder_ == null) { - metrics_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); - onChanged(); - } else { - metricsBuilder_.clear(); - } - return this; - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public Builder removeMetrics(int index) { - if (metricsBuilder_ == null) { - ensureMetricsIsMutable(); - metrics_.remove(index); - onChanged(); - } else { - metricsBuilder_.remove(index); - } - return this; - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder getMetricsBuilder( - int index) { - return getMetricsFieldBuilder().getBuilder(index); - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder getMetricsOrBuilder( - int index) { - if (metricsBuilder_ == null) { - return metrics_.get(index); } else { - return metricsBuilder_.getMessageOrBuilder(index); - } - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public java.util.List - getMetricsOrBuilderList() { - if (metricsBuilder_ != null) { - return metricsBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(metrics_); - } - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder addMetricsBuilder() { - return getMetricsFieldBuilder().addBuilder( - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.getDefaultInstance()); - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder addMetricsBuilder( - int index) { - return getMetricsFieldBuilder().addBuilder( - index, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.getDefaultInstance()); - } - /** - * repeated .NodeMetrics.Metric metrics = 3; - */ - public java.util.List - getMetricsBuilderList() { - return getMetricsFieldBuilder().getBuilderList(); - } - private akka.protobuf.RepeatedFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder> - getMetricsFieldBuilder() { - if (metricsBuilder_ == null) { - metricsBuilder_ = new akka.protobuf.RepeatedFieldBuilder< - akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.Metric.Builder, akka.cluster.protobuf.msg.ClusterMessages.NodeMetrics.MetricOrBuilder>( - metrics_, - ((bitField0_ & 0x00000004) == 0x00000004), - getParentForChildren(), - isClean()); - metrics_ = null; - } - return metricsBuilder_; - } - - // @@protoc_insertion_point(builder_scope:NodeMetrics) - } - - static { - defaultInstance = new NodeMetrics(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:NodeMetrics) - } - public interface EmptyOrBuilder extends akka.protobuf.MessageOrBuilder { } @@ -16805,36 +11766,6 @@ public final class ClusterMessages { private static akka.protobuf.GeneratedMessage.FieldAccessorTable internal_static_VectorClock_Version_fieldAccessorTable; - private static akka.protobuf.Descriptors.Descriptor - internal_static_MetricsGossipEnvelope_descriptor; - private static - akka.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_MetricsGossipEnvelope_fieldAccessorTable; - private static akka.protobuf.Descriptors.Descriptor - internal_static_MetricsGossip_descriptor; - private static - akka.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_MetricsGossip_fieldAccessorTable; - private static akka.protobuf.Descriptors.Descriptor - internal_static_NodeMetrics_descriptor; - private static - akka.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_NodeMetrics_fieldAccessorTable; - private static akka.protobuf.Descriptors.Descriptor - internal_static_NodeMetrics_Number_descriptor; - private static - akka.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_NodeMetrics_Number_fieldAccessorTable; - private static akka.protobuf.Descriptors.Descriptor - internal_static_NodeMetrics_EWMA_descriptor; - private static - akka.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_NodeMetrics_EWMA_fieldAccessorTable; - private static akka.protobuf.Descriptors.Descriptor - internal_static_NodeMetrics_Metric_descriptor; - private static - akka.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_NodeMetrics_Metric_fieldAccessorTable; private static akka.protobuf.Descriptors.Descriptor internal_static_Empty_descriptor; private static @@ -16885,31 +11816,16 @@ public final class ClusterMessages { "\002\020\001\"y\n\013VectorClock\022\021\n\ttimestamp\030\001 \001(\003\022&\n" + "\010versions\030\002 \003(\0132\024.VectorClock.Version\032/\n" + "\007Version\022\021\n\thashIndex\030\001 \002(\005\022\021\n\ttimestamp" + - "\030\002 \002(\003\"^\n\025MetricsGossipEnvelope\022\026\n\004from\030" + - "\001 \002(\0132\010.Address\022\036\n\006gossip\030\002 \002(\0132\016.Metric" + - "sGossip\022\r\n\005reply\030\003 \002(\010\"j\n\rMetricsGossip\022" + - "\036\n\014allAddresses\030\001 \003(\0132\010.Address\022\026\n\016allMe", - "tricNames\030\002 \003(\t\022!\n\013nodeMetrics\030\003 \003(\0132\014.N" + - "odeMetrics\"\230\003\n\013NodeMetrics\022\024\n\014addressInd" + - "ex\030\001 \002(\005\022\021\n\ttimestamp\030\002 \002(\003\022$\n\007metrics\030\003" + - " \003(\0132\023.NodeMetrics.Metric\032e\n\006Number\022%\n\004t" + - "ype\030\001 \002(\0162\027.NodeMetrics.NumberType\022\017\n\007va" + - "lue32\030\002 \001(\r\022\017\n\007value64\030\003 \001(\004\022\022\n\nserializ" + - "ed\030\004 \001(\014\032$\n\004EWMA\022\r\n\005value\030\001 \002(\001\022\r\n\005alpha" + - "\030\002 \002(\001\032a\n\006Metric\022\021\n\tnameIndex\030\001 \002(\005\022#\n\006n" + - "umber\030\002 \002(\0132\023.NodeMetrics.Number\022\037\n\004ewma" + - "\030\003 \001(\0132\021.NodeMetrics.EWMA\"J\n\nNumberType\022", - "\016\n\nSerialized\020\000\022\n\n\006Double\020\001\022\t\n\005Float\020\002\022\013" + - "\n\007Integer\020\003\022\010\n\004Long\020\004\"\007\n\005Empty\"K\n\007Addres" + - "s\022\016\n\006system\030\001 \002(\t\022\020\n\010hostname\030\002 \002(\t\022\014\n\004p" + - "ort\030\003 \002(\r\022\020\n\010protocol\030\004 \001(\t\"E\n\rUniqueAdd" + - "ress\022\031\n\007address\030\001 \002(\0132\010.Address\022\013\n\003uid\030\002" + - " \002(\r\022\014\n\004uid2\030\003 \001(\r*D\n\022ReachabilityStatus" + - "\022\r\n\tReachable\020\000\022\017\n\013Unreachable\020\001\022\016\n\nTerm" + - "inated\020\002*b\n\014MemberStatus\022\013\n\007Joining\020\000\022\006\n" + - "\002Up\020\001\022\013\n\007Leaving\020\002\022\013\n\007Exiting\020\003\022\010\n\004Down\020" + - "\004\022\013\n\007Removed\020\005\022\014\n\010WeaklyUp\020\006B\035\n\031akka.clu", - "ster.protobuf.msgH\001" + "\030\002 \002(\003\"\007\n\005Empty\"K\n\007Address\022\016\n\006system\030\001 \002" + + "(\t\022\020\n\010hostname\030\002 \002(\t\022\014\n\004port\030\003 \002(\r\022\020\n\010pr" + + "otocol\030\004 \001(\t\"E\n\rUniqueAddress\022\031\n\007address" + + "\030\001 \002(\0132\010.Address\022\013\n\003uid\030\002 \002(\r\022\014\n\004uid2\030\003 ", + "\001(\r*D\n\022ReachabilityStatus\022\r\n\tReachable\020\000" + + "\022\017\n\013Unreachable\020\001\022\016\n\nTerminated\020\002*b\n\014Mem" + + "berStatus\022\013\n\007Joining\020\000\022\006\n\002Up\020\001\022\013\n\007Leavin" + + "g\020\002\022\013\n\007Exiting\020\003\022\010\n\004Down\020\004\022\013\n\007Removed\020\005\022" + + "\014\n\010WeaklyUp\020\006B\035\n\031akka.cluster.protobuf.m" + + "sgH\001" }; akka.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new akka.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -16982,56 +11898,20 @@ public final class ClusterMessages { akka.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_VectorClock_Version_descriptor, new java.lang.String[] { "HashIndex", "Timestamp", }); - internal_static_MetricsGossipEnvelope_descriptor = - getDescriptor().getMessageTypes().get(10); - internal_static_MetricsGossipEnvelope_fieldAccessorTable = new - akka.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_MetricsGossipEnvelope_descriptor, - new java.lang.String[] { "From", "Gossip", "Reply", }); - internal_static_MetricsGossip_descriptor = - getDescriptor().getMessageTypes().get(11); - internal_static_MetricsGossip_fieldAccessorTable = new - akka.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_MetricsGossip_descriptor, - new java.lang.String[] { "AllAddresses", "AllMetricNames", "NodeMetrics", }); - internal_static_NodeMetrics_descriptor = - getDescriptor().getMessageTypes().get(12); - internal_static_NodeMetrics_fieldAccessorTable = new - akka.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_NodeMetrics_descriptor, - new java.lang.String[] { "AddressIndex", "Timestamp", "Metrics", }); - internal_static_NodeMetrics_Number_descriptor = - internal_static_NodeMetrics_descriptor.getNestedTypes().get(0); - internal_static_NodeMetrics_Number_fieldAccessorTable = new - akka.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_NodeMetrics_Number_descriptor, - new java.lang.String[] { "Type", "Value32", "Value64", "Serialized", }); - internal_static_NodeMetrics_EWMA_descriptor = - internal_static_NodeMetrics_descriptor.getNestedTypes().get(1); - internal_static_NodeMetrics_EWMA_fieldAccessorTable = new - akka.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_NodeMetrics_EWMA_descriptor, - new java.lang.String[] { "Value", "Alpha", }); - internal_static_NodeMetrics_Metric_descriptor = - internal_static_NodeMetrics_descriptor.getNestedTypes().get(2); - internal_static_NodeMetrics_Metric_fieldAccessorTable = new - akka.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_NodeMetrics_Metric_descriptor, - new java.lang.String[] { "NameIndex", "Number", "Ewma", }); internal_static_Empty_descriptor = - getDescriptor().getMessageTypes().get(13); + getDescriptor().getMessageTypes().get(10); internal_static_Empty_fieldAccessorTable = new akka.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_Empty_descriptor, new java.lang.String[] { }); internal_static_Address_descriptor = - getDescriptor().getMessageTypes().get(14); + getDescriptor().getMessageTypes().get(11); internal_static_Address_fieldAccessorTable = new akka.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_Address_descriptor, new java.lang.String[] { "System", "Hostname", "Port", "Protocol", }); internal_static_UniqueAddress_descriptor = - getDescriptor().getMessageTypes().get(15); + getDescriptor().getMessageTypes().get(12); internal_static_UniqueAddress_fieldAccessorTable = new akka.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_UniqueAddress_descriptor, diff --git a/akka-cluster/src/main/protobuf/ClusterMessages.proto b/akka-cluster/src/main/protobuf/ClusterMessages.proto index da063a0a3f..4d64878209 100644 --- a/akka-cluster/src/main/protobuf/ClusterMessages.proto +++ b/akka-cluster/src/main/protobuf/ClusterMessages.proto @@ -173,59 +173,6 @@ message VectorClock { repeated Version versions = 2; } -/**************************************** - * Metrics Gossip Messages - ****************************************/ - -/** - * Metrics Gossip Envelope - */ -message MetricsGossipEnvelope { - required Address from = 1; - required MetricsGossip gossip = 2; - required bool reply = 3; -} - -/** - * Metrics Gossip - */ -message MetricsGossip { - repeated Address allAddresses = 1; - repeated string allMetricNames = 2; - repeated NodeMetrics nodeMetrics = 3; -} - -/** - * Node Metrics - */ -message NodeMetrics { - enum NumberType { - Serialized = 0; - Double = 1; - Float = 2; - Integer = 3; - Long = 4; - } - message Number { - required NumberType type = 1; - optional uint32 value32 = 2; - optional uint64 value64 = 3; - optional bytes serialized = 4; - } - message EWMA { - required double value = 1; - required double alpha = 2; - } - message Metric { - required int32 nameIndex = 1; - required Number number = 2; - optional EWMA ewma = 3; - } - required int32 addressIndex = 1; - required int64 timestamp = 2; - repeated Metric metrics = 3; -} - /**************************************** * Common Datatypes and Messages ****************************************/ diff --git a/akka-cluster/src/main/resources/reference.conf b/akka-cluster/src/main/resources/reference.conf index d749f10bc8..34852cc1ef 100644 --- a/akka-cluster/src/main/resources/reference.conf +++ b/akka-cluster/src/main/resources/reference.conf @@ -189,34 +189,6 @@ akka { } - metrics { - # Enable or disable metrics collector for load-balancing nodes. - enabled = on - - # FQCN of the metrics collector implementation. - # It must implement akka.cluster.MetricsCollector and - # have public constructor with akka.actor.ActorSystem parameter. - # The default SigarMetricsCollector uses JMX and Hyperic SIGAR, if SIGAR - # is on the classpath, otherwise only JMX. - collector-class = "akka.cluster.SigarMetricsCollector" - - # How often metrics are sampled on a node. - # Shorter interval will collect the metrics more often. - collect-interval = 3s - - # How often a node publishes metrics information. - gossip-interval = 3s - - # How quickly the exponential weighting of past data is decayed compared to - # new data. Set lower to increase the bias toward newer values. - # The relevance of each data sample is halved for every passing half-life - # duration, i.e. after 4 times the half-life, a data sample’s relevance is - # reduced to 6% of its original relevance. The initial relevance of a data - # sample is given by 1 – 0.5 ^ (collect-interval / half-life). - # See http://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average - moving-average-half-life = 12s - } - # If the tick-duration of the default scheduler is longer than the # tick-duration configured here a dedicated scheduler will be used for # periodic tasks of the cluster, otherwise the default scheduler is used. @@ -233,17 +205,6 @@ akka { } - # Default configuration for routers - actor.deployment.default { - # MetricsSelector to use - # - available: "mix", "heap", "cpu", "load" - # - or: Fully qualified class name of the MetricsSelector class. - # The class must extend akka.cluster.routing.MetricsSelector - # and have a public constructor with com.typesafe.config.Config - # parameter. - # - default is "mix" - metrics-selector = mix - } actor.deployment.default.cluster { # enable cluster aware router that deploys to nodes in the cluster enabled = off @@ -289,10 +250,6 @@ akka { "akka.cluster.protobuf.ClusterMessageSerializer" = 5 } - router.type-mapping { - adaptive-pool = "akka.cluster.routing.AdaptiveLoadBalancingPool" - adaptive-group = "akka.cluster.routing.AdaptiveLoadBalancingGroup" - } } } diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala index f1a33ee7a3..3c24f82d24 100644 --- a/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala +++ b/akka-cluster/src/main/scala/akka/cluster/ClusterDaemon.scala @@ -125,8 +125,6 @@ private[cluster] object InternalClusterAction { case object ReapUnreachableTick extends Tick - case object MetricsTick extends Tick - case object LeaderActionsTick extends Tick case object PublishStatsTick extends Tick @@ -135,8 +133,6 @@ private[cluster] object InternalClusterAction { case object GetClusterCoreRef - final case class PublisherCreated(publisher: ActorRef) - /** * Command to [[akka.cluster.ClusterDaemon]] to create a * [[akka.cluster.OnMemberStatusChangedListener]]. @@ -217,13 +213,6 @@ private[cluster] final class ClusterDaemon(settings: ClusterSettings) extends Ac context.actorOf(Props(classOf[OnMemberStatusChangedListener], code, Up).withDeploy(Deploy.local)) case AddOnMemberRemovedListener(code) ⇒ context.actorOf(Props(classOf[OnMemberStatusChangedListener], code, Removed).withDeploy(Deploy.local)) - case PublisherCreated(publisher) ⇒ - if (settings.MetricsEnabled) { - // metrics must be started after core/publisher to be able - // to inject the publisher ref to the ClusterMetricsCollector - context.actorOf(Props(classOf[ClusterMetricsCollector], publisher). - withDispatcher(context.props.dispatcher), name = "metrics") - } case CoordinatedShutdownLeave.LeaveReq ⇒ val ref = context.actorOf(CoordinatedShutdownLeave.props().withDispatcher(context.props.dispatcher)) // forward the ask request @@ -254,7 +243,6 @@ private[cluster] final class ClusterCoreSupervisor extends Actor with ActorLoggi withDispatcher(context.props.dispatcher), name = "publisher") coreDaemon = Some(context.watch(context.actorOf(Props(classOf[ClusterCoreDaemon], publisher). withDispatcher(context.props.dispatcher), name = "daemon"))) - context.parent ! PublisherCreated(publisher) } override val supervisorStrategy = diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterEvent.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterEvent.scala index 0bda0b293c..522042cb97 100644 --- a/akka-cluster/src/main/scala/akka/cluster/ClusterEvent.scala +++ b/akka-cluster/src/main/scala/akka/cluster/ClusterEvent.scala @@ -3,8 +3,6 @@ */ package akka.cluster -// TODO remove metrics - import language.postfixOps import scala.collection.immutable import scala.collection.immutable.VectorBuilder @@ -227,18 +225,6 @@ object ClusterEvent { */ final case class ReachableMember(member: Member) extends ReachabilityEvent - /** - * Current snapshot of cluster node metrics. Published to subscribers. - */ - @deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") - final case class ClusterMetricsChanged(nodeMetrics: Set[NodeMetrics]) extends ClusterDomainEvent { - /** - * Java API - */ - def getNodeMetrics: java.lang.Iterable[NodeMetrics] = - scala.collection.JavaConverters.asJavaIterableConverter(nodeMetrics).asJava - } - /** * INTERNAL API * The nodes that have seen current version of the Gossip. diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterMetricsCollector.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterMetricsCollector.scala deleted file mode 100644 index 91c388e945..0000000000 --- a/akka-cluster/src/main/scala/akka/cluster/ClusterMetricsCollector.scala +++ /dev/null @@ -1,818 +0,0 @@ -/* - * Copyright (C) 2009-2017 Lightbend Inc. - */ - -package akka.cluster - -// TODO remove metrics - -import java.io.Closeable -import java.lang.System.{ currentTimeMillis ⇒ newTimestamp } -import java.lang.management.{ OperatingSystemMXBean, MemoryMXBean, ManagementFactory } -import java.lang.reflect.InvocationTargetException -import java.lang.reflect.Method -import scala.collection.immutable -import scala.concurrent.duration._ -import java.util.concurrent.ThreadLocalRandom -import scala.util.{ Try, Success, Failure } -import akka.ConfigurationException -import akka.actor.Actor -import akka.actor.ActorLogging -import akka.actor.ActorRef -import akka.actor.ActorSystem -import akka.actor.Address -import akka.actor.ExtendedActorSystem -import akka.cluster.MemberStatus.Up -import akka.cluster.MemberStatus.WeaklyUp -import akka.event.Logging -import java.lang.management.MemoryUsage - -/** - * INTERNAL API. - * - * Cluster metrics is primarily for load-balancing of nodes. It controls metrics sampling - * at a regular frequency, prepares highly variable data for further analysis by other entities, - * and publishes the latest cluster metrics data around the node ring and local eventStream - * to assist in determining the need to redirect traffic to the least-loaded nodes. - * - * Metrics sampling is delegated to the [[akka.cluster.MetricsCollector]]. - * - * Smoothing of the data for each monitored process is delegated to the - * [[akka.cluster.EWMA]] for exponential weighted moving average. - */ -private[cluster] class ClusterMetricsCollector(publisher: ActorRef) extends Actor with ActorLogging { - - import InternalClusterAction._ - import ClusterEvent._ - import Member.addressOrdering - import context.dispatcher - val cluster = Cluster(context.system) - import cluster.{ selfAddress, scheduler, settings } - import cluster.settings._ - import cluster.InfoLogger._ - - /** - * The node ring gossipped that contains only members that are Up. - */ - var nodes: immutable.SortedSet[Address] = immutable.SortedSet.empty - - /** - * The latest metric values with their statistical data. - */ - var latestGossip: MetricsGossip = MetricsGossip.empty - - /** - * The metrics collector that samples data on the node. - */ - val collector: MetricsCollector = MetricsCollector(context.system.asInstanceOf[ExtendedActorSystem], settings) - - /** - * Start periodic gossip to random nodes in cluster - */ - val gossipTask = scheduler.schedule( - PeriodicTasksInitialDelay max MetricsGossipInterval, - MetricsGossipInterval, self, GossipTick) - - /** - * Start periodic metrics collection - */ - val metricsTask = scheduler.schedule( - PeriodicTasksInitialDelay max MetricsInterval, - MetricsInterval, self, MetricsTick) - - override def preStart(): Unit = { - cluster.subscribe(self, classOf[MemberEvent], classOf[ReachabilityEvent]) - logInfo("Metrics collection has started successfully") - } - - def receive = { - case GossipTick ⇒ gossip() - case MetricsTick ⇒ collect() - case msg: MetricsGossipEnvelope ⇒ receiveGossip(msg) - case state: CurrentClusterState ⇒ receiveState(state) - case MemberUp(m) ⇒ addMember(m) - case MemberWeaklyUp(m) ⇒ addMember(m) - case MemberRemoved(m, _) ⇒ removeMember(m) - case MemberExited(m) ⇒ removeMember(m) - case UnreachableMember(m) ⇒ removeMember(m) - case ReachableMember(m) ⇒ - if (m.status == MemberStatus.Up || m.status == MemberStatus.WeaklyUp) - addMember(m) - case _: MemberEvent ⇒ // not interested in other types of MemberEvent - - } - - override def postStop: Unit = { - cluster unsubscribe self - gossipTask.cancel() - metricsTask.cancel() - collector.close() - } - - /** - * Adds a member to the node ring. - */ - def addMember(member: Member): Unit = nodes += member.address - - /** - * Removes a member from the member node ring. - */ - def removeMember(member: Member): Unit = { - nodes -= member.address - latestGossip = latestGossip remove member.address - publish() - } - - /** - * Updates the initial node ring for those nodes that are [[akka.cluster.MemberStatus]] `Up`. - */ - def receiveState(state: CurrentClusterState): Unit = - nodes = state.members collect { case m if m.status == Up || m.status == WeaklyUp ⇒ m.address } - - /** - * Samples the latest metrics for the node, updates metrics statistics in - * [[akka.cluster.MetricsGossip]], and publishes the change to the event bus. - * - * @see [[akka.cluster.ClusterMetricsCollector#collect]] - */ - def collect(): Unit = { - latestGossip :+= collector.sample() - publish() - } - - /** - * Receives changes from peer nodes, merges remote with local gossip nodes, then publishes - * changes to the event stream for load balancing router consumption, and gossip back. - */ - def receiveGossip(envelope: MetricsGossipEnvelope): Unit = { - // remote node might not have same view of member nodes, this side should only care - // about nodes that are known here, otherwise removed nodes can come back - val otherGossip = envelope.gossip.filter(nodes) - latestGossip = latestGossip merge otherGossip - // changes will be published in the period collect task - if (!envelope.reply) - replyGossipTo(envelope.from) - } - - /** - * Gossip to peer nodes. - */ - def gossip(): Unit = selectRandomNode((nodes - selfAddress).toVector) foreach gossipTo - - def gossipTo(address: Address): Unit = - sendGossip(address, MetricsGossipEnvelope(selfAddress, latestGossip, reply = false)) - - def replyGossipTo(address: Address): Unit = - sendGossip(address, MetricsGossipEnvelope(selfAddress, latestGossip, reply = true)) - - def sendGossip(address: Address, envelope: MetricsGossipEnvelope): Unit = - context.actorSelection(self.path.toStringWithAddress(address)) ! envelope - - def selectRandomNode(addresses: immutable.IndexedSeq[Address]): Option[Address] = - if (addresses.isEmpty) None else Some(addresses(ThreadLocalRandom.current nextInt addresses.size)) - - /** - * Publishes to the event stream. - */ - def publish(): Unit = publisher ! PublishEvent(ClusterMetricsChanged(latestGossip.nodes)) - -} - -/** - * INTERNAL API - */ -private[cluster] object MetricsGossip { - val empty = MetricsGossip(Set.empty[NodeMetrics]) -} - -/** - * INTERNAL API - * - * @param nodes metrics per node - */ -@SerialVersionUID(1L) -private[cluster] final case class MetricsGossip(nodes: Set[NodeMetrics]) { - - /** - * Removes nodes if their correlating node ring members are not [[akka.cluster.MemberStatus]] `Up`. - */ - def remove(node: Address): MetricsGossip = copy(nodes = nodes filterNot (_.address == node)) - - /** - * Only the nodes that are in the `includeNodes` Set. - */ - def filter(includeNodes: Set[Address]): MetricsGossip = - copy(nodes = nodes filter { includeNodes contains _.address }) - - /** - * Adds new remote [[akka.cluster.NodeMetrics]] and merges existing from a remote gossip. - */ - def merge(otherGossip: MetricsGossip): MetricsGossip = - otherGossip.nodes.foldLeft(this) { (gossip, nodeMetrics) ⇒ gossip :+ nodeMetrics } - - /** - * Adds new local [[akka.cluster.NodeMetrics]], or merges an existing. - */ - def :+(newNodeMetrics: NodeMetrics): MetricsGossip = nodeMetricsFor(newNodeMetrics.address) match { - case Some(existingNodeMetrics) ⇒ - copy(nodes = nodes - existingNodeMetrics + (existingNodeMetrics merge newNodeMetrics)) - case None ⇒ copy(nodes = nodes + newNodeMetrics) - } - - /** - * Returns [[akka.cluster.NodeMetrics]] for a node if exists. - */ - def nodeMetricsFor(address: Address): Option[NodeMetrics] = nodes find { n ⇒ n.address == address } - -} - -/** - * INTERNAL API - * Envelope adding a sender address to the gossip. - */ -@SerialVersionUID(1L) -private[cluster] final case class MetricsGossipEnvelope(from: Address, gossip: MetricsGossip, reply: Boolean) - extends ClusterMessage - -private[cluster] object EWMA { - /** - * math.log(2) - */ - private val LogOf2 = 0.69315 - - /** - * Calculate the alpha (decay factor) used in [[akka.cluster.EWMA]] - * from specified half-life and interval between observations. - * Half-life is the interval over which the weights decrease by a factor of two. - * The relevance of each data sample is halved for every passing half-life duration, - * i.e. after 4 times the half-life, a data sample’s relevance is reduced to 6% of - * its original relevance. The initial relevance of a data sample is given by - * 1 – 0.5 ^ (collect-interval / half-life). - */ - def alpha(halfLife: FiniteDuration, collectInterval: FiniteDuration): Double = { - val halfLifeMillis = halfLife.toMillis - require(halfLife.toMillis > 0, "halfLife must be > 0 s") - val decayRate = LogOf2 / halfLifeMillis - 1 - math.exp(-decayRate * collectInterval.toMillis) - } -} - -/** - * The exponentially weighted moving average (EWMA) approach captures short-term - * movements in volatility for a conditional volatility forecasting model. By virtue - * of its alpha, or decay factor, this provides a statistical streaming data model - * that is exponentially biased towards newer entries. - * - * http://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average - * - * An EWMA only needs the most recent forecast value to be kept, as opposed to a standard - * moving average model. - * - * INTERNAL API - * - * @param alpha decay factor, sets how quickly the exponential weighting decays for past data compared to new data, - * see http://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average - * - * @param value the current exponentially weighted moving average, e.g. Y(n - 1), or, - * the sampled value resulting from the previous smoothing iteration. - * This value is always used as the previous EWMA to calculate the new EWMA. - * - */ -@SerialVersionUID(1L) -private[cluster] final case class EWMA(value: Double, alpha: Double) { - - require(0.0 <= alpha && alpha <= 1.0, "alpha must be between 0.0 and 1.0") - - /** - * Calculates the exponentially weighted moving average for a given monitored data set. - * - * @param xn the new data point - * @return a new [[akka.cluster.EWMA]] with the updated value - */ - def :+(xn: Double): EWMA = { - val newValue = (alpha * xn) + (1 - alpha) * value - if (newValue == value) this // no change - else copy(value = newValue) - } - -} - -/** - * Metrics key/value. - * - * Equality of Metric is based on its name. - * - * @param name the metric name - * @param value the metric value, which must be a valid numerical value, - * a valid value is neither negative nor NaN/Infinite. - * @param average the data stream of the metric value, for trending over time. Metrics that are already - * averages (e.g. system load average) or finite (e.g. as number of processors), are not trended. - */ -@SerialVersionUID(1L) -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -final case class Metric private[cluster] (name: String, value: Number, private[cluster] val average: Option[EWMA]) - extends MetricNumericConverter { - - require(defined(value), s"Invalid Metric [$name] value [$value]") - - /** - * Updates the data point, and if defined, updates the data stream (average). - * Returns the updated metric. - */ - def :+(latest: Metric): Metric = - if (this sameAs latest) average match { - case Some(avg) ⇒ copy(value = latest.value, average = Some(avg :+ latest.value.doubleValue)) - case None if latest.average.isDefined ⇒ copy(value = latest.value, average = latest.average) - case _ ⇒ copy(value = latest.value) - } - else this - - /** - * The numerical value of the average, if defined, otherwise the latest value - */ - def smoothValue: Double = average match { - case Some(avg) ⇒ avg.value - case None ⇒ value.doubleValue - } - - /** - * @return true if this value is smoothed - */ - def isSmooth: Boolean = average.isDefined - - /** - * Returns true if that is tracking the same metric as this. - */ - def sameAs(that: Metric): Boolean = name == that.name - - override def hashCode = name.## - override def equals(obj: Any) = obj match { - case other: Metric ⇒ sameAs(other) - case _ ⇒ false - } - -} - -/** - * Factory for creating valid Metric instances. - */ -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -object Metric extends MetricNumericConverter { - - /** - * Creates a new Metric instance if the value is valid, otherwise None - * is returned. Invalid numeric values are negative and NaN/Infinite. - */ - def create(name: String, value: Number, decayFactor: Option[Double]): Option[Metric] = - if (defined(value)) Some(new Metric(name, value, ceateEWMA(value.doubleValue, decayFactor))) - else None - - /** - * Creates a new Metric instance if the Try is successful and the value is valid, - * otherwise None is returned. Invalid numeric values are negative and NaN/Infinite. - */ - def create(name: String, value: Try[Number], decayFactor: Option[Double]): Option[Metric] = value match { - case Success(v) ⇒ create(name, v, decayFactor) - case Failure(_) ⇒ None - } - - private def ceateEWMA(value: Double, decayFactor: Option[Double]): Option[EWMA] = decayFactor match { - case Some(alpha) ⇒ Some(EWMA(value, alpha)) - case None ⇒ None - } - -} - -/** - * The snapshot of current sampled health metrics for any monitored process. - * Collected and gossipped at regular intervals for dynamic cluster management strategies. - * - * Equality of NodeMetrics is based on its address. - * - * @param address [[akka.actor.Address]] of the node the metrics are gathered at - * @param timestamp the time of sampling, in milliseconds since midnight, January 1, 1970 UTC - * @param metrics the set of sampled [[akka.cluster.Metric]] - */ -@SerialVersionUID(1L) -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -final case class NodeMetrics(address: Address, timestamp: Long, metrics: Set[Metric] = Set.empty[Metric]) { - - /** - * Returns the most recent data. - */ - def merge(that: NodeMetrics): NodeMetrics = { - require(address == that.address, s"merge only allowed for same address, [$address] != [$that.address]") - if (timestamp >= that.timestamp) this // that is older - else { - // equality is based on the name of the Metric and Set doesn't replace existing element - copy(metrics = that.metrics union metrics, timestamp = that.timestamp) - } - } - - def metric(key: String): Option[Metric] = metrics.collectFirst { case m if m.name == key ⇒ m } - - /** - * Java API - */ - def getMetrics: java.lang.Iterable[Metric] = - scala.collection.JavaConverters.asJavaIterableConverter(metrics).asJava - - /** - * Returns true if that address is the same as this - */ - def sameAs(that: NodeMetrics): Boolean = address == that.address - - override def hashCode = address.## - override def equals(obj: Any) = obj match { - case other: NodeMetrics ⇒ sameAs(other) - case _ ⇒ false - } - -} - -/** - * Definitions of the built-in standard metrics. - * - * The following extractors and data structures makes it easy to consume the - * [[akka.cluster.NodeMetrics]] in for example load balancers. - */ -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -object StandardMetrics { - - // Constants for the heap related Metric names - final val HeapMemoryUsed = "heap-memory-used" - final val HeapMemoryCommitted = "heap-memory-committed" - final val HeapMemoryMax = "heap-memory-max" - - // Constants for the cpu related Metric names - final val SystemLoadAverage = "system-load-average" - final val Processors = "processors" - final val CpuCombined = "cpu-combined" - - object HeapMemory { - - /** - * Given a NodeMetrics it returns the HeapMemory data if the nodeMetrics contains - * necessary heap metrics. - * @return if possible a tuple matching the HeapMemory constructor parameters - */ - def unapply(nodeMetrics: NodeMetrics): Option[(Address, Long, Long, Long, Option[Long])] = { - for { - used ← nodeMetrics.metric(HeapMemoryUsed) - committed ← nodeMetrics.metric(HeapMemoryCommitted) - } yield (nodeMetrics.address, nodeMetrics.timestamp, - used.smoothValue.longValue, committed.smoothValue.longValue, - nodeMetrics.metric(HeapMemoryMax).map(_.smoothValue.longValue)) - } - - } - - /** - * Java API to extract HeapMemory data from nodeMetrics, if the nodeMetrics - * contains necessary heap metrics, otherwise it returns null. - */ - def extractHeapMemory(nodeMetrics: NodeMetrics): HeapMemory = nodeMetrics match { - case HeapMemory(address, timestamp, used, committed, max) ⇒ - // note that above extractor returns tuple - HeapMemory(address, timestamp, used, committed, max) - case _ ⇒ null - } - - /** - * The amount of used and committed memory will always be <= max if max is defined. - * A memory allocation may fail if it attempts to increase the used memory such that used > committed - * even if used <= max is true (e.g. when the system virtual memory is low). - * - * @param address [[akka.actor.Address]] of the node the metrics are gathered at - * @param timestamp the time of sampling, in milliseconds since midnight, January 1, 1970 UTC - * @param used the current sum of heap memory used from all heap memory pools (in bytes) - * @param committed the current sum of heap memory guaranteed to be available to the JVM - * from all heap memory pools (in bytes). Committed will always be greater than or equal to used. - * @param max the maximum amount of memory (in bytes) that can be used for JVM memory management. - * Can be undefined on some OS. - */ - @SerialVersionUID(1L) - final case class HeapMemory(address: Address, timestamp: Long, used: Long, committed: Long, max: Option[Long]) { - require(committed > 0L, "committed heap expected to be > 0 bytes") - require(max.isEmpty || max.get > 0L, "max heap expected to be > 0 bytes") - } - - object Cpu { - - /** - * Given a NodeMetrics it returns the Cpu data if the nodeMetrics contains - * necessary cpu metrics. - * @return if possible a tuple matching the Cpu constructor parameters - */ - def unapply(nodeMetrics: NodeMetrics): Option[(Address, Long, Option[Double], Option[Double], Int)] = { - for { - processors ← nodeMetrics.metric(Processors) - } yield (nodeMetrics.address, nodeMetrics.timestamp, - nodeMetrics.metric(SystemLoadAverage).map(_.smoothValue), - nodeMetrics.metric(CpuCombined).map(_.smoothValue), processors.value.intValue) - } - - } - - /** - * Java API to extract Cpu data from nodeMetrics, if the nodeMetrics - * contains necessary cpu metrics, otherwise it returns null. - */ - def extractCpu(nodeMetrics: NodeMetrics): Cpu = nodeMetrics match { - case Cpu(address, timestamp, systemLoadAverage, cpuCombined, processors) ⇒ - // note that above extractor returns tuple - Cpu(address, timestamp, systemLoadAverage, cpuCombined, processors) - case _ ⇒ null - } - - /** - * @param address [[akka.actor.Address]] of the node the metrics are gathered at - * @param timestamp the time of sampling, in milliseconds since midnight, January 1, 1970 UTC - * @param systemLoadAverage OS-specific average load on the CPUs in the system, for the past 1 minute, - * The system is possibly nearing a bottleneck if the system load average is nearing number of cpus/cores. - * @param cpuCombined combined CPU sum of User + Sys + Nice + Wait, in percentage ([0.0 - 1.0]. This - * metric can describe the amount of time the CPU spent executing code during n-interval and how - * much more it could theoretically. - * @param processors the number of available processors - */ - @SerialVersionUID(1L) - final case class Cpu( - address: Address, - timestamp: Long, - systemLoadAverage: Option[Double], - cpuCombined: Option[Double], - processors: Int) { - - cpuCombined match { - case Some(x) ⇒ require(0.0 <= x && x <= 1.0, s"cpuCombined must be between [0.0 - 1.0], was [$x]") - case None ⇒ - } - - } - -} - -/** - * INTERNAL API - * - * Encapsulates evaluation of validity of metric values, conversion of an actual metric value to - * a [[akka.cluster.Metric]] for consumption by subscribed cluster entities. - */ -private[cluster] trait MetricNumericConverter { - - /** - * An defined value is neither negative nor NaN/Infinite: - *
  • JMX system load average and max heap can be 'undefined' for certain OS, in which case a -1 is returned
  • - *
  • SIGAR combined CPU can occasionally return a NaN or Infinite (known bug)
- */ - def defined(value: Number): Boolean = convertNumber(value) match { - case Left(a) ⇒ a >= 0 - case Right(b) ⇒ !(b < 0.0 || b.isNaN || b.isInfinite) - } - - /** - * May involve rounding or truncation. - */ - def convertNumber(from: Any): Either[Long, Double] = from match { - case n: Int ⇒ Left(n) - case n: Long ⇒ Left(n) - case n: Double ⇒ Right(n) - case n: Float ⇒ Right(n) - case n: BigInt ⇒ Left(n.longValue) - case n: BigDecimal ⇒ Right(n.doubleValue) - case x ⇒ throw new IllegalArgumentException(s"Not a number [$x]") - } - -} - -/** - * Implementations of cluster system metrics extends this trait. - */ -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -trait MetricsCollector extends Closeable { - /** - * Samples and collects new data points. - * This method is invoked periodically and should return - * current metrics for this node. - */ - def sample(): NodeMetrics -} - -/** - * Loads JVM and system metrics through JMX monitoring beans. - * - * @param address The [[akka.actor.Address]] of the node being sampled - * @param decay how quickly the exponential weighting of past data is decayed - */ -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -class JmxMetricsCollector(address: Address, decayFactor: Double) extends MetricsCollector { - import StandardMetrics._ - - private def this(cluster: Cluster) = - this( - cluster.selfAddress, - EWMA.alpha(cluster.settings.MetricsMovingAverageHalfLife, cluster.settings.MetricsInterval)) - - /** - * This constructor is used when creating an instance from configured FQCN - */ - def this(system: ActorSystem) = this(Cluster(system)) - - private val decayFactorOption = Some(decayFactor) - - private val memoryMBean: MemoryMXBean = ManagementFactory.getMemoryMXBean - - private val osMBean: OperatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean - - /** - * Samples and collects new data points. - * Creates a new instance each time. - */ - def sample(): NodeMetrics = NodeMetrics(address, newTimestamp, metrics) - - def metrics: Set[Metric] = { - val heap = heapMemoryUsage - Set(systemLoadAverage, heapUsed(heap), heapCommitted(heap), heapMax(heap), processors).flatten - } - - /** - * JMX Returns the OS-specific average load on the CPUs in the system, for the past 1 minute. - * On some systems the JMX OS system load average may not be available, in which case a -1 is - * returned from JMX, and None is returned from this method. - * Creates a new instance each time. - */ - def systemLoadAverage: Option[Metric] = Metric.create( - name = SystemLoadAverage, - value = osMBean.getSystemLoadAverage, - decayFactor = None) - - /** - * (JMX) Returns the number of available processors - * Creates a new instance each time. - */ - def processors: Option[Metric] = Metric.create( - name = Processors, - value = osMBean.getAvailableProcessors, - decayFactor = None) - - /** - * Current heap to be passed in to heapUsed, heapCommitted and heapMax - */ - def heapMemoryUsage: MemoryUsage = memoryMBean.getHeapMemoryUsage - - /** - * (JMX) Returns the current sum of heap memory used from all heap memory pools (in bytes). - * Creates a new instance each time. - */ - def heapUsed(heap: MemoryUsage): Option[Metric] = Metric.create( - name = HeapMemoryUsed, - value = heap.getUsed, - decayFactor = decayFactorOption) - - /** - * (JMX) Returns the current sum of heap memory guaranteed to be available to the JVM - * from all heap memory pools (in bytes). - * Creates a new instance each time. - */ - def heapCommitted(heap: MemoryUsage): Option[Metric] = Metric.create( - name = HeapMemoryCommitted, - value = heap.getCommitted, - decayFactor = decayFactorOption) - - /** - * (JMX) Returns the maximum amount of memory (in bytes) that can be used - * for JVM memory management. If not defined the metrics value is None, i.e. - * never negative. - * Creates a new instance each time. - */ - def heapMax(heap: MemoryUsage): Option[Metric] = Metric.create( - name = HeapMemoryMax, - value = heap.getMax, - decayFactor = None) - - override def close(): Unit = () - -} - -/** - * Loads metrics through Hyperic SIGAR and JMX monitoring beans. This - * loads wider and more accurate range of metrics compared to JmxMetricsCollector - * by using SIGAR's native OS library. - * - * The constructor will by design throw exception if org.hyperic.sigar.Sigar can't be loaded, due - * to missing classes or native libraries. - * - * @param address The [[akka.actor.Address]] of the node being sampled - * @param decay how quickly the exponential weighting of past data is decayed - * @param sigar the org.hyperic.Sigar instance - */ -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -class SigarMetricsCollector(address: Address, decayFactor: Double, sigar: AnyRef) - extends JmxMetricsCollector(address, decayFactor) { - - import StandardMetrics._ - - private def this(cluster: Cluster) = - this( - cluster.selfAddress, - EWMA.alpha(cluster.settings.MetricsMovingAverageHalfLife, cluster.settings.MetricsInterval), - cluster.system.dynamicAccess.createInstanceFor[AnyRef]("org.hyperic.sigar.Sigar", Nil).get) - - /** - * This constructor is used when creating an instance from configured FQCN - */ - def this(system: ActorSystem) = this(Cluster(system)) - - private val decayFactorOption = Some(decayFactor) - - private val EmptyClassArray: Array[(Class[_])] = Array.empty[(Class[_])] - private val LoadAverage: Option[Method] = createMethodFrom(sigar, "getLoadAverage") - private val Cpu: Option[Method] = createMethodFrom(sigar, "getCpuPerc") - private val CombinedCpu: Option[Method] = Try(Cpu.get.getReturnType.getMethod("getCombined")).toOption - - // Do something initially, in constructor, to make sure that the native library can be loaded. - // This will by design throw exception if sigar isn't usable - val pid: Long = createMethodFrom(sigar, "getPid") match { - case Some(method) ⇒ - try method.invoke(sigar).asInstanceOf[Long] catch { - case e: InvocationTargetException if e.getCause.isInstanceOf[LinkageError] ⇒ - // native libraries not in place - // don't throw fatal LinkageError, but something harmless - throw new IllegalArgumentException(e.getCause.toString) - case e: InvocationTargetException ⇒ throw e.getCause - } - case None ⇒ throw new IllegalArgumentException("Wrong version of Sigar, expected 'getPid' method") - } - - override def metrics: Set[Metric] = { - super.metrics.filterNot(_.name == SystemLoadAverage) union Set(systemLoadAverage, cpuCombined).flatten - } - - /** - * (SIGAR / JMX) Returns the OS-specific average load on the CPUs in the system, for the past 1 minute. - * On some systems the JMX OS system load average may not be available, in which case a -1 is returned - * from JMX, which means that None is returned from this method. - * Hyperic SIGAR provides more precise values, thus, if the library is on the classpath, it is the default. - * Creates a new instance each time. - */ - override def systemLoadAverage: Option[Metric] = Metric.create( - name = SystemLoadAverage, - value = Try(LoadAverage.get.invoke(sigar).asInstanceOf[Array[AnyRef]](0).asInstanceOf[Number]), - decayFactor = None) orElse super.systemLoadAverage - - /** - * (SIGAR) Returns the combined CPU sum of User + Sys + Nice + Wait, in percentage. This metric can describe - * the amount of time the CPU spent executing code during n-interval and how much more it could - * theoretically. Note that 99% CPU utilization can be optimal or indicative of failure. - * - * In the data stream, this will sometimes return with a valid metric value, and sometimes as a NaN or Infinite. - * Documented bug https://bugzilla.redhat.com/show_bug.cgi?id=749121 and several others. - * - * Creates a new instance each time. - */ - def cpuCombined: Option[Metric] = Metric.create( - name = CpuCombined, - value = Try(CombinedCpu.get.invoke(Cpu.get.invoke(sigar)).asInstanceOf[Number]), - decayFactor = decayFactorOption) - - /** - * Releases any native resources associated with this instance. - */ - override def close(): Unit = Try(createMethodFrom(sigar, "close").get.invoke(sigar)) - - private def createMethodFrom(ref: AnyRef, method: String, types: Array[(Class[_])] = EmptyClassArray): Option[Method] = - Try(ref.getClass.getMethod(method, types: _*)).toOption - -} - -/** - * INTERNAL API - * Factory to create configured MetricsCollector. - * If instantiation of SigarMetricsCollector fails (missing class or native library) - * it falls back to use JmxMetricsCollector. - */ -private[cluster] object MetricsCollector { - def apply(system: ExtendedActorSystem, settings: ClusterSettings): MetricsCollector = { - import settings.{ MetricsCollectorClass ⇒ fqcn } - def log = Logging(system, getClass.getName) - if (fqcn == classOf[SigarMetricsCollector].getName) { - Try(new SigarMetricsCollector(system)) match { - case Success(sigarCollector) ⇒ sigarCollector - case Failure(e) ⇒ - Cluster(system).InfoLogger.logInfo( - "Metrics will be retreived from MBeans, and may be incorrect on some platforms. " + - "To increase metric accuracy add the 'sigar.jar' to the classpath and the appropriate " + - "platform-specific native libary to 'java.library.path'. Reason: " + - e.toString) - new JmxMetricsCollector(system) - } - - } else { - system.dynamicAccess.createInstanceFor[MetricsCollector](fqcn, List(classOf[ActorSystem] → system)). - recover { - case e ⇒ throw new ConfigurationException("Could not create custom metrics collector [" + fqcn + "] due to:" + e.toString) - }.get - } - } -} - diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterReadView.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterReadView.scala index d446f6c768..9bb9149651 100644 --- a/akka-cluster/src/main/scala/akka/cluster/ClusterReadView.scala +++ b/akka-cluster/src/main/scala/akka/cluster/ClusterReadView.scala @@ -4,8 +4,6 @@ package akka.cluster -// TODO remove metrics - import java.io.Closeable import scala.collection.immutable import akka.actor.{ Actor, ActorRef, Address, Props } @@ -37,12 +35,6 @@ private[akka] class ClusterReadView(cluster: Cluster) extends Closeable { @volatile private var _latestStats = CurrentInternalStats(GossipStats(), VectorClockStats()) - /** - * Current cluster metrics, updated periodically via event bus. - */ - @volatile - private var _clusterMetrics: Set[NodeMetrics] = Set.empty - val selfAddress = cluster.selfAddress // create actor that subscribes to the cluster eventBus to update current read view state @@ -76,9 +68,8 @@ private[akka] class ClusterReadView(cluster: Cluster) extends Closeable { _state = _state.copy(leader = leader) case RoleLeaderChanged(role, leader) ⇒ _state = _state.copy(roleLeaderMap = _state.roleLeaderMap + (role → leader)) - case stats: CurrentInternalStats ⇒ _latestStats = stats - case ClusterMetricsChanged(nodes) ⇒ _clusterMetrics = nodes - case ClusterShuttingDown ⇒ + case stats: CurrentInternalStats ⇒ _latestStats = stats + case ClusterShuttingDown ⇒ } case s: CurrentClusterState ⇒ _state = s } @@ -145,11 +136,6 @@ private[akka] class ClusterReadView(cluster: Cluster) extends Closeable { def reachability: Reachability = _reachability - /** - * Current cluster metrics. - */ - def clusterMetrics: Set[NodeMetrics] = _clusterMetrics - /** * INTERNAL API */ diff --git a/akka-cluster/src/main/scala/akka/cluster/ClusterSettings.scala b/akka-cluster/src/main/scala/akka/cluster/ClusterSettings.scala index 55abb5d05c..f3a42dae54 100644 --- a/akka-cluster/src/main/scala/akka/cluster/ClusterSettings.scala +++ b/akka-cluster/src/main/scala/akka/cluster/ClusterSettings.scala @@ -113,15 +113,6 @@ final class ClusterSettings(val config: Config, val systemName: String) { val ReduceGossipDifferentViewProbability: Int = cc.getInt("reduce-gossip-different-view-probability") val SchedulerTickDuration: FiniteDuration = cc.getMillisDuration("scheduler.tick-duration") val SchedulerTicksPerWheel: Int = cc.getInt("scheduler.ticks-per-wheel") - val MetricsEnabled: Boolean = cc.getBoolean("metrics.enabled") - val MetricsCollectorClass: String = cc.getString("metrics.collector-class") - val MetricsInterval: FiniteDuration = { - cc.getMillisDuration("metrics.collect-interval") - } requiring (_ > Duration.Zero, "metrics.collect-interval must be > 0") - val MetricsGossipInterval: FiniteDuration = cc.getMillisDuration("metrics.gossip-interval") - val MetricsMovingAverageHalfLife: FiniteDuration = { - cc.getMillisDuration("metrics.moving-average-half-life") - } requiring (_ > Duration.Zero, "metrics.moving-average-half-life must be > 0") object Debug { val VerboseHeartbeatLogging = cc.getBoolean("debug.verbose-heartbeat-logging") diff --git a/akka-cluster/src/main/scala/akka/cluster/protobuf/ClusterMessageSerializer.scala b/akka-cluster/src/main/scala/akka/cluster/protobuf/ClusterMessageSerializer.scala index 94416c2451..dccab336f0 100644 --- a/akka-cluster/src/main/scala/akka/cluster/protobuf/ClusterMessageSerializer.scala +++ b/akka-cluster/src/main/scala/akka/cluster/protobuf/ClusterMessageSerializer.scala @@ -60,8 +60,7 @@ class ClusterMessageSerializer(val system: ExtendedActorSystem) extends BaseSeri classOf[ClusterHeartbeatSender.HeartbeatRsp] → (bytes ⇒ ClusterHeartbeatSender.HeartbeatRsp(uniqueAddressFromBinary(bytes))), classOf[ExitingConfirmed] → (bytes ⇒ InternalClusterAction.ExitingConfirmed(uniqueAddressFromBinary(bytes))), classOf[GossipStatus] → gossipStatusFromBinary, - classOf[GossipEnvelope] → gossipEnvelopeFromBinary, - classOf[MetricsGossipEnvelope] → metricsGossipEnvelopeFromBinary) + classOf[GossipEnvelope] → gossipEnvelopeFromBinary) def includeManifest: Boolean = true @@ -70,7 +69,6 @@ class ClusterMessageSerializer(val system: ExtendedActorSystem) extends BaseSeri case ClusterHeartbeatSender.HeartbeatRsp(from) ⇒ uniqueAddressToProtoByteArray(from) case m: GossipEnvelope ⇒ gossipEnvelopeToProto(m).toByteArray case m: GossipStatus ⇒ gossipStatusToProto(m).toByteArray - case m: MetricsGossipEnvelope ⇒ compress(metricsGossipEnvelopeToProto(m)) case InternalClusterAction.Join(node, roles) ⇒ joinToProto(node, roles).toByteArray case InternalClusterAction.Welcome(from, gossip) ⇒ compress(welcomeToProto(from, gossip)) case ClusterUserAction.Leave(address) ⇒ addressToProtoByteArray(address) @@ -333,94 +331,4 @@ class ClusterMessageSerializer(val system: ExtendedActorSystem) extends BaseSeri status.getVersion, status.getAllHashesList.asScala.toVector)) - private def metricsGossipEnvelopeToProto(envelope: MetricsGossipEnvelope): cm.MetricsGossipEnvelope = { - import scala.collection.breakOut - val allNodeMetrics = envelope.gossip.nodes - val allAddresses: Vector[Address] = allNodeMetrics.map(_.address)(breakOut) - val addressMapping = allAddresses.zipWithIndex.toMap - val allMetricNames: Vector[String] = allNodeMetrics.foldLeft(Set.empty[String])((s, n) ⇒ s ++ n.metrics.iterator.map(_.name)).toVector - val metricNamesMapping = allMetricNames.zipWithIndex.toMap - def mapAddress(address: Address) = mapWithErrorMessage(addressMapping, address, "address") - def mapName(name: String) = mapWithErrorMessage(metricNamesMapping, name, "address") - - def ewmaToProto(ewma: Option[EWMA]): Option[cm.NodeMetrics.EWMA.Builder] = ewma.map { - x ⇒ cm.NodeMetrics.EWMA.newBuilder().setValue(x.value).setAlpha(x.alpha) - } - - def numberToProto(number: Number): cm.NodeMetrics.Number.Builder = { - import cm.NodeMetrics.Number - import cm.NodeMetrics.NumberType - number match { - case n: jl.Double ⇒ Number.newBuilder().setType(NumberType.Double).setValue64(jl.Double.doubleToLongBits(n)) - case n: jl.Long ⇒ Number.newBuilder().setType(NumberType.Long).setValue64(n) - case n: jl.Float ⇒ Number.newBuilder().setType(NumberType.Float).setValue32(jl.Float.floatToIntBits(n)) - case n: jl.Integer ⇒ Number.newBuilder().setType(NumberType.Integer).setValue32(n) - case _ ⇒ - val bos = new ByteArrayOutputStream - val out = new ObjectOutputStream(bos) - out.writeObject(number) - out.close() - Number.newBuilder().setType(NumberType.Serialized).setSerialized(ByteString.copyFrom(bos.toByteArray)) - } - } - - def metricToProto(metric: Metric): cm.NodeMetrics.Metric.Builder = { - val builder = cm.NodeMetrics.Metric.newBuilder().setNameIndex(mapName(metric.name)).setNumber(numberToProto(metric.value)) - ewmaToProto(metric.average).map(builder.setEwma).getOrElse(builder) - } - - def nodeMetricsToProto(nodeMetrics: NodeMetrics): cm.NodeMetrics.Builder = - cm.NodeMetrics.newBuilder().setAddressIndex(mapAddress(nodeMetrics.address)).setTimestamp(nodeMetrics.timestamp). - addAllMetrics(nodeMetrics.metrics.map(metricToProto(_).build).asJava) - - val nodeMetrics: Iterable[cm.NodeMetrics] = allNodeMetrics.map(nodeMetricsToProto(_).build) - - cm.MetricsGossipEnvelope.newBuilder().setFrom(addressToProto(envelope.from)).setGossip( - cm.MetricsGossip.newBuilder().addAllAllAddresses(allAddresses.map(addressToProto(_).build()).asJava). - addAllAllMetricNames(allMetricNames.asJava).addAllNodeMetrics(nodeMetrics.asJava)). - setReply(envelope.reply).build - } - - private def metricsGossipEnvelopeFromBinary(bytes: Array[Byte]): MetricsGossipEnvelope = - metricsGossipEnvelopeFromProto(cm.MetricsGossipEnvelope.parseFrom(decompress(bytes))) - - private def metricsGossipEnvelopeFromProto(envelope: cm.MetricsGossipEnvelope): MetricsGossipEnvelope = { - import scala.collection.breakOut - val mgossip = envelope.getGossip - val addressMapping: Vector[Address] = mgossip.getAllAddressesList.asScala.map(addressFromProto)(breakOut) - val metricNameMapping: Vector[String] = mgossip.getAllMetricNamesList.asScala.toVector - - def ewmaFromProto(ewma: cm.NodeMetrics.EWMA): Option[EWMA] = - Some(EWMA(ewma.getValue, ewma.getAlpha)) - - def numberFromProto(number: cm.NodeMetrics.Number): Number = { - import cm.NodeMetrics.NumberType - number.getType.getNumber match { - case NumberType.Double_VALUE ⇒ jl.Double.longBitsToDouble(number.getValue64) - case NumberType.Long_VALUE ⇒ number.getValue64 - case NumberType.Float_VALUE ⇒ jl.Float.intBitsToFloat(number.getValue32) - case NumberType.Integer_VALUE ⇒ number.getValue32 - case NumberType.Serialized_VALUE ⇒ - val in = new ClassLoaderObjectInputStream( - system.dynamicAccess.classLoader, - new ByteArrayInputStream(number.getSerialized.toByteArray)) - val obj = in.readObject - in.close() - obj.asInstanceOf[jl.Number] - } - } - - def metricFromProto(metric: cm.NodeMetrics.Metric): Metric = - Metric(metricNameMapping(metric.getNameIndex), numberFromProto(metric.getNumber), - if (metric.hasEwma) ewmaFromProto(metric.getEwma) else None) - - def nodeMetricsFromProto(nodeMetrics: cm.NodeMetrics): NodeMetrics = - NodeMetrics(addressMapping(nodeMetrics.getAddressIndex), nodeMetrics.getTimestamp, - nodeMetrics.getMetricsList.asScala.map(metricFromProto)(breakOut)) - - val nodeMetrics: Set[NodeMetrics] = mgossip.getNodeMetricsList.asScala.map(nodeMetricsFromProto)(breakOut) - - MetricsGossipEnvelope(addressFromProto(envelope.getFrom), MetricsGossip(nodeMetrics), envelope.getReply) - } - } diff --git a/akka-cluster/src/main/scala/akka/cluster/routing/AdaptiveLoadBalancing.scala b/akka-cluster/src/main/scala/akka/cluster/routing/AdaptiveLoadBalancing.scala deleted file mode 100644 index 9e188ac270..0000000000 --- a/akka-cluster/src/main/scala/akka/cluster/routing/AdaptiveLoadBalancing.scala +++ /dev/null @@ -1,534 +0,0 @@ -/** - * Copyright (C) 2009-2017 Lightbend Inc. - */ -package akka.cluster.routing - -// TODO remove metrics - -import java.util.Arrays -import java.util.concurrent.atomic.AtomicReference - -import scala.annotation.tailrec -import scala.collection.immutable -import java.util.concurrent.ThreadLocalRandom - -import com.typesafe.config.Config - -import akka.actor.Actor -import akka.actor.ActorSystem -import akka.actor.Address -import akka.actor.DynamicAccess -import akka.actor.NoSerializationVerificationNeeded -import akka.actor.Props -import akka.actor.SupervisorStrategy -import akka.cluster.Cluster -import akka.cluster.ClusterEvent.ClusterMetricsChanged -import akka.cluster.ClusterEvent.CurrentClusterState -import akka.cluster.NodeMetrics -import akka.cluster.StandardMetrics.Cpu -import akka.cluster.StandardMetrics.HeapMemory -import akka.dispatch.Dispatchers -import akka.japi.Util.immutableSeq -import akka.routing._ - -/** - * Load balancing of messages to cluster nodes based on cluster metric data. - * - * It uses random selection of routees based on probabilities derived from - * the remaining capacity of corresponding node. - * - * @param system the actor system hosting this router - * - * @param metricsSelector decides what probability to use for selecting a routee, based - * on remaining capacity as indicated by the node metrics - */ -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -final case class AdaptiveLoadBalancingRoutingLogic(system: ActorSystem, metricsSelector: MetricsSelector = MixMetricsSelector) - extends RoutingLogic with NoSerializationVerificationNeeded { - - private val cluster = Cluster(system) - - // The current weighted routees, if any. Weights are produced by the metricsSelector - // via the metricsListener Actor. It's only updated by the actor, but accessed from - // the threads of the sender()s. - private val weightedRouteesRef = - new AtomicReference[(immutable.IndexedSeq[Routee], Set[NodeMetrics], Option[WeightedRoutees])]( - (Vector.empty, Set.empty, None)) - - @tailrec final def metricsChanged(event: ClusterMetricsChanged): Unit = { - val oldValue = weightedRouteesRef.get - val (routees, _, _) = oldValue - val weightedRoutees = Some(new WeightedRoutees(routees, cluster.selfAddress, - metricsSelector.weights(event.nodeMetrics))) - // retry when CAS failure - if (!weightedRouteesRef.compareAndSet(oldValue, (routees, event.nodeMetrics, weightedRoutees))) - metricsChanged(event) - } - - override def select(message: Any, routees: immutable.IndexedSeq[Routee]): Routee = - if (routees.isEmpty) NoRoutee - else { - - def updateWeightedRoutees(): Option[WeightedRoutees] = { - val oldValue = weightedRouteesRef.get - val (oldRoutees, oldMetrics, oldWeightedRoutees) = oldValue - - if (routees ne oldRoutees) { - val weightedRoutees = Some(new WeightedRoutees(routees, cluster.selfAddress, - metricsSelector.weights(oldMetrics))) - // ignore, don't update, in case of CAS failure - weightedRouteesRef.compareAndSet(oldValue, (routees, oldMetrics, weightedRoutees)) - weightedRoutees - } else oldWeightedRoutees - } - - updateWeightedRoutees() match { - case Some(weighted) ⇒ - if (weighted.isEmpty) NoRoutee - else weighted(ThreadLocalRandom.current.nextInt(weighted.total) + 1) - case None ⇒ - routees(ThreadLocalRandom.current.nextInt(routees.size)) - } - - } -} - -/** - * A router pool that performs load balancing of messages to cluster nodes based on - * cluster metric data. - * - * It uses random selection of routees based on probabilities derived from - * the remaining capacity of corresponding node. - * - * The configuration parameter trumps the constructor arguments. This means that - * if you provide `nrOfInstances` during instantiation they will be ignored if - * the router is defined in the configuration file for the actor being used. - * - *

Supervision Setup

- * - * Any routees that are created by a router will be created as the router's children. - * The router is therefore also the children's supervisor. - * - * The supervision strategy of the router actor can be configured with - * [[#withSupervisorStrategy]]. If no strategy is provided, routers default to - * a strategy of “always escalate”. This means that errors are passed up to the - * router's supervisor for handling. - * - * The router's supervisor will treat the error as an error with the router itself. - * Therefore a directive to stop or restart will cause the router itself to stop or - * restart. The router, in turn, will cause its children to stop and restart. - * - * @param metricsSelector decides what probability to use for selecting a routee, based - * on remaining capacity as indicated by the node metrics - * - * @param nrOfInstances initial number of routees in the pool - * - * @param supervisorStrategy strategy for supervising the routees, see 'Supervision Setup' - * - * @param routerDispatcher dispatcher to use for the router head actor, which handles - * supervision, death watch and router management messages - */ -@SerialVersionUID(1L) -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -final case class AdaptiveLoadBalancingPool( - metricsSelector: MetricsSelector = MixMetricsSelector, - override val nrOfInstances: Int = 0, - override val supervisorStrategy: SupervisorStrategy = Pool.defaultSupervisorStrategy, - override val routerDispatcher: String = Dispatchers.DefaultDispatcherId, - override val usePoolDispatcher: Boolean = false) - extends Pool { - - def this(config: Config, dynamicAccess: DynamicAccess) = - this( - nrOfInstances = ClusterRouterSettingsBase.getMaxTotalNrOfInstances(config), - metricsSelector = MetricsSelector.fromConfig(config, dynamicAccess), - usePoolDispatcher = config.hasPath("pool-dispatcher")) - - /** - * Java API - * @param metricsSelector decides what probability to use for selecting a routee, based - * on remaining capacity as indicated by the node metrics - * @param nr initial number of routees in the pool - */ - def this(metricsSelector: MetricsSelector, nr: Int) = this(nrOfInstances = nr) - - override def resizer: Option[Resizer] = None - - override def nrOfInstances(sys: ActorSystem) = this.nrOfInstances - - override def createRouter(system: ActorSystem): Router = - new Router(AdaptiveLoadBalancingRoutingLogic(system, metricsSelector)) - - override def routingLogicController(routingLogic: RoutingLogic): Option[Props] = - Some(Props( - classOf[AdaptiveLoadBalancingMetricsListener], - routingLogic.asInstanceOf[AdaptiveLoadBalancingRoutingLogic])) - - /** - * Setting the supervisor strategy to be used for the “head” Router actor. - */ - def withSupervisorStrategy(strategy: SupervisorStrategy): AdaptiveLoadBalancingPool = copy(supervisorStrategy = strategy) - - /** - * Setting the dispatcher to be used for the router head actor, which handles - * supervision, death watch and router management messages. - */ - def withDispatcher(dispatcherId: String): AdaptiveLoadBalancingPool = copy(routerDispatcher = dispatcherId) - - /** - * Uses the supervisor strategy of the given RouterConfig - * if this RouterConfig doesn't have one - */ - override def withFallback(other: RouterConfig): RouterConfig = - if (this.supervisorStrategy ne Pool.defaultSupervisorStrategy) this - else other match { - case _: FromConfig | _: NoRouter ⇒ this // NoRouter is the default, hence “neutral” - case otherRouter: AdaptiveLoadBalancingPool ⇒ - if (otherRouter.supervisorStrategy eq Pool.defaultSupervisorStrategy) this - else this.withSupervisorStrategy(otherRouter.supervisorStrategy) - case _ ⇒ throw new IllegalArgumentException("Expected AdaptiveLoadBalancingPool, got [%s]".format(other)) - } - -} - -/** - * A router group that performs load balancing of messages to cluster nodes based on - * cluster metric data. - * - * It uses random selection of routees based on probabilities derived from - * the remaining capacity of corresponding node. - * - * The configuration parameter trumps the constructor arguments. This means that - * if you provide `paths` during instantiation they will be ignored if - * the router is defined in the configuration file for the actor being used. - * - * @param metricsSelector decides what probability to use for selecting a routee, based - * on remaining capacity as indicated by the node metrics - * - * @param paths string representation of the actor paths of the routees, messages are - * sent with [[akka.actor.ActorSelection]] to these paths - * - * @param routerDispatcher dispatcher to use for the router head actor, which handles - * router management messages - */ -@SerialVersionUID(1L) -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -final case class AdaptiveLoadBalancingGroup( - metricsSelector: MetricsSelector = MixMetricsSelector, - override val paths: immutable.Iterable[String] = Nil, - override val routerDispatcher: String = Dispatchers.DefaultDispatcherId) - extends Group { - - def this(config: Config, dynamicAccess: DynamicAccess) = - this( - metricsSelector = MetricsSelector.fromConfig(config, dynamicAccess), - paths = immutableSeq(config.getStringList("routees.paths"))) - - /** - * Java API - * @param metricsSelector decides what probability to use for selecting a routee, based - * on remaining capacity as indicated by the node metrics - * @param routeesPaths string representation of the actor paths of the routees, messages are - * sent with [[akka.actor.ActorSelection]] to these paths - */ - def this( - metricsSelector: MetricsSelector, - routeesPaths: java.lang.Iterable[String]) = this(paths = immutableSeq(routeesPaths)) - - override def paths(system: ActorSystem): immutable.Iterable[String] = this.paths - - override def createRouter(system: ActorSystem): Router = - new Router(AdaptiveLoadBalancingRoutingLogic(system, metricsSelector)) - - override def routingLogicController(routingLogic: RoutingLogic): Option[Props] = - Some(Props( - classOf[AdaptiveLoadBalancingMetricsListener], - routingLogic.asInstanceOf[AdaptiveLoadBalancingRoutingLogic])) - - /** - * Setting the dispatcher to be used for the router head actor, which handles - * router management messages - */ - def withDispatcher(dispatcherId: String): AdaptiveLoadBalancingGroup = copy(routerDispatcher = dispatcherId) - -} - -/** - * MetricsSelector that uses the heap metrics. - * Low heap capacity => small weight. - */ -@SerialVersionUID(1L) -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -case object HeapMetricsSelector extends CapacityMetricsSelector { - /** - * Java API: get the singleton instance - */ - def getInstance = this - - override def capacity(nodeMetrics: Set[NodeMetrics]): Map[Address, Double] = { - nodeMetrics.collect { - case HeapMemory(address, _, used, committed, max) ⇒ - val capacity = max match { - case None ⇒ (committed - used).toDouble / committed - case Some(m) ⇒ (m - used).toDouble / m - } - (address, capacity) - }.toMap - } -} - -/** - * MetricsSelector that uses the combined CPU metrics. - * Combined CPU is sum of User + Sys + Nice + Wait, in percentage. - * Low cpu capacity => small weight. - */ -@SerialVersionUID(1L) -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -case object CpuMetricsSelector extends CapacityMetricsSelector { - /** - * Java API: get the singleton instance - */ - def getInstance = this - - override def capacity(nodeMetrics: Set[NodeMetrics]): Map[Address, Double] = { - nodeMetrics.collect { - case Cpu(address, _, _, Some(cpuCombined), _) ⇒ - val capacity = 1.0 - cpuCombined - (address, capacity) - }.toMap - } -} - -/** - * MetricsSelector that uses the system load average metrics. - * System load average is OS-specific average load on the CPUs in the system, - * for the past 1 minute. The system is possibly nearing a bottleneck if the - * system load average is nearing number of cpus/cores. - * Low load average capacity => small weight. - */ -@SerialVersionUID(1L) -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -case object SystemLoadAverageMetricsSelector extends CapacityMetricsSelector { - /** - * Java API: get the singleton instance - */ - def getInstance = this - - override def capacity(nodeMetrics: Set[NodeMetrics]): Map[Address, Double] = { - nodeMetrics.collect { - case Cpu(address, _, Some(systemLoadAverage), _, processors) ⇒ - val capacity = 1.0 - math.min(1.0, systemLoadAverage / processors) - (address, capacity) - }.toMap - } -} - -/** - * Singleton instance of the default MixMetricsSelector, which uses [akka.cluster.routing.HeapMetricsSelector], - * [akka.cluster.routing.CpuMetricsSelector], and [akka.cluster.routing.SystemLoadAverageMetricsSelector] - */ -@SerialVersionUID(1L) -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -object MixMetricsSelector extends MixMetricsSelectorBase( - Vector(HeapMetricsSelector, CpuMetricsSelector, SystemLoadAverageMetricsSelector)) { - - /** - * Java API: get the default singleton instance - */ - def getInstance = this -} - -/** - * MetricsSelector that combines other selectors and aggregates their capacity - * values. By default it uses [akka.cluster.routing.HeapMetricsSelector], - * [akka.cluster.routing.CpuMetricsSelector], and [akka.cluster.routing.SystemLoadAverageMetricsSelector] - */ -@SerialVersionUID(1L) -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -final case class MixMetricsSelector( - selectors: immutable.IndexedSeq[CapacityMetricsSelector]) - extends MixMetricsSelectorBase(selectors) - -/** - * Base class for MetricsSelector that combines other selectors and aggregates their capacity. - */ -@SerialVersionUID(1L) -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -abstract class MixMetricsSelectorBase(selectors: immutable.IndexedSeq[CapacityMetricsSelector]) - extends CapacityMetricsSelector { - - /** - * Java API: construct a mix-selector from a sequence of selectors - */ - def this(selectors: java.lang.Iterable[CapacityMetricsSelector]) = this(immutableSeq(selectors).toVector) - - override def capacity(nodeMetrics: Set[NodeMetrics]): Map[Address, Double] = { - val combined: immutable.IndexedSeq[(Address, Double)] = selectors.flatMap(_.capacity(nodeMetrics).toSeq) - // aggregated average of the capacities by address - combined.foldLeft(Map.empty[Address, (Double, Int)].withDefaultValue((0.0, 0))) { - case (acc, (address, capacity)) ⇒ - val (sum, count) = acc(address) - acc + (address → ((sum + capacity, count + 1))) - }.map { - case (addr, (sum, count)) ⇒ addr → (sum / count) - } - } - -} - -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -object MetricsSelector { - def fromConfig(config: Config, dynamicAccess: DynamicAccess) = - config.getString("metrics-selector") match { - case "mix" ⇒ MixMetricsSelector - case "heap" ⇒ HeapMetricsSelector - case "cpu" ⇒ CpuMetricsSelector - case "load" ⇒ SystemLoadAverageMetricsSelector - case fqn ⇒ - val args = List(classOf[Config] → config) - dynamicAccess.createInstanceFor[MetricsSelector](fqn, args).recover({ - case exception ⇒ throw new IllegalArgumentException( - (s"Cannot instantiate metrics-selector [$fqn], " + - "make sure it extends [akka.cluster.routing.MetricsSelector] and " + - "has constructor with [com.typesafe.config.Config] parameter"), exception) - }).get - } -} - -/** - * A MetricsSelector is responsible for producing weights from the node metrics. - */ -@SerialVersionUID(1L) -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -trait MetricsSelector extends Serializable { - /** - * The weights per address, based on the nodeMetrics. - */ - def weights(nodeMetrics: Set[NodeMetrics]): Map[Address, Int] -} - -/** - * A MetricsSelector producing weights from remaining capacity. - * The weights are typically proportional to the remaining capacity. - */ -@SerialVersionUID(1L) -@deprecated("Superseded by akka.cluster.metrics (in akka-cluster-metrics jar)", "2.4") -abstract class CapacityMetricsSelector extends MetricsSelector { - - /** - * Remaining capacity for each node. The value is between - * 0.0 and 1.0, where 0.0 means no remaining capacity (full - * utilization) and 1.0 means full remaining capacity (zero - * utilization). - */ - def capacity(nodeMetrics: Set[NodeMetrics]): Map[Address, Double] - - /** - * Converts the capacity values to weights. The node with lowest - * capacity gets weight 1 (lowest usable capacity is 1%) and other - * nodes gets weights proportional to their capacity compared to - * the node with lowest capacity. - */ - def weights(capacity: Map[Address, Double]): Map[Address, Int] = { - if (capacity.isEmpty) Map.empty[Address, Int] - else { - val (_, min) = capacity.minBy { case (_, c) ⇒ c } - // lowest usable capacity is 1% (>= 0.5% will be rounded to weight 1), also avoids div by zero - val divisor = math.max(0.01, min) - capacity map { case (addr, c) ⇒ (addr → math.round((c) / divisor).toInt) } - } - } - - /** - * The weights per address, based on the capacity produced by - * the nodeMetrics. - */ - override def weights(nodeMetrics: Set[NodeMetrics]): Map[Address, Int] = - weights(capacity(nodeMetrics)) - -} - -/** - * INTERNAL API - * - * Pick routee based on its weight. Higher weight, higher probability. - */ -private[cluster] class WeightedRoutees(routees: immutable.IndexedSeq[Routee], selfAddress: Address, weights: Map[Address, Int]) { - - // fill an array of same size as the refs with accumulated weights, - // binarySearch is used to pick the right bucket from a requested value - // from 1 to the total sum of the used weights. - private val buckets: Array[Int] = { - def fullAddress(routee: Routee): Address = { - val a = routee match { - case ActorRefRoutee(ref) ⇒ ref.path.address - case ActorSelectionRoutee(sel) ⇒ sel.anchor.path.address - } - a match { - case Address(_, _, None, None) ⇒ selfAddress - case a ⇒ a - } - } - val buckets = Array.ofDim[Int](routees.size) - val meanWeight = if (weights.isEmpty) 1 else weights.values.sum / weights.size - val w = weights.withDefaultValue(meanWeight) // we don’t necessarily have metrics for all addresses - var i = 0 - var sum = 0 - routees foreach { r ⇒ - sum += w(fullAddress(r)) - buckets(i) = sum - i += 1 - } - buckets - } - - def isEmpty: Boolean = buckets.length == 0 || buckets(buckets.length - 1) == 0 - - def total: Int = { - require(!isEmpty, "WeightedRoutees must not be used when empty") - buckets(buckets.length - 1) - } - - /** - * Pick the routee matching a value, from 1 to total. - */ - def apply(value: Int): Routee = { - require(1 <= value && value <= total, "value must be between [1 - %s]" format total) - routees(idx(Arrays.binarySearch(buckets, value))) - } - - /** - * Converts the result of Arrays.binarySearch into a index in the buckets array - * see documentation of Arrays.binarySearch for what it returns - */ - private def idx(i: Int): Int = { - if (i >= 0) i // exact match - else { - val j = math.abs(i + 1) - if (j >= buckets.length) throw new IndexOutOfBoundsException( - "Requested index [%s] is > max index [%s]".format(i, buckets.length)) - else j - } - } -} - -/** - * INTERNAL API - * subscribe to ClusterMetricsChanged and update routing logic - */ -private[akka] class AdaptiveLoadBalancingMetricsListener(routingLogic: AdaptiveLoadBalancingRoutingLogic) - extends Actor { - - val cluster = Cluster(context.system) - - override def preStart(): Unit = cluster.subscribe(self, classOf[ClusterMetricsChanged]) - - override def postStop(): Unit = cluster.unsubscribe(self) - - def receive = { - case event: ClusterMetricsChanged ⇒ routingLogic.metricsChanged(event) - case _: CurrentClusterState ⇒ // ignore - } - -} - diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/ClusterMetricsDisabledSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/ClusterMetricsDisabledSpec.scala deleted file mode 100644 index 4ded69bb2a..0000000000 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/ClusterMetricsDisabledSpec.scala +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2009-2017 Lightbend Inc. - */ - -package akka.cluster - -// TODO remove metrics - -import akka.remote.testkit.{ MultiNodeSpec, MultiNodeConfig } -import com.typesafe.config.ConfigFactory -import akka.testkit.LongRunningTest -import akka.cluster.ClusterEvent._ - -object ClusterMetricsDisabledMultiJvmSpec extends MultiNodeConfig { - val first = role("first") - val second = role("second") - commonConfig(ConfigFactory.parseString("akka.cluster.metrics.enabled = off") - .withFallback(MultiNodeClusterSpec.clusterConfigWithFailureDetectorPuppet)) -} - -class ClusterMetricsDisabledMultiJvmNode1 extends ClusterMetricsDisabledSpec -class ClusterMetricsDisabledMultiJvmNode2 extends ClusterMetricsDisabledSpec - -abstract class ClusterMetricsDisabledSpec extends MultiNodeSpec(ClusterMetricsDisabledMultiJvmSpec) with MultiNodeClusterSpec { - "Cluster metrics" must { - "not collect metrics, not publish ClusterMetricsChanged, and not gossip metrics" taggedAs LongRunningTest in { - awaitClusterUp(roles: _*) - clusterView.clusterMetrics.size should ===(0) - cluster.subscribe(testActor, classOf[ClusterMetricsChanged]) - expectMsgType[CurrentClusterState] - expectNoMsg - clusterView.clusterMetrics.size should ===(0) - enterBarrier("after") - } - } -} - diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/ClusterMetricsSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/ClusterMetricsSpec.scala deleted file mode 100644 index b85082f38a..0000000000 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/ClusterMetricsSpec.scala +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2009-2017 Lightbend Inc. - */ - -package akka.cluster - -// TODO remove metrics - -import scala.language.postfixOps -import scala.concurrent.duration._ -import com.typesafe.config.ConfigFactory -import akka.remote.testkit.MultiNodeConfig -import akka.remote.testkit.MultiNodeSpec -import akka.testkit._ -import akka.actor.ExtendedActorSystem - -object ClusterMetricsMultiJvmSpec extends MultiNodeConfig { - val first = role("first") - val second = role("second") - val third = role("third") - val fourth = role("fourth") - val fifth = role("fifth") - - commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfigWithFailureDetectorPuppet)) -} - -class ClusterMetricsMultiJvmNode1 extends ClusterMetricsSpec -class ClusterMetricsMultiJvmNode2 extends ClusterMetricsSpec -class ClusterMetricsMultiJvmNode3 extends ClusterMetricsSpec -class ClusterMetricsMultiJvmNode4 extends ClusterMetricsSpec -class ClusterMetricsMultiJvmNode5 extends ClusterMetricsSpec - -abstract class ClusterMetricsSpec extends MultiNodeSpec(ClusterMetricsMultiJvmSpec) with MultiNodeClusterSpec { - import ClusterMetricsMultiJvmSpec._ - - private[cluster] def isSigar(collector: MetricsCollector): Boolean = collector.isInstanceOf[SigarMetricsCollector] - - "Cluster metrics" must { - "periodically collect metrics on each node, publish ClusterMetricsChanged to the event stream, " + - "and gossip metrics around the node ring" taggedAs LongRunningTest in within(60 seconds) { - awaitClusterUp(roles: _*) - enterBarrier("cluster-started") - awaitAssert(clusterView.members.count(_.status == MemberStatus.Up) should ===(roles.size)) - awaitAssert(clusterView.clusterMetrics.size should ===(roles.size)) - val collector = MetricsCollector(cluster.system, cluster.settings) - collector.sample.metrics.size should be > (3) - enterBarrier("after") - } - "reflect the correct number of node metrics in cluster view" taggedAs LongRunningTest in within(30 seconds) { - runOn(second) { - cluster.leave(first) - } - enterBarrier("first-left") - runOn(second, third, fourth, fifth) { - markNodeAsUnavailable(first) - awaitAssert(clusterView.clusterMetrics.size should ===(roles.size - 1)) - } - enterBarrier("finished") - } - } -} diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala index c26b64e7c1..b249676e18 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala @@ -3,8 +3,6 @@ */ package akka.cluster -// TODO remove metrics - import java.util.UUID import language.implicitConversions @@ -115,8 +113,6 @@ trait MultiNodeClusterSpec extends Suite with STMultiNodeSpec with WatchedByCoro def muteLog(sys: ActorSystem = system): Unit = { if (!sys.log.isDebugEnabled) { Seq( - ".*Metrics collection has started successfully.*", - ".*Metrics will be retreived from MBeans.*", ".*Cluster Node.* - registered cluster JMX MBean.*", ".*Cluster Node.* - is starting up.*", ".*Shutting down cluster Node.*", @@ -130,8 +126,6 @@ trait MultiNodeClusterSpec extends Suite with STMultiNodeSpec with WatchedByCoro classOf[ClusterHeartbeatSender.HeartbeatRsp], classOf[GossipEnvelope], classOf[GossipStatus], - classOf[MetricsGossipEnvelope], - classOf[ClusterEvent.ClusterMetricsChanged], classOf[InternalClusterAction.Tick], classOf[akka.actor.PoisonPill], classOf[akka.dispatch.sysmsg.DeathWatchNotification], diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/StressSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/StressSpec.scala index 210587e75a..b2a85e2b41 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/StressSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/StressSpec.scala @@ -3,9 +3,6 @@ */ package akka.cluster -// TODO remove metrics -// FIXME this test is not migrated to metrics extension - import language.postfixOps import scala.annotation.tailrec import scala.collection.immutable @@ -26,12 +23,9 @@ import akka.actor.Props import akka.actor.RootActorPath import akka.actor.SupervisorStrategy._ import akka.actor.Terminated -import akka.cluster.ClusterEvent.ClusterMetricsChanged import akka.cluster.ClusterEvent.CurrentClusterState import akka.cluster.ClusterEvent.CurrentInternalStats import akka.cluster.ClusterEvent.MemberEvent -import akka.cluster.StandardMetrics.Cpu -import akka.cluster.StandardMetrics.HeapMemory import akka.remote.DefaultFailureDetectorRegistry import akka.remote.PhiAccrualFailureDetector import akka.remote.RemoteScope @@ -116,7 +110,6 @@ private[cluster] object StressMultiJvmSpec extends MultiNodeConfig { # (width * math.pow(width, levels) - 1) / (width - 1) tree-width = 4 tree-levels = 4 - report-metrics-interval = 10s # scale convergence within timeouts with this factor convergence-within-factor = 1.0 # set to off to only test cluster membership @@ -211,7 +204,6 @@ private[cluster] object StressMultiJvmSpec extends MultiNodeConfig { val expectedTestDuration = testConfig.getMillisDuration("expected-test-duration") * dFactor val treeWidth = getInt("tree-width") val treeLevels = getInt("tree-levels") - val reportMetricsInterval = testConfig.getMillisDuration("report-metrics-interval") val convergenceWithinFactor = getDouble("convergence-within-factor") val exerciseActors = getBoolean("exercise-actors") @@ -251,12 +243,10 @@ private[cluster] object StressMultiJvmSpec extends MultiNodeConfig { * itself when expected results has been collected. */ class ClusterResultAggregator(title: String, expectedResults: Int, settings: Settings) extends Actor with ActorLogging { - import settings.reportMetricsInterval import settings.infolog private val cluster = Cluster(context.system) private var reportTo: Option[ActorRef] = None private var results = Vector.empty[ClusterResult] - private var nodeMetrics = Set.empty[NodeMetrics] private var phiValuesObservedByNode = { import akka.cluster.Member.addressOrdering immutable.SortedMap.empty[Address, immutable.SortedSet[PhiValue]] @@ -267,30 +257,19 @@ private[cluster] object StressMultiJvmSpec extends MultiNodeConfig { } import context.dispatcher - private val reportMetricsTask = context.system.scheduler.schedule( - reportMetricsInterval, reportMetricsInterval, self, ReportTick) - - // subscribe to ClusterMetricsChanged, re-subscribe when restart - override def preStart(): Unit = cluster.subscribe(self, classOf[ClusterMetricsChanged]) - override def postStop(): Unit = { - cluster.unsubscribe(self) - reportMetricsTask.cancel() - super.postStop() - } def receive = { - case ClusterMetricsChanged(clusterMetrics) ⇒ nodeMetrics = clusterMetrics - case PhiResult(from, phiValues) ⇒ phiValuesObservedByNode += from → phiValues - case StatsResult(from, stats) ⇒ clusterStatsObservedByNode += from → stats + case PhiResult(from, phiValues) ⇒ phiValuesObservedByNode += from → phiValues + case StatsResult(from, stats) ⇒ clusterStatsObservedByNode += from → stats case ReportTick ⇒ if (infolog) - log.info(s"[${title}] in progress\n${formatMetrics}\n\n${formatPhi}\n\n${formatStats}") + log.info(s"[${title}] in progress\n\n${formatPhi}\n\n${formatStats}") case r: ClusterResult ⇒ results :+= r if (results.size == expectedResults) { val aggregated = AggregatedClusterResult(title, maxDuration, totalGossipStats) if (infolog) - log.info(s"[${title}] completed in [${aggregated.duration.toMillis}] ms\n${aggregated.clusterStats}\n${formatMetrics}\n\n${formatPhi}\n\n${formatStats}") + log.info(s"[${title}] completed in [${aggregated.duration.toMillis}] ms\n${aggregated.clusterStats}\n\n${formatPhi}\n\n${formatStats}") reportTo foreach { _ ! aggregated } context stop self } @@ -302,27 +281,6 @@ private[cluster] object StressMultiJvmSpec extends MultiNodeConfig { def totalGossipStats = results.foldLeft(GossipStats()) { _ :+ _.clusterStats } - def formatMetrics: String = { - import akka.cluster.Member.addressOrdering - (formatMetricsHeader +: (nodeMetrics.toSeq.sortBy(_.address) map formatMetricsLine)).mkString("\n") - } - - def formatMetricsHeader: String = "[Node]\t[Heap (MB)]\t[CPU (%)]\t[Load]" - - def formatMetricsLine(nodeMetrics: NodeMetrics): String = { - val heap = nodeMetrics match { - case HeapMemory(address, timestamp, used, committed, max) ⇒ - (used.doubleValue / 1024 / 1024).form - case _ ⇒ "" - } - val cpuAndLoad = nodeMetrics match { - case Cpu(address, timestamp, loadOption, cpuOption, processors) ⇒ - format(cpuOption) + "\t" + format(loadOption) - case _ ⇒ "N/A\tN/A" - } - s"${nodeMetrics.address}\t${heap}\t${cpuAndLoad}" - } - def format(opt: Option[Double]) = opt match { case None ⇒ "N/A" case Some(x) ⇒ x.form diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/AdaptiveLoadBalancingRouterSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/AdaptiveLoadBalancingRouterSpec.scala deleted file mode 100644 index 3932526c99..0000000000 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/AdaptiveLoadBalancingRouterSpec.scala +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (C) 2009-2017 Lightbend Inc. - */ - -package akka.cluster.routing - -// TODO remove metrics - -import language.postfixOps -import java.lang.management.ManagementFactory -import scala.concurrent.Await -import scala.concurrent.duration._ -import com.typesafe.config.Config -import com.typesafe.config.ConfigFactory -import akka.actor._ -import akka.cluster.Cluster -import akka.cluster.MultiNodeClusterSpec -import akka.cluster.NodeMetrics -import akka.pattern.ask -import akka.remote.testkit.{ MultiNodeSpec, MultiNodeConfig } -import akka.routing.GetRoutees -import akka.routing.FromConfig -import akka.testkit.{ LongRunningTest, DefaultTimeout, ImplicitSender } -import akka.routing.ActorRefRoutee -import akka.routing.Routees - -object AdaptiveLoadBalancingRouterMultiJvmSpec extends MultiNodeConfig { - - class Echo extends Actor { - def receive = { - case _ ⇒ sender() ! Reply(Cluster(context.system).selfAddress) - } - } - - class Memory extends Actor with ActorLogging { - var usedMemory: Array[Array[Int]] = _ - def receive = { - case AllocateMemory ⇒ - val heap = ManagementFactory.getMemoryMXBean.getHeapMemoryUsage - // getMax can be undefined (-1) - val max = math.max(heap.getMax, heap.getCommitted) - val used = heap.getUsed - log.info("used heap before: [{}] bytes, of max [{}]", used, heap.getMax) - // allocate 70% of free space - val allocateBytes = (0.7 * (max - used)).toInt - val numberOfArrays = allocateBytes / 1024 - usedMemory = Array.ofDim(numberOfArrays, 248) // each 248 element Int array will use ~ 1 kB - log.info("used heap after: [{}] bytes", ManagementFactory.getMemoryMXBean.getHeapMemoryUsage.getUsed) - sender() ! "done" - } - } - - case object AllocateMemory - final case class Reply(address: Address) - - val first = role("first") - val second = role("second") - val third = role("third") - - commonConfig(debugConfig(on = false).withFallback(ConfigFactory.parseString(""" - akka.cluster.failure-detector.acceptable-heartbeat-pause = 10s - akka.cluster.metrics.collect-interval = 1s - akka.cluster.metrics.gossip-interval = 1s - akka.cluster.metrics.moving-average-half-life = 2s - akka.actor.deployment { - /router3 = { - router = adaptive-pool - metrics-selector = cpu - nr-of-instances = 9 - } - /router4 = { - router = adaptive-pool - metrics-selector = "akka.cluster.routing.TestCustomMetricsSelector" - cluster { - enabled = on - max-nr-of-instances-per-node = 2 - max-total-nr-of-instances = 10 - } - } - } - """)).withFallback(MultiNodeClusterSpec.clusterConfig)) - -} - -class TestCustomMetricsSelector(config: Config) extends MetricsSelector { - override def weights(nodeMetrics: Set[NodeMetrics]): Map[Address, Int] = Map.empty -} - -class AdaptiveLoadBalancingRouterMultiJvmNode1 extends AdaptiveLoadBalancingRouterSpec -class AdaptiveLoadBalancingRouterMultiJvmNode2 extends AdaptiveLoadBalancingRouterSpec -class AdaptiveLoadBalancingRouterMultiJvmNode3 extends AdaptiveLoadBalancingRouterSpec - -abstract class AdaptiveLoadBalancingRouterSpec extends MultiNodeSpec(AdaptiveLoadBalancingRouterMultiJvmSpec) - with MultiNodeClusterSpec - with ImplicitSender with DefaultTimeout { - import AdaptiveLoadBalancingRouterMultiJvmSpec._ - - def currentRoutees(router: ActorRef) = - Await.result(router ? GetRoutees, timeout.duration).asInstanceOf[Routees].routees - - def receiveReplies(expectedReplies: Int): Map[Address, Int] = { - val zero = Map.empty[Address, Int] ++ roles.map(address(_) → 0) - (receiveWhile(5 seconds, messages = expectedReplies) { - case Reply(address) ⇒ address - }).foldLeft(zero) { - case (replyMap, address) ⇒ replyMap + (address → (replyMap(address) + 1)) - } - } - - /** - * Fills in self address for local ActorRef - */ - def fullAddress(actorRef: ActorRef): Address = actorRef.path.address match { - case Address(_, _, None, None) ⇒ cluster.selfAddress - case a ⇒ a - } - - def startRouter(name: String): ActorRef = { - val router = system.actorOf( - ClusterRouterPool( - local = AdaptiveLoadBalancingPool(HeapMetricsSelector), - settings = ClusterRouterPoolSettings(totalInstances = 10, maxInstancesPerNode = 1, allowLocalRoutees = true, useRole = None)). - props(Props[Echo]), - name) - // it may take some time until router receives cluster member events - awaitAssert { currentRoutees(router).size should ===(roles.size) } - val routees = currentRoutees(router) - routees.map { case ActorRefRoutee(ref) ⇒ fullAddress(ref) }.toSet should ===(roles.map(address).toSet) - router - } - - "A cluster with a AdaptiveLoadBalancingRouter" must { - "start cluster nodes" taggedAs LongRunningTest in { - awaitClusterUp(roles: _*) - enterBarrier("after-1") - } - - "use all nodes in the cluster when not overloaded" taggedAs LongRunningTest in { - runOn(first) { - val router1 = startRouter("router1") - - // collect some metrics before we start - Thread.sleep(cluster.settings.MetricsInterval.toMillis * 10) - - val iterationCount = 100 - 1 to iterationCount foreach { _ ⇒ - router1 ! "hit" - // wait a while between each message, since metrics is collected periodically - Thread.sleep(10) - } - - val replies = receiveReplies(iterationCount) - - replies(first) should be > (0) - replies(second) should be > (0) - replies(third) should be > (0) - replies.values.sum should ===(iterationCount) - - } - - enterBarrier("after-2") - } - - "prefer node with more free heap capacity" taggedAs LongRunningTest in { - System.gc() - enterBarrier("gc") - - runOn(second) { - within(20.seconds) { - system.actorOf(Props[Memory], "memory") ! AllocateMemory - expectMsg("done") - } - } - enterBarrier("heap-allocated") - - runOn(first) { - val router2 = startRouter("router2") - - // collect some metrics before we start - Thread.sleep(cluster.settings.MetricsInterval.toMillis * 10) - - val iterationCount = 3000 - 1 to iterationCount foreach { _ ⇒ - router2 ! "hit" - } - - val replies = receiveReplies(iterationCount) - - replies(third) should be > (replies(second)) - replies.values.sum should ===(iterationCount) - - } - - enterBarrier("after-3") - } - - "create routees from configuration" taggedAs LongRunningTest in { - runOn(first) { - val router3 = system.actorOf(FromConfig.props(Props[Memory]), "router3") - // it may take some time until router receives cluster member events - awaitAssert { currentRoutees(router3).size should ===(9) } - val routees = currentRoutees(router3) - routees.map { case ActorRefRoutee(ref) ⇒ fullAddress(ref) }.toSet should ===(Set(address(first))) - } - enterBarrier("after-4") - } - - "create routees from cluster.enabled configuration" taggedAs LongRunningTest in { - runOn(first) { - val router4 = system.actorOf(FromConfig.props(Props[Memory]), "router4") - // it may take some time until router receives cluster member events - awaitAssert { currentRoutees(router4).size should ===(6) } - val routees = currentRoutees(router4) - routees.map { case ActorRefRoutee(ref) ⇒ fullAddress(ref) }.toSet should ===(Set( - address(first), address(second), address(third))) - } - enterBarrier("after-5") - } - } -} diff --git a/akka-cluster/src/test/scala/akka/cluster/ClusterConfigSpec.scala b/akka-cluster/src/test/scala/akka/cluster/ClusterConfigSpec.scala index 3f809038d1..481556bd77 100644 --- a/akka-cluster/src/test/scala/akka/cluster/ClusterConfigSpec.scala +++ b/akka-cluster/src/test/scala/akka/cluster/ClusterConfigSpec.scala @@ -48,12 +48,6 @@ class ClusterConfigSpec extends AkkaSpec { ReduceGossipDifferentViewProbability should ===(400) SchedulerTickDuration should ===(33 millis) SchedulerTicksPerWheel should ===(512) - // TODO remove metrics - MetricsEnabled should ===(true) - MetricsCollectorClass should ===(classOf[SigarMetricsCollector].getName) - MetricsInterval should ===(3 seconds) - MetricsGossipInterval should ===(3 seconds) - MetricsMovingAverageHalfLife should ===(12 seconds) } } } diff --git a/akka-cluster/src/test/scala/akka/cluster/ClusterDeployerSpec.scala b/akka-cluster/src/test/scala/akka/cluster/ClusterDeployerSpec.scala index de4f313984..60db31e27d 100644 --- a/akka-cluster/src/test/scala/akka/cluster/ClusterDeployerSpec.scala +++ b/akka-cluster/src/test/scala/akka/cluster/ClusterDeployerSpec.scala @@ -79,12 +79,6 @@ class ClusterDeployerSpec extends AkkaSpec(ClusterDeployerSpec.deployerConf) { "mymailbox"))) } - "have correct router mappings" in { - val mapping = system.asInstanceOf[ActorSystemImpl].provider.deployer.routerTypeMapping - mapping("adaptive-pool") should ===(classOf[akka.cluster.routing.AdaptiveLoadBalancingPool].getName) - mapping("adaptive-group") should ===(classOf[akka.cluster.routing.AdaptiveLoadBalancingGroup].getName) - } - } } diff --git a/akka-cluster/src/test/scala/akka/cluster/EWMASpec.scala b/akka-cluster/src/test/scala/akka/cluster/EWMASpec.scala deleted file mode 100644 index 0c4afa36a5..0000000000 --- a/akka-cluster/src/test/scala/akka/cluster/EWMASpec.scala +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (C) 2009-2017 Lightbend Inc. - */ - -package akka.cluster - -// TODO remove metrics - -import scala.concurrent.duration._ -import akka.testkit.{ LongRunningTest, AkkaSpec } -import java.util.concurrent.ThreadLocalRandom - -class EWMASpec extends AkkaSpec(MetricsEnabledSpec.config) with MetricsCollectorFactory { - - val collector = createMetricsCollector - - "DataStream" must { - - "calcualate same ewma for constant values" in { - val ds = EWMA(value = 100.0, alpha = 0.18) :+ - 100.0 :+ 100.0 :+ 100.0 - ds.value should ===(100.0 +- 0.001) - } - - "calcualate correct ewma for normal decay" in { - val d0 = EWMA(value = 1000.0, alpha = 2.0 / (1 + 10)) - d0.value should ===(1000.0 +- 0.01) - val d1 = d0 :+ 10.0 - d1.value should ===(820.0 +- 0.01) - val d2 = d1 :+ 10.0 - d2.value should ===(672.73 +- 0.01) - val d3 = d2 :+ 10.0 - d3.value should ===(552.23 +- 0.01) - val d4 = d3 :+ 10.0 - d4.value should ===(453.64 +- 0.01) - - val dn = (1 to 100).foldLeft(d0)((d, _) ⇒ d :+ 10.0) - dn.value should ===(10.0 +- 0.1) - } - - "calculate ewma for alpha 1.0, max bias towards latest value" in { - val d0 = EWMA(value = 100.0, alpha = 1.0) - d0.value should ===(100.0 +- 0.01) - val d1 = d0 :+ 1.0 - d1.value should ===(1.0 +- 0.01) - val d2 = d1 :+ 57.0 - d2.value should ===(57.0 +- 0.01) - val d3 = d2 :+ 10.0 - d3.value should ===(10.0 +- 0.01) - } - - "calculate alpha from half-life and collect interval" in { - // according to http://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average - val expectedAlpha = 0.1 - // alpha = 2.0 / (1 + N) - val n = 19 - val halfLife = n.toDouble / 2.8854 - val collectInterval = 1.second - val halfLifeDuration = (halfLife * 1000).millis - EWMA.alpha(halfLifeDuration, collectInterval) should ===(expectedAlpha +- 0.001) - } - - "calculate sane alpha from short half-life" in { - val alpha = EWMA.alpha(1.millis, 3.seconds) - alpha should be <= (1.0) - alpha should be >= (0.0) - alpha should ===(1.0 +- 0.001) - } - - "calculate sane alpha from long half-life" in { - val alpha = EWMA.alpha(1.day, 3.seconds) - alpha should be <= (1.0) - alpha should be >= (0.0) - alpha should ===(0.0 +- 0.001) - } - - "calculate the ewma for multiple, variable, data streams" taggedAs LongRunningTest in { - var streamingDataSet = Map.empty[String, Metric] - var usedMemory = Array.empty[Byte] - (1 to 50) foreach { _ ⇒ - // wait a while between each message to give the metrics a chance to change - Thread.sleep(100) - usedMemory = usedMemory ++ Array.fill(1024)(ThreadLocalRandom.current.nextInt(127).toByte) - val changes = collector.sample.metrics.flatMap { latest ⇒ - streamingDataSet.get(latest.name) match { - case None ⇒ Some(latest) - case Some(previous) ⇒ - if (latest.isSmooth && latest.value != previous.value) { - val updated = previous :+ latest - updated.isSmooth should ===(true) - updated.smoothValue should not be (previous.smoothValue) - Some(updated) - } else None - } - } - streamingDataSet ++= changes.map(m ⇒ m.name → m) - } - } - } -} diff --git a/akka-cluster/src/test/scala/akka/cluster/MetricNumericConverterSpec.scala b/akka-cluster/src/test/scala/akka/cluster/MetricNumericConverterSpec.scala deleted file mode 100644 index 5be263680a..0000000000 --- a/akka-cluster/src/test/scala/akka/cluster/MetricNumericConverterSpec.scala +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (C) 2009-2017 Lightbend Inc. - */ - -package akka.cluster - -// TODO remove metrics - -import org.scalatest.WordSpec -import org.scalatest.Matchers -import akka.cluster.StandardMetrics._ -import scala.util.Failure - -class MetricNumericConverterSpec extends WordSpec with Matchers with MetricNumericConverter { - - "MetricNumericConverter" must { - - "convert" in { - convertNumber(0).isLeft should ===(true) - convertNumber(1).left.get should ===(1) - convertNumber(1L).isLeft should ===(true) - convertNumber(0.0).isRight should ===(true) - } - - "define a new metric" in { - val Some(metric) = Metric.create(HeapMemoryUsed, 256L, decayFactor = Some(0.18)) - metric.name should ===(HeapMemoryUsed) - metric.value should ===(256L) - metric.isSmooth should ===(true) - metric.smoothValue should ===(256.0 +- 0.0001) - } - - "define an undefined value with a None " in { - Metric.create("x", -1, None).isDefined should ===(false) - Metric.create("x", java.lang.Double.NaN, None).isDefined should ===(false) - Metric.create("x", Failure(new RuntimeException), None).isDefined should ===(false) - } - - "recognize whether a metric value is defined" in { - defined(0) should ===(true) - defined(0.0) should ===(true) - } - - "recognize whether a metric value is not defined" in { - defined(-1) should ===(false) - defined(-1.0) should ===(false) - defined(Double.NaN) should ===(false) - } - } -} diff --git a/akka-cluster/src/test/scala/akka/cluster/MetricValuesSpec.scala b/akka-cluster/src/test/scala/akka/cluster/MetricValuesSpec.scala deleted file mode 100644 index 37ae46db55..0000000000 --- a/akka-cluster/src/test/scala/akka/cluster/MetricValuesSpec.scala +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2009-2017 Lightbend Inc. - */ - -package akka.cluster - -// TODO remove metrics - -import akka.actor.Address -import akka.testkit.AkkaSpec -import akka.cluster.StandardMetrics._ - -class MetricValuesSpec extends AkkaSpec(MetricsEnabledSpec.config) with MetricsCollectorFactory { - - val collector = createMetricsCollector - - val node1 = NodeMetrics(Address("akka.tcp", "sys", "a", 2554), 1, collector.sample.metrics) - val node2 = NodeMetrics(Address("akka.tcp", "sys", "a", 2555), 1, collector.sample.metrics) - - val nodes: Seq[NodeMetrics] = { - (1 to 100).foldLeft(List(node1, node2)) { (nodes, _) ⇒ - nodes map { n ⇒ - n.copy(metrics = collector.sample.metrics.flatMap(latest ⇒ n.metrics.collect { - case streaming if latest sameAs streaming ⇒ streaming :+ latest - })) - } - } - } - - "NodeMetrics.MetricValues" must { - "extract expected metrics for load balancing" in { - val stream1 = node2.metric(HeapMemoryCommitted).get.value.longValue - val stream2 = node1.metric(HeapMemoryUsed).get.value.longValue - stream1 should be >= (stream2) - } - - "extract expected MetricValue types for load balancing" in { - nodes foreach { node ⇒ - node match { - case HeapMemory(address, _, used, committed, _) ⇒ - used should be > (0L) - committed should be >= (used) - // Documentation java.lang.management.MemoryUsage says that committed <= max, - // but in practice that is not always true (we have seen it happen). Therefore - // we don't check the heap max value in this test. - // extract is the java api - StandardMetrics.extractHeapMemory(node) should not be (null) - } - - node match { - case Cpu(address, _, systemLoadAverageOption, cpuCombinedOption, processors) ⇒ - processors should be > (0) - if (systemLoadAverageOption.isDefined) - systemLoadAverageOption.get should be >= (0.0) - if (cpuCombinedOption.isDefined) { - cpuCombinedOption.get should be <= (1.0) - cpuCombinedOption.get should be >= (0.0) - } - // extract is the java api - StandardMetrics.extractCpu(node) should not be (null) - } - } - } - } - -} diff --git a/akka-cluster/src/test/scala/akka/cluster/MetricsCollectorSpec.scala b/akka-cluster/src/test/scala/akka/cluster/MetricsCollectorSpec.scala deleted file mode 100644 index f96dea2e5b..0000000000 --- a/akka-cluster/src/test/scala/akka/cluster/MetricsCollectorSpec.scala +++ /dev/null @@ -1,128 +0,0 @@ -/* - - * Copyright (C) 2009-2017 Lightbend Inc. - */ - -package akka.cluster - -// TODO remove metrics - -import scala.language.postfixOps - -import scala.concurrent.duration._ -import scala.util.{ Try } - -import akka.actor._ -import akka.testkit._ -import akka.cluster.StandardMetrics._ - -object MetricsEnabledSpec { - val config = """ - akka.cluster.metrics.enabled = on - akka.cluster.metrics.collect-interval = 1 s - akka.cluster.metrics.gossip-interval = 1 s - akka.actor.provider = remote - """ -} - -class MetricsCollectorSpec extends AkkaSpec(MetricsEnabledSpec.config) with ImplicitSender with MetricsCollectorFactory { - - val collector = createMetricsCollector - - "Metric must" must { - - "merge 2 metrics that are tracking the same metric" in { - for (i ← 1 to 20) { - val sample1 = collector.sample.metrics - val sample2 = collector.sample.metrics - val merged12 = sample2 flatMap (latest ⇒ sample1 collect { - case peer if latest sameAs peer ⇒ - val m = peer :+ latest - m.value should ===(latest.value) - m.isSmooth should ===(peer.isSmooth || latest.isSmooth) - m - }) - - val sample3 = collector.sample.metrics - val sample4 = collector.sample.metrics - val merged34 = sample4 flatMap (latest ⇒ sample3 collect { - case peer if latest sameAs peer ⇒ - val m = peer :+ latest - m.value should ===(latest.value) - m.isSmooth should ===(peer.isSmooth || latest.isSmooth) - m - }) - } - } - } - - "MetricsCollector" must { - - "not raise errors when attempting reflective code in apply" in { - Try(createMetricsCollector).get should not be null - } - - "collect accurate metrics for a node" in { - val sample = collector.sample - val metrics = sample.metrics.collect { case m ⇒ (m.name, m.value) } - val used = metrics collectFirst { case (HeapMemoryUsed, b) ⇒ b } - val committed = metrics collectFirst { case (HeapMemoryCommitted, b) ⇒ b } - metrics foreach { - case (SystemLoadAverage, b) ⇒ b.doubleValue should be >= (0.0) - case (Processors, b) ⇒ b.intValue should be >= (0) - case (HeapMemoryUsed, b) ⇒ b.longValue should be >= (0L) - case (HeapMemoryCommitted, b) ⇒ b.longValue should be > (0L) - case (HeapMemoryMax, b) ⇒ - b.longValue should be > (0L) - used.get.longValue should be <= (b.longValue) - committed.get.longValue should be <= (b.longValue) - case (CpuCombined, b) ⇒ - b.doubleValue should be <= (1.0) - b.doubleValue should be >= (0.0) - - } - } - - "collect JMX metrics" in { - // heap max may be undefined depending on the OS - // systemLoadAverage is JMX when SIGAR not present, but - // it's not present on all platforms - val c = collector.asInstanceOf[JmxMetricsCollector] - val heap = c.heapMemoryUsage - c.heapUsed(heap).isDefined should ===(true) - c.heapCommitted(heap).isDefined should ===(true) - c.processors.isDefined should ===(true) - } - - "collect 50 node metrics samples in an acceptable duration" taggedAs LongRunningTest in within(10 seconds) { - (1 to 50) foreach { _ ⇒ - val sample = collector.sample - sample.metrics.size should be >= (3) - Thread.sleep(100) - } - } - } -} - -/** - * Used when testing metrics without full cluster - */ -trait MetricsCollectorFactory { this: AkkaSpec ⇒ - - private def extendedActorSystem = system.asInstanceOf[ExtendedActorSystem] - - def selfAddress = extendedActorSystem.provider.rootPath.address - - val defaultDecayFactor = 2.0 / (1 + 10) - - def createMetricsCollector: MetricsCollector = - Try(new SigarMetricsCollector(selfAddress, defaultDecayFactor, - extendedActorSystem.dynamicAccess.createInstanceFor[AnyRef]("org.hyperic.sigar.Sigar", Nil))). - recover { - case e ⇒ - log.debug("Metrics will be retreived from MBeans, Sigar failed to load. Reason: " + e) - new JmxMetricsCollector(selfAddress, defaultDecayFactor) - }.get - - private[cluster] def isSigar(collector: MetricsCollector): Boolean = collector.isInstanceOf[SigarMetricsCollector] -} diff --git a/akka-cluster/src/test/scala/akka/cluster/MetricsGossipSpec.scala b/akka-cluster/src/test/scala/akka/cluster/MetricsGossipSpec.scala deleted file mode 100644 index fd166ce581..0000000000 --- a/akka-cluster/src/test/scala/akka/cluster/MetricsGossipSpec.scala +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (C) 2009-2017 Lightbend Inc. - */ - -package akka.cluster - -// TODO remove metrics - -import akka.testkit.{ ImplicitSender, AkkaSpec } -import akka.actor.Address - -import java.lang.System.{ currentTimeMillis ⇒ newTimestamp } - -class MetricsGossipSpec extends AkkaSpec(MetricsEnabledSpec.config) with ImplicitSender with MetricsCollectorFactory { - - val collector = createMetricsCollector - - /** - * sometimes Sigar will not be able to return a valid value (NaN and such) so must ensure they - * have the same Metric types - */ - def newSample(previousSample: Set[Metric]): Set[Metric] = { - // Metric.equals is based on name equality - collector.sample.metrics.filter(previousSample.contains) ++ previousSample - } - - "A MetricsGossip" must { - "add new NodeMetrics" in { - val m1 = NodeMetrics(Address("akka.tcp", "sys", "a", 2554), newTimestamp, collector.sample.metrics) - val m2 = NodeMetrics(Address("akka.tcp", "sys", "a", 2555), newTimestamp, collector.sample.metrics) - - m1.metrics.size should be > (3) - m2.metrics.size should be > (3) - - val g1 = MetricsGossip.empty :+ m1 - g1.nodes.size should ===(1) - g1.nodeMetricsFor(m1.address).map(_.metrics) should ===(Some(m1.metrics)) - - val g2 = g1 :+ m2 - g2.nodes.size should ===(2) - g2.nodeMetricsFor(m1.address).map(_.metrics) should ===(Some(m1.metrics)) - g2.nodeMetricsFor(m2.address).map(_.metrics) should ===(Some(m2.metrics)) - } - - "merge peer metrics" in { - val m1 = NodeMetrics(Address("akka.tcp", "sys", "a", 2554), newTimestamp, collector.sample.metrics) - val m2 = NodeMetrics(Address("akka.tcp", "sys", "a", 2555), newTimestamp, collector.sample.metrics) - - val g1 = MetricsGossip.empty :+ m1 :+ m2 - g1.nodes.size should ===(2) - val beforeMergeNodes = g1.nodes - - val m2Updated = m2 copy (metrics = newSample(m2.metrics), timestamp = m2.timestamp + 1000) - val g2 = g1 :+ m2Updated // merge peers - g2.nodes.size should ===(2) - g2.nodeMetricsFor(m1.address).map(_.metrics) should ===(Some(m1.metrics)) - g2.nodeMetricsFor(m2.address).map(_.metrics) should ===(Some(m2Updated.metrics)) - g2.nodes collect { case peer if peer.address == m2.address ⇒ peer.timestamp should ===(m2Updated.timestamp) } - } - - "merge an existing metric set for a node and update node ring" in { - val m1 = NodeMetrics(Address("akka.tcp", "sys", "a", 2554), newTimestamp, collector.sample.metrics) - val m2 = NodeMetrics(Address("akka.tcp", "sys", "a", 2555), newTimestamp, collector.sample.metrics) - val m3 = NodeMetrics(Address("akka.tcp", "sys", "a", 2556), newTimestamp, collector.sample.metrics) - val m2Updated = m2 copy (metrics = newSample(m2.metrics), timestamp = m2.timestamp + 1000) - - val g1 = MetricsGossip.empty :+ m1 :+ m2 - val g2 = MetricsGossip.empty :+ m3 :+ m2Updated - - g1.nodes.map(_.address) should ===(Set(m1.address, m2.address)) - - // should contain nodes 1,3, and the most recent version of 2 - val mergedGossip = g1 merge g2 - mergedGossip.nodes.map(_.address) should ===(Set(m1.address, m2.address, m3.address)) - mergedGossip.nodeMetricsFor(m1.address).map(_.metrics) should ===(Some(m1.metrics)) - mergedGossip.nodeMetricsFor(m2.address).map(_.metrics) should ===(Some(m2Updated.metrics)) - mergedGossip.nodeMetricsFor(m3.address).map(_.metrics) should ===(Some(m3.metrics)) - mergedGossip.nodes.foreach(_.metrics.size should be > (3)) - mergedGossip.nodeMetricsFor(m2.address).map(_.timestamp) should ===(Some(m2Updated.timestamp)) - } - - "get the current NodeMetrics if it exists in the local nodes" in { - val m1 = NodeMetrics(Address("akka.tcp", "sys", "a", 2554), newTimestamp, collector.sample.metrics) - val g1 = MetricsGossip.empty :+ m1 - g1.nodeMetricsFor(m1.address).map(_.metrics) should ===(Some(m1.metrics)) - } - - "remove a node if it is no longer Up" in { - val m1 = NodeMetrics(Address("akka.tcp", "sys", "a", 2554), newTimestamp, collector.sample.metrics) - val m2 = NodeMetrics(Address("akka.tcp", "sys", "a", 2555), newTimestamp, collector.sample.metrics) - - val g1 = MetricsGossip.empty :+ m1 :+ m2 - g1.nodes.size should ===(2) - val g2 = g1 remove m1.address - g2.nodes.size should ===(1) - g2.nodes.exists(_.address == m1.address) should ===(false) - g2.nodeMetricsFor(m1.address) should ===(None) - g2.nodeMetricsFor(m2.address).map(_.metrics) should ===(Some(m2.metrics)) - } - - "filter nodes" in { - val m1 = NodeMetrics(Address("akka.tcp", "sys", "a", 2554), newTimestamp, collector.sample.metrics) - val m2 = NodeMetrics(Address("akka.tcp", "sys", "a", 2555), newTimestamp, collector.sample.metrics) - - val g1 = MetricsGossip.empty :+ m1 :+ m2 - g1.nodes.size should ===(2) - val g2 = g1 filter Set(m2.address) - g2.nodes.size should ===(1) - g2.nodes.exists(_.address == m1.address) should ===(false) - g2.nodeMetricsFor(m1.address) should ===(None) - g2.nodeMetricsFor(m2.address).map(_.metrics) should ===(Some(m2.metrics)) - } - } -} - diff --git a/akka-cluster/src/test/scala/akka/cluster/NodeMetricsSpec.scala b/akka-cluster/src/test/scala/akka/cluster/NodeMetricsSpec.scala deleted file mode 100644 index 3c9b97a4ef..0000000000 --- a/akka-cluster/src/test/scala/akka/cluster/NodeMetricsSpec.scala +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2009-2017 Lightbend Inc. - */ - -package akka.cluster - -// TODO remove metrics - -import org.scalatest.WordSpec -import org.scalatest.Matchers -import akka.actor.Address - -class NodeMetricsSpec extends WordSpec with Matchers { - - val node1 = Address("akka.tcp", "sys", "a", 2554) - val node2 = Address("akka.tcp", "sys", "a", 2555) - - "NodeMetrics must" must { - - "return correct result for 2 'same' nodes" in { - (NodeMetrics(node1, 0) sameAs NodeMetrics(node1, 0)) should ===(true) - } - - "return correct result for 2 not 'same' nodes" in { - (NodeMetrics(node1, 0) sameAs NodeMetrics(node2, 0)) should ===(false) - } - - "merge 2 NodeMetrics by most recent" in { - val sample1 = NodeMetrics(node1, 1, Set(Metric.create("a", 10, None), Metric.create("b", 20, None)).flatten) - val sample2 = NodeMetrics(node1, 2, Set(Metric.create("a", 11, None), Metric.create("c", 30, None)).flatten) - - val merged = sample1 merge sample2 - merged.timestamp should ===(sample2.timestamp) - merged.metric("a").map(_.value) should ===(Some(11)) - merged.metric("b").map(_.value) should ===(Some(20)) - merged.metric("c").map(_.value) should ===(Some(30)) - } - - "not merge 2 NodeMetrics if master is more recent" in { - val sample1 = NodeMetrics(node1, 1, Set(Metric.create("a", 10, None), Metric.create("b", 20, None)).flatten) - val sample2 = NodeMetrics(node1, 0, Set(Metric.create("a", 11, None), Metric.create("c", 30, None)).flatten) - - val merged = sample1 merge sample2 // older and not same - merged.timestamp should ===(sample1.timestamp) - merged.metrics should ===(sample1.metrics) - } - } -} - diff --git a/akka-cluster/src/test/scala/akka/cluster/protobuf/ClusterMessageSerializerSpec.scala b/akka-cluster/src/test/scala/akka/cluster/protobuf/ClusterMessageSerializerSpec.scala index fa0359e532..88dfef4ac7 100644 --- a/akka-cluster/src/test/scala/akka/cluster/protobuf/ClusterMessageSerializerSpec.scala +++ b/akka-cluster/src/test/scala/akka/cluster/protobuf/ClusterMessageSerializerSpec.scala @@ -3,8 +3,6 @@ */ package akka.cluster.protobuf -// TODO remove metrics - import akka.cluster._ import akka.actor.{ ExtendedActorSystem, Address } import collection.immutable.SortedSet @@ -73,17 +71,6 @@ class ClusterMessageSerializerSpec extends AkkaSpec( checkSerialization(GossipStatus(a1.uniqueAddress, g3.version)) checkSerialization(InternalClusterAction.Welcome(uniqueAddress, g2)) - - val mg = MetricsGossip(Set( - NodeMetrics(a1.address, 4711, Set(Metric("foo", 1.2, None))), - NodeMetrics(b1.address, 4712, Set( - Metric("foo", 2.1, Some(EWMA(value = 100.0, alpha = 0.18))), - Metric("bar1", Double.MinPositiveValue, None), - Metric("bar2", Float.MaxValue, None), - Metric("bar3", Int.MaxValue, None), - Metric("bar4", Long.MaxValue, None), - Metric("bar5", BigInt(Long.MaxValue), None))))) - checkSerialization(MetricsGossipEnvelope(a1.address, mg, true)) } } } diff --git a/akka-cluster/src/test/scala/akka/cluster/routing/MetricsSelectorSpec.scala b/akka-cluster/src/test/scala/akka/cluster/routing/MetricsSelectorSpec.scala deleted file mode 100644 index 8294fbfde5..0000000000 --- a/akka-cluster/src/test/scala/akka/cluster/routing/MetricsSelectorSpec.scala +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (C) 2009-2017 Lightbend Inc. - */ - -package akka.cluster.routing - -// TODO remove metrics - -import org.scalatest.WordSpec -import org.scalatest.Matchers - -import akka.actor.Address -import akka.cluster.Metric -import akka.cluster.NodeMetrics -import akka.cluster.StandardMetrics._ - -class MetricsSelectorSpec extends WordSpec with Matchers { - - val abstractSelector = new CapacityMetricsSelector { - override def capacity(nodeMetrics: Set[NodeMetrics]): Map[Address, Double] = Map.empty - } - - val a1 = Address("akka.tcp", "sys", "a1", 2551) - val b1 = Address("akka.tcp", "sys", "b1", 2551) - val c1 = Address("akka.tcp", "sys", "c1", 2551) - val d1 = Address("akka.tcp", "sys", "d1", 2551) - - val decayFactor = Some(0.18) - - val nodeMetricsA = NodeMetrics(a1, System.currentTimeMillis, Set( - Metric.create(HeapMemoryUsed, 128, decayFactor), - Metric.create(HeapMemoryCommitted, 256, decayFactor), - Metric.create(HeapMemoryMax, 512, None), - Metric.create(CpuCombined, 0.1, decayFactor), - Metric.create(SystemLoadAverage, 0.5, None), - Metric.create(Processors, 8, None)).flatten) - - val nodeMetricsB = NodeMetrics(b1, System.currentTimeMillis, Set( - Metric.create(HeapMemoryUsed, 256, decayFactor), - Metric.create(HeapMemoryCommitted, 512, decayFactor), - Metric.create(HeapMemoryMax, 1024, None), - Metric.create(CpuCombined, 0.5, decayFactor), - Metric.create(SystemLoadAverage, 1.0, None), - Metric.create(Processors, 16, None)).flatten) - - val nodeMetricsC = NodeMetrics(c1, System.currentTimeMillis, Set( - Metric.create(HeapMemoryUsed, 1024, decayFactor), - Metric.create(HeapMemoryCommitted, 1024, decayFactor), - Metric.create(HeapMemoryMax, 1024, None), - Metric.create(CpuCombined, 1.0, decayFactor), - Metric.create(SystemLoadAverage, 16.0, None), - Metric.create(Processors, 16, None)).flatten) - - val nodeMetricsD = NodeMetrics(d1, System.currentTimeMillis, Set( - Metric.create(HeapMemoryUsed, 511, decayFactor), - Metric.create(HeapMemoryCommitted, 512, decayFactor), - Metric.create(HeapMemoryMax, 512, None), - Metric.create(Processors, 2, decayFactor)).flatten) - - val nodeMetrics = Set(nodeMetricsA, nodeMetricsB, nodeMetricsC, nodeMetricsD) - - "CapacityMetricsSelector" must { - - "calculate weights from capacity" in { - val capacity = Map(a1 → 0.6, b1 → 0.3, c1 → 0.1) - val weights = abstractSelector.weights(capacity) - weights should ===(Map(c1 → 1, b1 → 3, a1 → 6)) - } - - "handle low and zero capacity" in { - val capacity = Map(a1 → 0.0, b1 → 1.0, c1 → 0.005, d1 → 0.004) - val weights = abstractSelector.weights(capacity) - weights should ===(Map(a1 → 0, b1 → 100, c1 → 1, d1 → 0)) - } - - } - - "HeapMetricsSelector" must { - "calculate capacity of heap metrics" in { - val capacity = HeapMetricsSelector.capacity(nodeMetrics) - capacity(a1) should ===(0.75 +- 0.0001) - capacity(b1) should ===(0.75 +- 0.0001) - capacity(c1) should ===(0.0 +- 0.0001) - capacity(d1) should ===(0.001953125 +- 0.0001) - } - } - - "CpuMetricsSelector" must { - "calculate capacity of cpuCombined metrics" in { - val capacity = CpuMetricsSelector.capacity(nodeMetrics) - capacity(a1) should ===(0.9 +- 0.0001) - capacity(b1) should ===(0.5 +- 0.0001) - capacity(c1) should ===(0.0 +- 0.0001) - capacity.contains(d1) should ===(false) - } - } - - "SystemLoadAverageMetricsSelector" must { - "calculate capacity of systemLoadAverage metrics" in { - val capacity = SystemLoadAverageMetricsSelector.capacity(nodeMetrics) - capacity(a1) should ===(0.9375 +- 0.0001) - capacity(b1) should ===(0.9375 +- 0.0001) - capacity(c1) should ===(0.0 +- 0.0001) - capacity.contains(d1) should ===(false) - } - } - - "MixMetricsSelector" must { - "aggregate capacity of all metrics" in { - val capacity = MixMetricsSelector.capacity(nodeMetrics) - capacity(a1) should ===((0.75 + 0.9 + 0.9375) / 3 +- 0.0001) - capacity(b1) should ===((0.75 + 0.5 + 0.9375) / 3 +- 0.0001) - capacity(c1) should ===((0.0 + 0.0 + 0.0) / 3 +- 0.0001) - capacity(d1) should ===((0.001953125) / 1 +- 0.0001) - } - } - -} - diff --git a/akka-docs/rst/java/cluster-metrics.rst b/akka-docs/rst/java/cluster-metrics.rst index 3f8dfeaa13..5477d33e97 100644 --- a/akka-docs/rst/java/cluster-metrics.rst +++ b/akka-docs/rst/java/cluster-metrics.rst @@ -30,9 +30,6 @@ and add the following configuration stanza to your ``application.conf`` akka.extensions = [ "akka.cluster.metrics.ClusterMetricsExtension" ] -Make sure to disable legacy metrics in akka-cluster: ``akka.cluster.metrics.enabled=off``, -since it is still enabled in akka-cluster by default (for compatibility with past releases). - Cluster members with status :ref:`WeaklyUp `, if that feature is enabled, will participate in Cluster Metrics collection and dissemination. diff --git a/akka-docs/rst/scala/cluster-metrics.rst b/akka-docs/rst/scala/cluster-metrics.rst index e894b5e234..6a0f34e6ec 100644 --- a/akka-docs/rst/scala/cluster-metrics.rst +++ b/akka-docs/rst/scala/cluster-metrics.rst @@ -26,9 +26,6 @@ and add the following configuration stanza to your ``application.conf`` akka.extensions = [ "akka.cluster.metrics.ClusterMetricsExtension" ] -Make sure to disable legacy metrics in akka-cluster: ``akka.cluster.metrics.enabled=off``, -since it is still enabled in akka-cluster by default (for compatibility with past releases). - Cluster members with status :ref:`WeaklyUp `, if that feature is enabled, will participate in Cluster Metrics collection and dissemination. diff --git a/akka-samples/akka-sample-cluster-java/src/main/resources/application.conf b/akka-samples/akka-sample-cluster-java/src/main/resources/application.conf index 5077fd7ae5..f45e18038a 100644 --- a/akka-samples/akka-sample-cluster-java/src/main/resources/application.conf +++ b/akka-samples/akka-sample-cluster-java/src/main/resources/application.conf @@ -27,9 +27,6 @@ akka { } } -# Disable legacy metrics in akka-cluster. -akka.cluster.metrics.enabled=off - # Enable metrics extension in akka-cluster-metrics. akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"] diff --git a/akka-samples/akka-sample-cluster-java/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSingleMasterSpec.scala b/akka-samples/akka-sample-cluster-java/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSingleMasterSpec.scala index dd4701ae34..6e725c036f 100644 --- a/akka-samples/akka-sample-cluster-java/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSingleMasterSpec.scala +++ b/akka-samples/akka-sample-cluster-java/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSingleMasterSpec.scala @@ -35,8 +35,6 @@ object StatsSampleSingleMasterSpecConfig extends MultiNodeConfig { nodeList foreach { role => nodeConfig(role) { ConfigFactory.parseString(s""" - # Disable legacy metrics in akka-cluster. - akka.cluster.metrics.enabled=off # Enable metrics extension in akka-cluster-metrics. akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"] # Sigar native library extract location during tests. diff --git a/akka-samples/akka-sample-cluster-java/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSpec.scala b/akka-samples/akka-sample-cluster-java/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSpec.scala index 3bdbbbca9d..847ccac18e 100644 --- a/akka-samples/akka-sample-cluster-java/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSpec.scala +++ b/akka-samples/akka-sample-cluster-java/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSpec.scala @@ -31,8 +31,6 @@ object StatsSampleSpecConfig extends MultiNodeConfig { nodeList foreach { role => nodeConfig(role) { ConfigFactory.parseString(s""" - # Disable legacy metrics in akka-cluster. - akka.cluster.metrics.enabled=off # Enable metrics extension in akka-cluster-metrics. akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"] # Sigar native library extract location during tests. diff --git a/akka-samples/akka-sample-cluster-java/src/multi-jvm/scala/sample/cluster/transformation/TransformationSampleSpec.scala b/akka-samples/akka-sample-cluster-java/src/multi-jvm/scala/sample/cluster/transformation/TransformationSampleSpec.scala index 58f8aadec2..ac698c2fd1 100644 --- a/akka-samples/akka-sample-cluster-java/src/multi-jvm/scala/sample/cluster/transformation/TransformationSampleSpec.scala +++ b/akka-samples/akka-sample-cluster-java/src/multi-jvm/scala/sample/cluster/transformation/TransformationSampleSpec.scala @@ -30,8 +30,6 @@ object TransformationSampleSpecConfig extends MultiNodeConfig { nodeList foreach { role => nodeConfig(role) { ConfigFactory.parseString(s""" - # Disable legacy metrics in akka-cluster. - akka.cluster.metrics.enabled=off # Enable metrics extension in akka-cluster-metrics. akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"] # Sigar native library extract location during tests. diff --git a/akka-samples/akka-sample-cluster-scala/src/main/resources/application.conf b/akka-samples/akka-sample-cluster-scala/src/main/resources/application.conf index ce7a714a67..56b8106004 100644 --- a/akka-samples/akka-sample-cluster-scala/src/main/resources/application.conf +++ b/akka-samples/akka-sample-cluster-scala/src/main/resources/application.conf @@ -27,9 +27,6 @@ akka { } } -# Disable legacy metrics in akka-cluster. -akka.cluster.metrics.enabled=off - # Enable metrics extension in akka-cluster-metrics. akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"] diff --git a/akka-samples/akka-sample-cluster-scala/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSingleMasterSpec.scala b/akka-samples/akka-sample-cluster-scala/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSingleMasterSpec.scala index e22a1a281f..5b818528f5 100644 --- a/akka-samples/akka-sample-cluster-scala/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSingleMasterSpec.scala +++ b/akka-samples/akka-sample-cluster-scala/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSingleMasterSpec.scala @@ -34,8 +34,6 @@ object StatsSampleSingleMasterSpecConfig extends MultiNodeConfig { nodeList foreach { role => nodeConfig(role) { ConfigFactory.parseString(s""" - # Disable legacy metrics in akka-cluster. - akka.cluster.metrics.enabled=off # Enable metrics extension in akka-cluster-metrics. akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"] # Sigar native library extract location during tests. diff --git a/akka-samples/akka-sample-cluster-scala/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSpec.scala b/akka-samples/akka-sample-cluster-scala/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSpec.scala index 40d706ea52..23734d0740 100644 --- a/akka-samples/akka-sample-cluster-scala/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSpec.scala +++ b/akka-samples/akka-sample-cluster-scala/src/multi-jvm/scala/sample/cluster/stats/StatsSampleSpec.scala @@ -27,8 +27,6 @@ object StatsSampleSpecConfig extends MultiNodeConfig { nodeList foreach { role => nodeConfig(role) { ConfigFactory.parseString(s""" - # Disable legacy metrics in akka-cluster. - akka.cluster.metrics.enabled=off # Enable metrics extension in akka-cluster-metrics. akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"] # Sigar native library extract location during tests. diff --git a/akka-samples/akka-sample-cluster-scala/src/multi-jvm/scala/sample/cluster/transformation/TransformationSampleSpec.scala b/akka-samples/akka-sample-cluster-scala/src/multi-jvm/scala/sample/cluster/transformation/TransformationSampleSpec.scala index d96b5edecf..10024c2eac 100644 --- a/akka-samples/akka-sample-cluster-scala/src/multi-jvm/scala/sample/cluster/transformation/TransformationSampleSpec.scala +++ b/akka-samples/akka-sample-cluster-scala/src/multi-jvm/scala/sample/cluster/transformation/TransformationSampleSpec.scala @@ -29,8 +29,6 @@ object TransformationSampleSpecConfig extends MultiNodeConfig { nodeList foreach { role => nodeConfig(role) { ConfigFactory.parseString(s""" - # Disable legacy metrics in akka-cluster. - akka.cluster.metrics.enabled=off # Enable metrics extension in akka-cluster-metrics. akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"] # Sigar native library extract location during tests. diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 75c5bbe5a0..78e25afb1d 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -52,7 +52,6 @@ object Dependencies { val osgiCore = "org.osgi" % "org.osgi.core" % "4.3.1" // ApacheV2 val osgiCompendium= "org.osgi" % "org.osgi.compendium" % "4.3.1" // ApacheV2 - // TODO remove with metrics from akka-cluster val sigar = "org.fusesource" % "sigar" % "1.6.4" // ApacheV2 // reactive streams diff --git a/project/MiMa.scala b/project/MiMa.scala index eddaa24f4d..b54049f914 100644 --- a/project/MiMa.scala +++ b/project/MiMa.scala @@ -82,7 +82,80 @@ object MiMa extends AutoPlugin { import com.typesafe.tools.mima.core._ val bcIssuesBetween24and25 = Seq( - + // #21423 Remove deprecated metrics + ProblemFilters.exclude[DirectMissingMethodProblem]("akka.cluster.ClusterReadView.clusterMetrics"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.InternalClusterAction$MetricsTick$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.MetricsCollector"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.Metric"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.MetricsCollector$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.Metric$"), + ProblemFilters.exclude[DirectMissingMethodProblem]("akka.cluster.ClusterSettings.MetricsMovingAverageHalfLife"), + ProblemFilters.exclude[DirectMissingMethodProblem]("akka.cluster.ClusterSettings.MetricsGossipInterval"), + ProblemFilters.exclude[DirectMissingMethodProblem]("akka.cluster.ClusterSettings.MetricsCollectorClass"), + ProblemFilters.exclude[DirectMissingMethodProblem]("akka.cluster.ClusterSettings.MetricsInterval"), + ProblemFilters.exclude[DirectMissingMethodProblem]("akka.cluster.ClusterSettings.MetricsEnabled"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.JmxMetricsCollector"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.SigarMetricsCollector"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.StandardMetrics$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.MetricNumericConverter"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.ClusterEvent$ClusterMetricsChanged"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.MetricsGossipEnvelope"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.StandardMetrics"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.NodeMetrics"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.StandardMetrics$Cpu$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.StandardMetrics$Cpu"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.InternalClusterAction$PublisherCreated"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.EWMA"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.MetricsGossip$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.InternalClusterAction$PublisherCreated$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.NodeMetrics$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.MetricsGossipEnvelope$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.ClusterMetricsCollector"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.EWMA$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.StandardMetrics$HeapMemory"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.MetricsGossip"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.ClusterEvent$ClusterMetricsChanged$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.StandardMetrics$HeapMemory$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.SystemLoadAverageMetricsSelector$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.AdaptiveLoadBalancingMetricsListener"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.WeightedRoutees"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.AdaptiveLoadBalancingPool"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.CpuMetricsSelector$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.MixMetricsSelector"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.CapacityMetricsSelector"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.SystemLoadAverageMetricsSelector"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.AdaptiveLoadBalancingRoutingLogic"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.HeapMetricsSelector"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.AdaptiveLoadBalancingPool$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.CpuMetricsSelector"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.AdaptiveLoadBalancingRoutingLogic$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.HeapMetricsSelector$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.MetricsSelector$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.AdaptiveLoadBalancingGroup$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.MixMetricsSelectorBase"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.AdaptiveLoadBalancingGroup"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.MixMetricsSelector$"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.routing.MetricsSelector"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$NodeMetrics"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$NodeMetrics$EWMA$Builder"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$NodeMetrics$MetricOrBuilder"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$NodeMetrics$Number"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$NodeMetrics$NumberType"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$MetricsGossipEnvelopeOrBuilder"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$NodeMetrics$Builder"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$NodeMetricsOrBuilder"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$NodeMetrics$NumberOrBuilder"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$NodeMetrics$EWMA"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$MetricsGossip$Builder"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$MetricsGossipOrBuilder"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$MetricsGossipEnvelope"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$MetricsGossip"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$MetricsGossipEnvelope$Builder"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$NodeMetrics$EWMAOrBuilder"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$NodeMetrics$Metric"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$NodeMetrics$Metric$Builder"), + ProblemFilters.exclude[MissingClassProblem]("akka.cluster.protobuf.msg.ClusterMessages$NodeMetrics$Number$Builder"), + // #21537 coordinated shutdown ProblemFilters.exclude[DirectMissingMethodProblem]("akka.cluster.ClusterCoreDaemon.removed"), ProblemFilters.exclude[DirectMissingMethodProblem]("akka.cluster.Gossip.convergence"),