diff --git a/akka-cluster-sharding/src/main/java/akka/cluster/sharding/protobuf/msg/ClusterShardingMessages.java b/akka-cluster-sharding/src/main/java/akka/cluster/sharding/protobuf/msg/ClusterShardingMessages.java index 0d2fe4adba..42bb87e579 100644 --- a/akka-cluster-sharding/src/main/java/akka/cluster/sharding/protobuf/msg/ClusterShardingMessages.java +++ b/akka-cluster-sharding/src/main/java/akka/cluster/sharding/protobuf/msg/ClusterShardingMessages.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2020 Lightbend Inc. + * Copyright (C) 2020 Lightbend Inc. */ // Generated by the protocol buffer compiler. DO NOT EDIT! @@ -14824,6 +14824,2673 @@ public final class ClusterShardingMessages { } + public interface CurrentShardStateOrBuilder extends + // @@protoc_insertion_point(interface_extends:CurrentShardState) + akka.protobufv3.internal.MessageOrBuilder { + + /** + * required string shardId = 1; + * @return Whether the shardId field is set. + */ + boolean hasShardId(); + /** + * required string shardId = 1; + * @return The shardId. + */ + java.lang.String getShardId(); + /** + * required string shardId = 1; + * @return The bytes for shardId. + */ + akka.protobufv3.internal.ByteString + getShardIdBytes(); + + /** + * repeated string entityIds = 2; + * @return A list containing the entityIds. + */ + java.util.List + getEntityIdsList(); + /** + * repeated string entityIds = 2; + * @return The count of entityIds. + */ + int getEntityIdsCount(); + /** + * repeated string entityIds = 2; + * @param index The index of the element to return. + * @return The entityIds at the given index. + */ + java.lang.String getEntityIds(int index); + /** + * repeated string entityIds = 2; + * @param index The index of the value to return. + * @return The bytes of the entityIds at the given index. + */ + akka.protobufv3.internal.ByteString + getEntityIdsBytes(int index); + } + /** + * Protobuf type {@code CurrentShardState} + */ + public static final class CurrentShardState extends + akka.protobufv3.internal.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:CurrentShardState) + CurrentShardStateOrBuilder { + private static final long serialVersionUID = 0L; + // Use CurrentShardState.newBuilder() to construct. + private CurrentShardState(akka.protobufv3.internal.GeneratedMessageV3.Builder builder) { + super(builder); + } + private CurrentShardState() { + shardId_ = ""; + entityIds_ = akka.protobufv3.internal.LazyStringArrayList.EMPTY; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + akka.protobufv3.internal.GeneratedMessageV3.UnusedPrivateParameter unused) { + return new CurrentShardState(); + } + + @java.lang.Override + public final akka.protobufv3.internal.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private CurrentShardState( + akka.protobufv3.internal.CodedInputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + akka.protobufv3.internal.UnknownFieldSet.Builder unknownFields = + akka.protobufv3.internal.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + akka.protobufv3.internal.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000001; + shardId_ = bs; + break; + } + case 18: { + akka.protobufv3.internal.ByteString bs = input.readBytes(); + if (!((mutable_bitField0_ & 0x00000002) != 0)) { + entityIds_ = new akka.protobufv3.internal.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000002; + } + entityIds_.add(bs); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (akka.protobufv3.internal.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new akka.protobufv3.internal.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) != 0)) { + entityIds_ = entityIds_.getUnmodifiableView(); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final akka.protobufv3.internal.Descriptors.Descriptor + getDescriptor() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_CurrentShardState_descriptor; + } + + @java.lang.Override + protected akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_CurrentShardState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState.class, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState.Builder.class); + } + + private int bitField0_; + public static final int SHARDID_FIELD_NUMBER = 1; + private volatile java.lang.Object shardId_; + /** + * required string shardId = 1; + * @return Whether the shardId field is set. + */ + public boolean hasShardId() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * required string shardId = 1; + * @return The shardId. + */ + public java.lang.String getShardId() { + java.lang.Object ref = shardId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + akka.protobufv3.internal.ByteString bs = + (akka.protobufv3.internal.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + shardId_ = s; + } + return s; + } + } + /** + * required string shardId = 1; + * @return The bytes for shardId. + */ + public akka.protobufv3.internal.ByteString + getShardIdBytes() { + java.lang.Object ref = shardId_; + if (ref instanceof java.lang.String) { + akka.protobufv3.internal.ByteString b = + akka.protobufv3.internal.ByteString.copyFromUtf8( + (java.lang.String) ref); + shardId_ = b; + return b; + } else { + return (akka.protobufv3.internal.ByteString) ref; + } + } + + public static final int ENTITYIDS_FIELD_NUMBER = 2; + private akka.protobufv3.internal.LazyStringList entityIds_; + /** + * repeated string entityIds = 2; + * @return A list containing the entityIds. + */ + public akka.protobufv3.internal.ProtocolStringList + getEntityIdsList() { + return entityIds_; + } + /** + * repeated string entityIds = 2; + * @return The count of entityIds. + */ + public int getEntityIdsCount() { + return entityIds_.size(); + } + /** + * repeated string entityIds = 2; + * @param index The index of the element to return. + * @return The entityIds at the given index. + */ + public java.lang.String getEntityIds(int index) { + return entityIds_.get(index); + } + /** + * repeated string entityIds = 2; + * @param index The index of the value to return. + * @return The bytes of the entityIds at the given index. + */ + public akka.protobufv3.internal.ByteString + getEntityIdsBytes(int index) { + return entityIds_.getByteString(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + if (!hasShardId()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(akka.protobufv3.internal.CodedOutputStream output) + throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + akka.protobufv3.internal.GeneratedMessageV3.writeString(output, 1, shardId_); + } + for (int i = 0; i < entityIds_.size(); i++) { + akka.protobufv3.internal.GeneratedMessageV3.writeString(output, 2, entityIds_.getRaw(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += akka.protobufv3.internal.GeneratedMessageV3.computeStringSize(1, shardId_); + } + { + int dataSize = 0; + for (int i = 0; i < entityIds_.size(); i++) { + dataSize += computeStringSizeNoTag(entityIds_.getRaw(i)); + } + size += dataSize; + size += 1 * getEntityIdsList().size(); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState)) { + return super.equals(obj); + } + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState other = (akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState) obj; + + if (hasShardId() != other.hasShardId()) return false; + if (hasShardId()) { + if (!getShardId() + .equals(other.getShardId())) return false; + } + if (!getEntityIdsList() + .equals(other.getEntityIdsList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasShardId()) { + hash = (37 * hash) + SHARDID_FIELD_NUMBER; + hash = (53 * hash) + getShardId().hashCode(); + } + if (getEntityIdsCount() > 0) { + hash = (37 * hash) + ENTITYIDS_FIELD_NUMBER; + hash = (53 * hash) + getEntityIdsList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState parseFrom( + java.nio.ByteBuffer data) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState parseFrom( + java.nio.ByteBuffer data, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState parseFrom( + akka.protobufv3.internal.ByteString data) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState parseFrom( + akka.protobufv3.internal.ByteString data, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState parseFrom(byte[] data) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState parseFrom( + byte[] data, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState parseFrom(java.io.InputStream input) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState parseFrom( + java.io.InputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState parseDelimitedFrom( + java.io.InputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState parseFrom( + akka.protobufv3.internal.CodedInputStream input) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState parseFrom( + akka.protobufv3.internal.CodedInputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + akka.protobufv3.internal.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code CurrentShardState} + */ + public static final class Builder extends + akka.protobufv3.internal.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:CurrentShardState) + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardStateOrBuilder { + public static final akka.protobufv3.internal.Descriptors.Descriptor + getDescriptor() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_CurrentShardState_descriptor; + } + + @java.lang.Override + protected akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_CurrentShardState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState.class, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState.Builder.class); + } + + // Construct using akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + akka.protobufv3.internal.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (akka.protobufv3.internal.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + shardId_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + entityIds_ = akka.protobufv3.internal.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + @java.lang.Override + public akka.protobufv3.internal.Descriptors.Descriptor + getDescriptorForType() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_CurrentShardState_descriptor; + } + + @java.lang.Override + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState getDefaultInstanceForType() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState.getDefaultInstance(); + } + + @java.lang.Override + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState build() { + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState buildPartial() { + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState result = new akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + to_bitField0_ |= 0x00000001; + } + result.shardId_ = shardId_; + if (((bitField0_ & 0x00000002) != 0)) { + entityIds_ = entityIds_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.entityIds_ = entityIds_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + akka.protobufv3.internal.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + akka.protobufv3.internal.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + akka.protobufv3.internal.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + akka.protobufv3.internal.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + akka.protobufv3.internal.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(akka.protobufv3.internal.Message other) { + if (other instanceof akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState) { + return mergeFrom((akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState other) { + if (other == akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState.getDefaultInstance()) return this; + if (other.hasShardId()) { + bitField0_ |= 0x00000001; + shardId_ = other.shardId_; + onChanged(); + } + if (!other.entityIds_.isEmpty()) { + if (entityIds_.isEmpty()) { + entityIds_ = other.entityIds_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureEntityIdsIsMutable(); + entityIds_.addAll(other.entityIds_); + } + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + if (!hasShardId()) { + return false; + } + return true; + } + + @java.lang.Override + public Builder mergeFrom( + akka.protobufv3.internal.CodedInputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (akka.protobufv3.internal.InvalidProtocolBufferException e) { + parsedMessage = (akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object shardId_ = ""; + /** + * required string shardId = 1; + * @return Whether the shardId field is set. + */ + public boolean hasShardId() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * required string shardId = 1; + * @return The shardId. + */ + public java.lang.String getShardId() { + java.lang.Object ref = shardId_; + if (!(ref instanceof java.lang.String)) { + akka.protobufv3.internal.ByteString bs = + (akka.protobufv3.internal.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + shardId_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string shardId = 1; + * @return The bytes for shardId. + */ + public akka.protobufv3.internal.ByteString + getShardIdBytes() { + java.lang.Object ref = shardId_; + if (ref instanceof String) { + akka.protobufv3.internal.ByteString b = + akka.protobufv3.internal.ByteString.copyFromUtf8( + (java.lang.String) ref); + shardId_ = b; + return b; + } else { + return (akka.protobufv3.internal.ByteString) ref; + } + } + /** + * required string shardId = 1; + * @param value The shardId to set. + * @return This builder for chaining. + */ + public Builder setShardId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + shardId_ = value; + onChanged(); + return this; + } + /** + * required string shardId = 1; + * @return This builder for chaining. + */ + public Builder clearShardId() { + bitField0_ = (bitField0_ & ~0x00000001); + shardId_ = getDefaultInstance().getShardId(); + onChanged(); + return this; + } + /** + * required string shardId = 1; + * @param value The bytes for shardId to set. + * @return This builder for chaining. + */ + public Builder setShardIdBytes( + akka.protobufv3.internal.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + shardId_ = value; + onChanged(); + return this; + } + + private akka.protobufv3.internal.LazyStringList entityIds_ = akka.protobufv3.internal.LazyStringArrayList.EMPTY; + private void ensureEntityIdsIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + entityIds_ = new akka.protobufv3.internal.LazyStringArrayList(entityIds_); + bitField0_ |= 0x00000002; + } + } + /** + * repeated string entityIds = 2; + * @return A list containing the entityIds. + */ + public akka.protobufv3.internal.ProtocolStringList + getEntityIdsList() { + return entityIds_.getUnmodifiableView(); + } + /** + * repeated string entityIds = 2; + * @return The count of entityIds. + */ + public int getEntityIdsCount() { + return entityIds_.size(); + } + /** + * repeated string entityIds = 2; + * @param index The index of the element to return. + * @return The entityIds at the given index. + */ + public java.lang.String getEntityIds(int index) { + return entityIds_.get(index); + } + /** + * repeated string entityIds = 2; + * @param index The index of the value to return. + * @return The bytes of the entityIds at the given index. + */ + public akka.protobufv3.internal.ByteString + getEntityIdsBytes(int index) { + return entityIds_.getByteString(index); + } + /** + * repeated string entityIds = 2; + * @param index The index to set the value at. + * @param value The entityIds to set. + * @return This builder for chaining. + */ + public Builder setEntityIds( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntityIdsIsMutable(); + entityIds_.set(index, value); + onChanged(); + return this; + } + /** + * repeated string entityIds = 2; + * @param value The entityIds to add. + * @return This builder for chaining. + */ + public Builder addEntityIds( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntityIdsIsMutable(); + entityIds_.add(value); + onChanged(); + return this; + } + /** + * repeated string entityIds = 2; + * @param values The entityIds to add. + * @return This builder for chaining. + */ + public Builder addAllEntityIds( + java.lang.Iterable values) { + ensureEntityIdsIsMutable(); + akka.protobufv3.internal.AbstractMessageLite.Builder.addAll( + values, entityIds_); + onChanged(); + return this; + } + /** + * repeated string entityIds = 2; + * @return This builder for chaining. + */ + public Builder clearEntityIds() { + entityIds_ = akka.protobufv3.internal.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * repeated string entityIds = 2; + * @param value The bytes of the entityIds to add. + * @return This builder for chaining. + */ + public Builder addEntityIdsBytes( + akka.protobufv3.internal.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntityIdsIsMutable(); + entityIds_.add(value); + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final akka.protobufv3.internal.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final akka.protobufv3.internal.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:CurrentShardState) + } + + // @@protoc_insertion_point(class_scope:CurrentShardState) + private static final akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState(); + } + + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + @java.lang.Deprecated public static final akka.protobufv3.internal.Parser + PARSER = new akka.protobufv3.internal.AbstractParser() { + @java.lang.Override + public CurrentShardState parsePartialFrom( + akka.protobufv3.internal.CodedInputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return new CurrentShardState(input, extensionRegistry); + } + }; + + public static akka.protobufv3.internal.Parser parser() { + return PARSER; + } + + @java.lang.Override + public akka.protobufv3.internal.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardState getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface ShardStateOrBuilder extends + // @@protoc_insertion_point(interface_extends:ShardState) + akka.protobufv3.internal.MessageOrBuilder { + + /** + * required string shardId = 1; + * @return Whether the shardId field is set. + */ + boolean hasShardId(); + /** + * required string shardId = 1; + * @return The shardId. + */ + java.lang.String getShardId(); + /** + * required string shardId = 1; + * @return The bytes for shardId. + */ + akka.protobufv3.internal.ByteString + getShardIdBytes(); + + /** + * repeated string entityIds = 2; + * @return A list containing the entityIds. + */ + java.util.List + getEntityIdsList(); + /** + * repeated string entityIds = 2; + * @return The count of entityIds. + */ + int getEntityIdsCount(); + /** + * repeated string entityIds = 2; + * @param index The index of the element to return. + * @return The entityIds at the given index. + */ + java.lang.String getEntityIds(int index); + /** + * repeated string entityIds = 2; + * @param index The index of the value to return. + * @return The bytes of the entityIds at the given index. + */ + akka.protobufv3.internal.ByteString + getEntityIdsBytes(int index); + } + /** + * Protobuf type {@code ShardState} + */ + public static final class ShardState extends + akka.protobufv3.internal.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:ShardState) + ShardStateOrBuilder { + private static final long serialVersionUID = 0L; + // Use ShardState.newBuilder() to construct. + private ShardState(akka.protobufv3.internal.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ShardState() { + shardId_ = ""; + entityIds_ = akka.protobufv3.internal.LazyStringArrayList.EMPTY; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + akka.protobufv3.internal.GeneratedMessageV3.UnusedPrivateParameter unused) { + return new ShardState(); + } + + @java.lang.Override + public final akka.protobufv3.internal.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ShardState( + akka.protobufv3.internal.CodedInputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + akka.protobufv3.internal.UnknownFieldSet.Builder unknownFields = + akka.protobufv3.internal.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + akka.protobufv3.internal.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000001; + shardId_ = bs; + break; + } + case 18: { + akka.protobufv3.internal.ByteString bs = input.readBytes(); + if (!((mutable_bitField0_ & 0x00000002) != 0)) { + entityIds_ = new akka.protobufv3.internal.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000002; + } + entityIds_.add(bs); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (akka.protobufv3.internal.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new akka.protobufv3.internal.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) != 0)) { + entityIds_ = entityIds_.getUnmodifiableView(); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final akka.protobufv3.internal.Descriptors.Descriptor + getDescriptor() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_ShardState_descriptor; + } + + @java.lang.Override + protected akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_ShardState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.class, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.Builder.class); + } + + private int bitField0_; + public static final int SHARDID_FIELD_NUMBER = 1; + private volatile java.lang.Object shardId_; + /** + * required string shardId = 1; + * @return Whether the shardId field is set. + */ + public boolean hasShardId() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * required string shardId = 1; + * @return The shardId. + */ + public java.lang.String getShardId() { + java.lang.Object ref = shardId_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + akka.protobufv3.internal.ByteString bs = + (akka.protobufv3.internal.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + shardId_ = s; + } + return s; + } + } + /** + * required string shardId = 1; + * @return The bytes for shardId. + */ + public akka.protobufv3.internal.ByteString + getShardIdBytes() { + java.lang.Object ref = shardId_; + if (ref instanceof java.lang.String) { + akka.protobufv3.internal.ByteString b = + akka.protobufv3.internal.ByteString.copyFromUtf8( + (java.lang.String) ref); + shardId_ = b; + return b; + } else { + return (akka.protobufv3.internal.ByteString) ref; + } + } + + public static final int ENTITYIDS_FIELD_NUMBER = 2; + private akka.protobufv3.internal.LazyStringList entityIds_; + /** + * repeated string entityIds = 2; + * @return A list containing the entityIds. + */ + public akka.protobufv3.internal.ProtocolStringList + getEntityIdsList() { + return entityIds_; + } + /** + * repeated string entityIds = 2; + * @return The count of entityIds. + */ + public int getEntityIdsCount() { + return entityIds_.size(); + } + /** + * repeated string entityIds = 2; + * @param index The index of the element to return. + * @return The entityIds at the given index. + */ + public java.lang.String getEntityIds(int index) { + return entityIds_.get(index); + } + /** + * repeated string entityIds = 2; + * @param index The index of the value to return. + * @return The bytes of the entityIds at the given index. + */ + public akka.protobufv3.internal.ByteString + getEntityIdsBytes(int index) { + return entityIds_.getByteString(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + if (!hasShardId()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(akka.protobufv3.internal.CodedOutputStream output) + throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + akka.protobufv3.internal.GeneratedMessageV3.writeString(output, 1, shardId_); + } + for (int i = 0; i < entityIds_.size(); i++) { + akka.protobufv3.internal.GeneratedMessageV3.writeString(output, 2, entityIds_.getRaw(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += akka.protobufv3.internal.GeneratedMessageV3.computeStringSize(1, shardId_); + } + { + int dataSize = 0; + for (int i = 0; i < entityIds_.size(); i++) { + dataSize += computeStringSizeNoTag(entityIds_.getRaw(i)); + } + size += dataSize; + size += 1 * getEntityIdsList().size(); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState)) { + return super.equals(obj); + } + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState other = (akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState) obj; + + if (hasShardId() != other.hasShardId()) return false; + if (hasShardId()) { + if (!getShardId() + .equals(other.getShardId())) return false; + } + if (!getEntityIdsList() + .equals(other.getEntityIdsList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasShardId()) { + hash = (37 * hash) + SHARDID_FIELD_NUMBER; + hash = (53 * hash) + getShardId().hashCode(); + } + if (getEntityIdsCount() > 0) { + hash = (37 * hash) + ENTITYIDS_FIELD_NUMBER; + hash = (53 * hash) + getEntityIdsList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState parseFrom( + java.nio.ByteBuffer data) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState parseFrom( + java.nio.ByteBuffer data, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState parseFrom( + akka.protobufv3.internal.ByteString data) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState parseFrom( + akka.protobufv3.internal.ByteString data, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState parseFrom(byte[] data) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState parseFrom( + byte[] data, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState parseFrom(java.io.InputStream input) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState parseFrom( + java.io.InputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState parseDelimitedFrom( + java.io.InputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState parseFrom( + akka.protobufv3.internal.CodedInputStream input) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState parseFrom( + akka.protobufv3.internal.CodedInputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + akka.protobufv3.internal.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code ShardState} + */ + public static final class Builder extends + akka.protobufv3.internal.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:ShardState) + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardStateOrBuilder { + public static final akka.protobufv3.internal.Descriptors.Descriptor + getDescriptor() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_ShardState_descriptor; + } + + @java.lang.Override + protected akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_ShardState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.class, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.Builder.class); + } + + // Construct using akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + akka.protobufv3.internal.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (akka.protobufv3.internal.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + shardId_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + entityIds_ = akka.protobufv3.internal.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + @java.lang.Override + public akka.protobufv3.internal.Descriptors.Descriptor + getDescriptorForType() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_ShardState_descriptor; + } + + @java.lang.Override + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState getDefaultInstanceForType() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.getDefaultInstance(); + } + + @java.lang.Override + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState build() { + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState buildPartial() { + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState result = new akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + to_bitField0_ |= 0x00000001; + } + result.shardId_ = shardId_; + if (((bitField0_ & 0x00000002) != 0)) { + entityIds_ = entityIds_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.entityIds_ = entityIds_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + akka.protobufv3.internal.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + akka.protobufv3.internal.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + akka.protobufv3.internal.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + akka.protobufv3.internal.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + akka.protobufv3.internal.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(akka.protobufv3.internal.Message other) { + if (other instanceof akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState) { + return mergeFrom((akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState other) { + if (other == akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.getDefaultInstance()) return this; + if (other.hasShardId()) { + bitField0_ |= 0x00000001; + shardId_ = other.shardId_; + onChanged(); + } + if (!other.entityIds_.isEmpty()) { + if (entityIds_.isEmpty()) { + entityIds_ = other.entityIds_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureEntityIdsIsMutable(); + entityIds_.addAll(other.entityIds_); + } + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + if (!hasShardId()) { + return false; + } + return true; + } + + @java.lang.Override + public Builder mergeFrom( + akka.protobufv3.internal.CodedInputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (akka.protobufv3.internal.InvalidProtocolBufferException e) { + parsedMessage = (akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.lang.Object shardId_ = ""; + /** + * required string shardId = 1; + * @return Whether the shardId field is set. + */ + public boolean hasShardId() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * required string shardId = 1; + * @return The shardId. + */ + public java.lang.String getShardId() { + java.lang.Object ref = shardId_; + if (!(ref instanceof java.lang.String)) { + akka.protobufv3.internal.ByteString bs = + (akka.protobufv3.internal.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + shardId_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string shardId = 1; + * @return The bytes for shardId. + */ + public akka.protobufv3.internal.ByteString + getShardIdBytes() { + java.lang.Object ref = shardId_; + if (ref instanceof String) { + akka.protobufv3.internal.ByteString b = + akka.protobufv3.internal.ByteString.copyFromUtf8( + (java.lang.String) ref); + shardId_ = b; + return b; + } else { + return (akka.protobufv3.internal.ByteString) ref; + } + } + /** + * required string shardId = 1; + * @param value The shardId to set. + * @return This builder for chaining. + */ + public Builder setShardId( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + shardId_ = value; + onChanged(); + return this; + } + /** + * required string shardId = 1; + * @return This builder for chaining. + */ + public Builder clearShardId() { + bitField0_ = (bitField0_ & ~0x00000001); + shardId_ = getDefaultInstance().getShardId(); + onChanged(); + return this; + } + /** + * required string shardId = 1; + * @param value The bytes for shardId to set. + * @return This builder for chaining. + */ + public Builder setShardIdBytes( + akka.protobufv3.internal.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + shardId_ = value; + onChanged(); + return this; + } + + private akka.protobufv3.internal.LazyStringList entityIds_ = akka.protobufv3.internal.LazyStringArrayList.EMPTY; + private void ensureEntityIdsIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + entityIds_ = new akka.protobufv3.internal.LazyStringArrayList(entityIds_); + bitField0_ |= 0x00000002; + } + } + /** + * repeated string entityIds = 2; + * @return A list containing the entityIds. + */ + public akka.protobufv3.internal.ProtocolStringList + getEntityIdsList() { + return entityIds_.getUnmodifiableView(); + } + /** + * repeated string entityIds = 2; + * @return The count of entityIds. + */ + public int getEntityIdsCount() { + return entityIds_.size(); + } + /** + * repeated string entityIds = 2; + * @param index The index of the element to return. + * @return The entityIds at the given index. + */ + public java.lang.String getEntityIds(int index) { + return entityIds_.get(index); + } + /** + * repeated string entityIds = 2; + * @param index The index of the value to return. + * @return The bytes of the entityIds at the given index. + */ + public akka.protobufv3.internal.ByteString + getEntityIdsBytes(int index) { + return entityIds_.getByteString(index); + } + /** + * repeated string entityIds = 2; + * @param index The index to set the value at. + * @param value The entityIds to set. + * @return This builder for chaining. + */ + public Builder setEntityIds( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntityIdsIsMutable(); + entityIds_.set(index, value); + onChanged(); + return this; + } + /** + * repeated string entityIds = 2; + * @param value The entityIds to add. + * @return This builder for chaining. + */ + public Builder addEntityIds( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntityIdsIsMutable(); + entityIds_.add(value); + onChanged(); + return this; + } + /** + * repeated string entityIds = 2; + * @param values The entityIds to add. + * @return This builder for chaining. + */ + public Builder addAllEntityIds( + java.lang.Iterable values) { + ensureEntityIdsIsMutable(); + akka.protobufv3.internal.AbstractMessageLite.Builder.addAll( + values, entityIds_); + onChanged(); + return this; + } + /** + * repeated string entityIds = 2; + * @return This builder for chaining. + */ + public Builder clearEntityIds() { + entityIds_ = akka.protobufv3.internal.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * repeated string entityIds = 2; + * @param value The bytes of the entityIds to add. + * @return This builder for chaining. + */ + public Builder addEntityIdsBytes( + akka.protobufv3.internal.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureEntityIdsIsMutable(); + entityIds_.add(value); + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final akka.protobufv3.internal.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final akka.protobufv3.internal.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:ShardState) + } + + // @@protoc_insertion_point(class_scope:ShardState) + private static final akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState(); + } + + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + @java.lang.Deprecated public static final akka.protobufv3.internal.Parser + PARSER = new akka.protobufv3.internal.AbstractParser() { + @java.lang.Override + public ShardState parsePartialFrom( + akka.protobufv3.internal.CodedInputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return new ShardState(input, extensionRegistry); + } + }; + + public static akka.protobufv3.internal.Parser parser() { + return PARSER; + } + + @java.lang.Override + public akka.protobufv3.internal.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface CurrentShardRegionStateOrBuilder extends + // @@protoc_insertion_point(interface_extends:CurrentShardRegionState) + akka.protobufv3.internal.MessageOrBuilder { + + /** + * repeated .ShardState shards = 1; + */ + java.util.List + getShardsList(); + /** + * repeated .ShardState shards = 1; + */ + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState getShards(int index); + /** + * repeated .ShardState shards = 1; + */ + int getShardsCount(); + /** + * repeated .ShardState shards = 1; + */ + java.util.List + getShardsOrBuilderList(); + /** + * repeated .ShardState shards = 1; + */ + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardStateOrBuilder getShardsOrBuilder( + int index); + + /** + * repeated string failed = 2; + * @return A list containing the failed. + */ + java.util.List + getFailedList(); + /** + * repeated string failed = 2; + * @return The count of failed. + */ + int getFailedCount(); + /** + * repeated string failed = 2; + * @param index The index of the element to return. + * @return The failed at the given index. + */ + java.lang.String getFailed(int index); + /** + * repeated string failed = 2; + * @param index The index of the value to return. + * @return The bytes of the failed at the given index. + */ + akka.protobufv3.internal.ByteString + getFailedBytes(int index); + } + /** + * Protobuf type {@code CurrentShardRegionState} + */ + public static final class CurrentShardRegionState extends + akka.protobufv3.internal.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:CurrentShardRegionState) + CurrentShardRegionStateOrBuilder { + private static final long serialVersionUID = 0L; + // Use CurrentShardRegionState.newBuilder() to construct. + private CurrentShardRegionState(akka.protobufv3.internal.GeneratedMessageV3.Builder builder) { + super(builder); + } + private CurrentShardRegionState() { + shards_ = java.util.Collections.emptyList(); + failed_ = akka.protobufv3.internal.LazyStringArrayList.EMPTY; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + akka.protobufv3.internal.GeneratedMessageV3.UnusedPrivateParameter unused) { + return new CurrentShardRegionState(); + } + + @java.lang.Override + public final akka.protobufv3.internal.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private CurrentShardRegionState( + akka.protobufv3.internal.CodedInputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + akka.protobufv3.internal.UnknownFieldSet.Builder unknownFields = + akka.protobufv3.internal.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + shards_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + shards_.add( + input.readMessage(akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.PARSER, extensionRegistry)); + break; + } + case 18: { + akka.protobufv3.internal.ByteString bs = input.readBytes(); + if (!((mutable_bitField0_ & 0x00000002) != 0)) { + failed_ = new akka.protobufv3.internal.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000002; + } + failed_.add(bs); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (akka.protobufv3.internal.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new akka.protobufv3.internal.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + shards_ = java.util.Collections.unmodifiableList(shards_); + } + if (((mutable_bitField0_ & 0x00000002) != 0)) { + failed_ = failed_.getUnmodifiableView(); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final akka.protobufv3.internal.Descriptors.Descriptor + getDescriptor() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_CurrentShardRegionState_descriptor; + } + + @java.lang.Override + protected akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_CurrentShardRegionState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState.class, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState.Builder.class); + } + + public static final int SHARDS_FIELD_NUMBER = 1; + private java.util.List shards_; + /** + * repeated .ShardState shards = 1; + */ + public java.util.List getShardsList() { + return shards_; + } + /** + * repeated .ShardState shards = 1; + */ + public java.util.List + getShardsOrBuilderList() { + return shards_; + } + /** + * repeated .ShardState shards = 1; + */ + public int getShardsCount() { + return shards_.size(); + } + /** + * repeated .ShardState shards = 1; + */ + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState getShards(int index) { + return shards_.get(index); + } + /** + * repeated .ShardState shards = 1; + */ + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardStateOrBuilder getShardsOrBuilder( + int index) { + return shards_.get(index); + } + + public static final int FAILED_FIELD_NUMBER = 2; + private akka.protobufv3.internal.LazyStringList failed_; + /** + * repeated string failed = 2; + * @return A list containing the failed. + */ + public akka.protobufv3.internal.ProtocolStringList + getFailedList() { + return failed_; + } + /** + * repeated string failed = 2; + * @return The count of failed. + */ + public int getFailedCount() { + return failed_.size(); + } + /** + * repeated string failed = 2; + * @param index The index of the element to return. + * @return The failed at the given index. + */ + public java.lang.String getFailed(int index) { + return failed_.get(index); + } + /** + * repeated string failed = 2; + * @param index The index of the value to return. + * @return The bytes of the failed at the given index. + */ + public akka.protobufv3.internal.ByteString + getFailedBytes(int index) { + return failed_.getByteString(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + for (int i = 0; i < getShardsCount(); i++) { + if (!getShards(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(akka.protobufv3.internal.CodedOutputStream output) + throws java.io.IOException { + for (int i = 0; i < shards_.size(); i++) { + output.writeMessage(1, shards_.get(i)); + } + for (int i = 0; i < failed_.size(); i++) { + akka.protobufv3.internal.GeneratedMessageV3.writeString(output, 2, failed_.getRaw(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < shards_.size(); i++) { + size += akka.protobufv3.internal.CodedOutputStream + .computeMessageSize(1, shards_.get(i)); + } + { + int dataSize = 0; + for (int i = 0; i < failed_.size(); i++) { + dataSize += computeStringSizeNoTag(failed_.getRaw(i)); + } + size += dataSize; + size += 1 * getFailedList().size(); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState)) { + return super.equals(obj); + } + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState other = (akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState) obj; + + if (!getShardsList() + .equals(other.getShardsList())) return false; + if (!getFailedList() + .equals(other.getFailedList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getShardsCount() > 0) { + hash = (37 * hash) + SHARDS_FIELD_NUMBER; + hash = (53 * hash) + getShardsList().hashCode(); + } + if (getFailedCount() > 0) { + hash = (37 * hash) + FAILED_FIELD_NUMBER; + hash = (53 * hash) + getFailedList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState parseFrom( + java.nio.ByteBuffer data) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState parseFrom( + java.nio.ByteBuffer data, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState parseFrom( + akka.protobufv3.internal.ByteString data) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState parseFrom( + akka.protobufv3.internal.ByteString data, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState parseFrom(byte[] data) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState parseFrom( + byte[] data, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState parseFrom(java.io.InputStream input) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState parseFrom( + java.io.InputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState parseDelimitedFrom( + java.io.InputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState parseFrom( + akka.protobufv3.internal.CodedInputStream input) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState parseFrom( + akka.protobufv3.internal.CodedInputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return akka.protobufv3.internal.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + akka.protobufv3.internal.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code CurrentShardRegionState} + */ + public static final class Builder extends + akka.protobufv3.internal.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:CurrentShardRegionState) + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionStateOrBuilder { + public static final akka.protobufv3.internal.Descriptors.Descriptor + getDescriptor() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_CurrentShardRegionState_descriptor; + } + + @java.lang.Override + protected akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_CurrentShardRegionState_fieldAccessorTable + .ensureFieldAccessorsInitialized( + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState.class, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState.Builder.class); + } + + // Construct using akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + akka.protobufv3.internal.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (akka.protobufv3.internal.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getShardsFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (shardsBuilder_ == null) { + shards_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + shardsBuilder_.clear(); + } + failed_ = akka.protobufv3.internal.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + @java.lang.Override + public akka.protobufv3.internal.Descriptors.Descriptor + getDescriptorForType() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.internal_static_CurrentShardRegionState_descriptor; + } + + @java.lang.Override + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState getDefaultInstanceForType() { + return akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState.getDefaultInstance(); + } + + @java.lang.Override + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState build() { + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState buildPartial() { + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState result = new akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState(this); + int from_bitField0_ = bitField0_; + if (shardsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + shards_ = java.util.Collections.unmodifiableList(shards_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.shards_ = shards_; + } else { + result.shards_ = shardsBuilder_.build(); + } + if (((bitField0_ & 0x00000002) != 0)) { + failed_ = failed_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.failed_ = failed_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + akka.protobufv3.internal.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + akka.protobufv3.internal.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + akka.protobufv3.internal.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + akka.protobufv3.internal.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + akka.protobufv3.internal.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(akka.protobufv3.internal.Message other) { + if (other instanceof akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState) { + return mergeFrom((akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState other) { + if (other == akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState.getDefaultInstance()) return this; + if (shardsBuilder_ == null) { + if (!other.shards_.isEmpty()) { + if (shards_.isEmpty()) { + shards_ = other.shards_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureShardsIsMutable(); + shards_.addAll(other.shards_); + } + onChanged(); + } + } else { + if (!other.shards_.isEmpty()) { + if (shardsBuilder_.isEmpty()) { + shardsBuilder_.dispose(); + shardsBuilder_ = null; + shards_ = other.shards_; + bitField0_ = (bitField0_ & ~0x00000001); + shardsBuilder_ = + akka.protobufv3.internal.GeneratedMessageV3.alwaysUseFieldBuilders ? + getShardsFieldBuilder() : null; + } else { + shardsBuilder_.addAllMessages(other.shards_); + } + } + } + if (!other.failed_.isEmpty()) { + if (failed_.isEmpty()) { + failed_ = other.failed_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureFailedIsMutable(); + failed_.addAll(other.failed_); + } + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + for (int i = 0; i < getShardsCount(); i++) { + if (!getShards(i).isInitialized()) { + return false; + } + } + return true; + } + + @java.lang.Override + public Builder mergeFrom( + akka.protobufv3.internal.CodedInputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (akka.protobufv3.internal.InvalidProtocolBufferException e) { + parsedMessage = (akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.util.List shards_ = + java.util.Collections.emptyList(); + private void ensureShardsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + shards_ = new java.util.ArrayList(shards_); + bitField0_ |= 0x00000001; + } + } + + private akka.protobufv3.internal.RepeatedFieldBuilderV3< + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.Builder, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardStateOrBuilder> shardsBuilder_; + + /** + * repeated .ShardState shards = 1; + */ + public java.util.List getShardsList() { + if (shardsBuilder_ == null) { + return java.util.Collections.unmodifiableList(shards_); + } else { + return shardsBuilder_.getMessageList(); + } + } + /** + * repeated .ShardState shards = 1; + */ + public int getShardsCount() { + if (shardsBuilder_ == null) { + return shards_.size(); + } else { + return shardsBuilder_.getCount(); + } + } + /** + * repeated .ShardState shards = 1; + */ + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState getShards(int index) { + if (shardsBuilder_ == null) { + return shards_.get(index); + } else { + return shardsBuilder_.getMessage(index); + } + } + /** + * repeated .ShardState shards = 1; + */ + public Builder setShards( + int index, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState value) { + if (shardsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureShardsIsMutable(); + shards_.set(index, value); + onChanged(); + } else { + shardsBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .ShardState shards = 1; + */ + public Builder setShards( + int index, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.Builder builderForValue) { + if (shardsBuilder_ == null) { + ensureShardsIsMutable(); + shards_.set(index, builderForValue.build()); + onChanged(); + } else { + shardsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .ShardState shards = 1; + */ + public Builder addShards(akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState value) { + if (shardsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureShardsIsMutable(); + shards_.add(value); + onChanged(); + } else { + shardsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .ShardState shards = 1; + */ + public Builder addShards( + int index, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState value) { + if (shardsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureShardsIsMutable(); + shards_.add(index, value); + onChanged(); + } else { + shardsBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .ShardState shards = 1; + */ + public Builder addShards( + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.Builder builderForValue) { + if (shardsBuilder_ == null) { + ensureShardsIsMutable(); + shards_.add(builderForValue.build()); + onChanged(); + } else { + shardsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .ShardState shards = 1; + */ + public Builder addShards( + int index, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.Builder builderForValue) { + if (shardsBuilder_ == null) { + ensureShardsIsMutable(); + shards_.add(index, builderForValue.build()); + onChanged(); + } else { + shardsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .ShardState shards = 1; + */ + public Builder addAllShards( + java.lang.Iterable values) { + if (shardsBuilder_ == null) { + ensureShardsIsMutable(); + akka.protobufv3.internal.AbstractMessageLite.Builder.addAll( + values, shards_); + onChanged(); + } else { + shardsBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .ShardState shards = 1; + */ + public Builder clearShards() { + if (shardsBuilder_ == null) { + shards_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + shardsBuilder_.clear(); + } + return this; + } + /** + * repeated .ShardState shards = 1; + */ + public Builder removeShards(int index) { + if (shardsBuilder_ == null) { + ensureShardsIsMutable(); + shards_.remove(index); + onChanged(); + } else { + shardsBuilder_.remove(index); + } + return this; + } + /** + * repeated .ShardState shards = 1; + */ + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.Builder getShardsBuilder( + int index) { + return getShardsFieldBuilder().getBuilder(index); + } + /** + * repeated .ShardState shards = 1; + */ + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardStateOrBuilder getShardsOrBuilder( + int index) { + if (shardsBuilder_ == null) { + return shards_.get(index); } else { + return shardsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .ShardState shards = 1; + */ + public java.util.List + getShardsOrBuilderList() { + if (shardsBuilder_ != null) { + return shardsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(shards_); + } + } + /** + * repeated .ShardState shards = 1; + */ + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.Builder addShardsBuilder() { + return getShardsFieldBuilder().addBuilder( + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.getDefaultInstance()); + } + /** + * repeated .ShardState shards = 1; + */ + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.Builder addShardsBuilder( + int index) { + return getShardsFieldBuilder().addBuilder( + index, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.getDefaultInstance()); + } + /** + * repeated .ShardState shards = 1; + */ + public java.util.List + getShardsBuilderList() { + return getShardsFieldBuilder().getBuilderList(); + } + private akka.protobufv3.internal.RepeatedFieldBuilderV3< + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.Builder, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardStateOrBuilder> + getShardsFieldBuilder() { + if (shardsBuilder_ == null) { + shardsBuilder_ = new akka.protobufv3.internal.RepeatedFieldBuilderV3< + akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardState.Builder, akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.ShardStateOrBuilder>( + shards_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + shards_ = null; + } + return shardsBuilder_; + } + + private akka.protobufv3.internal.LazyStringList failed_ = akka.protobufv3.internal.LazyStringArrayList.EMPTY; + private void ensureFailedIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + failed_ = new akka.protobufv3.internal.LazyStringArrayList(failed_); + bitField0_ |= 0x00000002; + } + } + /** + * repeated string failed = 2; + * @return A list containing the failed. + */ + public akka.protobufv3.internal.ProtocolStringList + getFailedList() { + return failed_.getUnmodifiableView(); + } + /** + * repeated string failed = 2; + * @return The count of failed. + */ + public int getFailedCount() { + return failed_.size(); + } + /** + * repeated string failed = 2; + * @param index The index of the element to return. + * @return The failed at the given index. + */ + public java.lang.String getFailed(int index) { + return failed_.get(index); + } + /** + * repeated string failed = 2; + * @param index The index of the value to return. + * @return The bytes of the failed at the given index. + */ + public akka.protobufv3.internal.ByteString + getFailedBytes(int index) { + return failed_.getByteString(index); + } + /** + * repeated string failed = 2; + * @param index The index to set the value at. + * @param value The failed to set. + * @return This builder for chaining. + */ + public Builder setFailed( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureFailedIsMutable(); + failed_.set(index, value); + onChanged(); + return this; + } + /** + * repeated string failed = 2; + * @param value The failed to add. + * @return This builder for chaining. + */ + public Builder addFailed( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureFailedIsMutable(); + failed_.add(value); + onChanged(); + return this; + } + /** + * repeated string failed = 2; + * @param values The failed to add. + * @return This builder for chaining. + */ + public Builder addAllFailed( + java.lang.Iterable values) { + ensureFailedIsMutable(); + akka.protobufv3.internal.AbstractMessageLite.Builder.addAll( + values, failed_); + onChanged(); + return this; + } + /** + * repeated string failed = 2; + * @return This builder for chaining. + */ + public Builder clearFailed() { + failed_ = akka.protobufv3.internal.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * repeated string failed = 2; + * @param value The bytes of the failed to add. + * @return This builder for chaining. + */ + public Builder addFailedBytes( + akka.protobufv3.internal.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureFailedIsMutable(); + failed_.add(value); + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final akka.protobufv3.internal.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final akka.protobufv3.internal.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:CurrentShardRegionState) + } + + // @@protoc_insertion_point(class_scope:CurrentShardRegionState) + private static final akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState(); + } + + public static akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + @java.lang.Deprecated public static final akka.protobufv3.internal.Parser + PARSER = new akka.protobufv3.internal.AbstractParser() { + @java.lang.Override + public CurrentShardRegionState parsePartialFrom( + akka.protobufv3.internal.CodedInputStream input, + akka.protobufv3.internal.ExtensionRegistryLite extensionRegistry) + throws akka.protobufv3.internal.InvalidProtocolBufferException { + return new CurrentShardRegionState(input, extensionRegistry); + } + }; + + public static akka.protobufv3.internal.Parser parser() { + return PARSER; + } + + @java.lang.Override + public akka.protobufv3.internal.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public akka.cluster.sharding.protobuf.msg.ClusterShardingMessages.CurrentShardRegionState getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + private static final akka.protobufv3.internal.Descriptors.Descriptor internal_static_CoordinatorState_descriptor; private static final @@ -14919,6 +17586,21 @@ public final class ClusterShardingMessages { private static final akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable internal_static_StartEntityAck_fieldAccessorTable; + private static final akka.protobufv3.internal.Descriptors.Descriptor + internal_static_CurrentShardState_descriptor; + private static final + akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable + internal_static_CurrentShardState_fieldAccessorTable; + private static final akka.protobufv3.internal.Descriptors.Descriptor + internal_static_ShardState_descriptor; + private static final + akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable + internal_static_ShardState_fieldAccessorTable; + private static final akka.protobufv3.internal.Descriptors.Descriptor + internal_static_CurrentShardRegionState_descriptor; + private static final + akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable + internal_static_CurrentShardRegionState_fieldAccessorTable; public static akka.protobufv3.internal.Descriptors.FileDescriptor getDescriptor() { @@ -14954,8 +17636,12 @@ public final class ClusterShardingMessages { "(\t\022\016\n\006system\030\002 \002(\t\022\020\n\010hostname\030\003 \002(\t\022\014\n\004" + "port\030\004 \002(\r\"\037\n\013StartEntity\022\020\n\010entityId\030\001 " + "\002(\t\"3\n\016StartEntityAck\022\020\n\010entityId\030\001 \002(\t\022" + - "\017\n\007shardId\030\002 \002(\tB&\n\"akka.cluster.shardin" + - "g.protobuf.msgH\001" + "\017\n\007shardId\030\002 \002(\t\"7\n\021CurrentShardState\022\017\n" + + "\007shardId\030\001 \002(\t\022\021\n\tentityIds\030\002 \003(\t\"0\n\nSha" + + "rdState\022\017\n\007shardId\030\001 \002(\t\022\021\n\tentityIds\030\002 " + + "\003(\t\"F\n\027CurrentShardRegionState\022\033\n\006shards" + + "\030\001 \003(\0132\013.ShardState\022\016\n\006failed\030\002 \003(\tB&\n\"a" + + "kka.cluster.sharding.protobuf.msgH\001" }; descriptor = akka.protobufv3.internal.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -15075,6 +17761,24 @@ public final class ClusterShardingMessages { akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable( internal_static_StartEntityAck_descriptor, new java.lang.String[] { "EntityId", "ShardId", }); + internal_static_CurrentShardState_descriptor = + getDescriptor().getMessageTypes().get(18); + internal_static_CurrentShardState_fieldAccessorTable = new + akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable( + internal_static_CurrentShardState_descriptor, + new java.lang.String[] { "ShardId", "EntityIds", }); + internal_static_ShardState_descriptor = + getDescriptor().getMessageTypes().get(19); + internal_static_ShardState_fieldAccessorTable = new + akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable( + internal_static_ShardState_descriptor, + new java.lang.String[] { "ShardId", "EntityIds", }); + internal_static_CurrentShardRegionState_descriptor = + getDescriptor().getMessageTypes().get(20); + internal_static_CurrentShardRegionState_fieldAccessorTable = new + akka.protobufv3.internal.GeneratedMessageV3.FieldAccessorTable( + internal_static_CurrentShardRegionState_descriptor, + new java.lang.String[] { "Shards", "Failed", }); } // @@protoc_insertion_point(outer_class_scope) diff --git a/akka-cluster-sharding/src/main/protobuf/ClusterShardingMessages.proto b/akka-cluster-sharding/src/main/protobuf/ClusterShardingMessages.proto index 57a135760f..0ca8d1a251 100644 --- a/akka-cluster-sharding/src/main/protobuf/ClusterShardingMessages.proto +++ b/akka-cluster-sharding/src/main/protobuf/ClusterShardingMessages.proto @@ -102,3 +102,18 @@ message StartEntityAck { required string entityId = 1; required string shardId = 2; } + +message CurrentShardState { + required string shardId = 1; + repeated string entityIds = 2; +} + +message ShardState { + required string shardId = 1; + repeated string entityIds = 2; +} + +message CurrentShardRegionState { + repeated ShardState shards = 1; + repeated string failed = 2; +} diff --git a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardRegion.scala b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardRegion.scala index f9cf0f9b6c..00681c80db 100644 --- a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardRegion.scala +++ b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/ShardRegion.scala @@ -6,30 +6,25 @@ package akka.cluster.sharding import java.net.URLEncoder -import scala.annotation.tailrec -import scala.collection.immutable -import scala.concurrent.duration._ -import scala.concurrent.Future -import scala.reflect.ClassTag -import scala.concurrent.Promise -import scala.runtime.AbstractFunction1 -import scala.util.Success -import scala.util.Failure - import akka.Done -import akka.annotation.InternalApi import akka.actor._ -import akka.cluster.Cluster +import akka.annotation.InternalApi import akka.cluster.ClusterEvent._ -import akka.cluster.Member -import akka.cluster.MemberStatus -import akka.cluster.ClusterSettings import akka.cluster.ClusterSettings.DataCenter import akka.cluster.sharding.Shard.ShardStats +import akka.cluster.{ Cluster, ClusterSettings, Member, MemberStatus } import akka.event.Logging import akka.pattern.{ ask, pipe } import akka.util.{ MessageBufferMap, PrettyDuration, Timeout } +import scala.annotation.tailrec +import scala.collection.immutable +import scala.concurrent.duration._ +import scala.concurrent.{ Future, Promise } +import scala.reflect.ClassTag +import scala.runtime.AbstractFunction1 +import scala.util.{ Failure, Success } + /** * @see [[ClusterSharding$ ClusterSharding extension]] */ @@ -355,7 +350,7 @@ object ShardRegion { * The state contains information about what shards are running in this region * and what entities are running on each of those shards. */ - @SerialVersionUID(1L) case object GetShardRegionState extends ShardRegionQuery + @SerialVersionUID(1L) case object GetShardRegionState extends ShardRegionQuery with ClusterShardingSerializable /** * Java API: @@ -367,7 +362,9 @@ object ShardRegion { * * If gathering the shard information times out the set of shards will be empty. */ - @SerialVersionUID(1L) final case class CurrentShardRegionState(shards: Set[ShardState]) { + @SerialVersionUID(1L) final class CurrentShardRegionState(val shards: Set[ShardState], val failed: Set[ShardId]) + extends ClusterShardingSerializable + with Product { /** * Java API: @@ -378,6 +375,38 @@ object ShardRegion { import akka.util.ccompat.JavaConverters._ shards.asJava } + + /** Java API */ + def getFailed(): java.util.Set[ShardId] = { + import akka.util.ccompat.JavaConverters._ + failed.asJava + } + + // For binary compatibility + def this(shards: Set[ShardState]) = this(shards, Set.empty[ShardId]) + private[sharding] def copy(shards: Set[ShardState] = shards): CurrentShardRegionState = + new CurrentShardRegionState(shards, this.failed) + + // For binary compatibility: class conversion from case class + override def equals(other: Any): Boolean = other match { + case o: CurrentShardRegionState => o.shards == shards && o.failed == failed + case _ => false + } + override def hashCode: Int = shards.## + failed.## + override def toString: String = s"CurrentShardRegionState[shards=$shards, failed=$failed]" + override def productArity: Int = 2 + override def productElement(n: Int) = + if (n == 0) shards else if (n == 1) failed else throw new NoSuchElementException + override def canEqual(o: Any): Boolean = o.isInstanceOf[CurrentShardRegionState] + } + // For binary compatibility + object CurrentShardRegionState extends AbstractFunction1[Set[ShardState], CurrentShardRegionState] { + def apply(shards: Set[ShardState]): CurrentShardRegionState = + apply(shards, Set.empty[ShardId]) + def apply(shards: Set[ShardState], failed: Set[ShardId]): CurrentShardRegionState = + new CurrentShardRegionState(shards, failed) + def unapply(state: CurrentShardRegionState): Option[Set[ShardState]] = + Option(state.shards) } @SerialVersionUID(1L) final case class ShardState(shardId: ShardId, entityIds: Set[EntityId]) { @@ -494,9 +523,9 @@ private[akka] class ShardRegion( extends Actor with Timers { - import ShardingQueries.ShardsQueryResult import ShardCoordinator.Internal._ import ShardRegion._ + import ShardingQueries.ShardsQueryResult import settings._ import settings.tuningParameters._ @@ -816,11 +845,9 @@ private[akka] class ShardRegion( def replyToRegionStateQuery(ref: ActorRef): Unit = { queryShards[Shard.CurrentShardState](shards, Shard.GetCurrentShardState) .map { qr => - // Productionize CurrentShardRegionState #27406 - val state = - qr.responses.map(state => ShardRegion.ShardState(state.shardId, state.entityIds)) ++ - qr.failed.map(sid => ShardRegion.ShardState(sid, Set.empty)) - CurrentShardRegionState(state.toSet) + CurrentShardRegionState( + qr.responses.map(state => ShardRegion.ShardState(state.shardId, state.entityIds)).toSet, + qr.failed) } .pipeTo(ref) } diff --git a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/protobuf/ClusterShardingMessageSerializer.scala b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/protobuf/ClusterShardingMessageSerializer.scala index 2ab2537fd7..e85d6116a0 100644 --- a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/protobuf/ClusterShardingMessageSerializer.scala +++ b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/protobuf/ClusterShardingMessageSerializer.scala @@ -38,6 +38,7 @@ private[akka] class ClusterShardingMessageSerializer(val system: ExtendedActorSy extends SerializerWithStringManifest with BaseSerializer { import ShardCoordinator.Internal._ + import Shard.{ CurrentShardState, GetCurrentShardState } import Shard.{ GetShardStats, ShardStats } import Shard.{ State => EntityState, EntityStarted, EntityStopped } @@ -80,6 +81,12 @@ private[akka] class ClusterShardingMessageSerializer(val system: ExtendedActorSy private val GetCurrentRegionsManifest = "DG" private val CurrentRegionsManifest = "DH" + private val GetCurrentShardStateManifest = "FA" + private val CurrentShardStateManifest = "FB" + private val GetShardRegionStateManifest = "FC" + private val ShardStateManifest = "FD" + private val CurrentShardRegionStateManifest = "FE" + private val fromBinaryMap = collection.immutable.HashMap[String, Array[Byte] => AnyRef]( EntityStateManifest -> entityStateFromBinary, EntityStartedManifest -> entityStartedFromBinary, @@ -160,7 +167,22 @@ private[akka] class ClusterShardingMessageSerializer(val system: ExtendedActorSy currentRegionsFromBinary(bytes) }, StartEntityManifest -> { startEntityFromBinary(_) }, - StartEntityAckManifest -> { startEntityAckFromBinary(_) }) + StartEntityAckManifest -> { startEntityAckFromBinary(_) }, + GetCurrentShardStateManifest -> { _ => + GetCurrentShardState + }, + CurrentShardStateManifest -> { bytes => + currentShardStateFromBinary(bytes) + }, + GetShardRegionStateManifest -> { _ => + GetShardRegionState + }, + ShardStateManifest -> { bytes => + shardStateFromBinary(bytes) + }, + CurrentShardRegionStateManifest -> { bytes => + currentShardRegionStateFromBinary(bytes) + }) override def manifest(obj: AnyRef): String = obj match { case _: EntityState => EntityStateManifest @@ -199,6 +221,13 @@ private[akka] class ClusterShardingMessageSerializer(val system: ExtendedActorSy case _: ClusterShardingStats => ClusterShardingStatsManifest case GetCurrentRegions => GetCurrentRegionsManifest case _: CurrentRegions => CurrentRegionsManifest + + case GetCurrentShardState => GetCurrentShardStateManifest + case _: CurrentShardState => CurrentShardStateManifest + case GetShardRegionState => GetShardRegionStateManifest + case _: ShardState => ShardStateManifest + case _: CurrentShardRegionState => CurrentShardRegionStateManifest + case _ => throw new IllegalArgumentException(s"Can't serialize object of type ${obj.getClass} in [${getClass.getName}]") } @@ -242,6 +271,12 @@ private[akka] class ClusterShardingMessageSerializer(val system: ExtendedActorSy case GetCurrentRegions => Array.emptyByteArray case m: CurrentRegions => currentRegionsToProto(m).toByteArray + case GetCurrentShardState => Array.emptyByteArray + case m: CurrentShardState => currentShardStateToProto(m).toByteArray + case GetShardRegionState => Array.emptyByteArray + case m: ShardState => shardStateToProto(m).toByteArray + case m: CurrentShardRegionState => currentShardRegionStateToProto(m).toByteArray + case _ => throw new IllegalArgumentException(s"Can't serialize object of type ${obj.getClass} in [${getClass.getName}]") } @@ -451,6 +486,41 @@ private[akka] class ClusterShardingMessageSerializer(val system: ExtendedActorSy StartEntityAck(sea.getEntityId, sea.getShardId) } + private def shardStateToProto(evt: ShardState): sm.ShardState = { + sm.ShardState.newBuilder().setShardId(evt.shardId).addAllEntityIds(evt.entityIds.asJava).build() + } + + private def currentShardStateToProto(evt: CurrentShardState): sm.CurrentShardState = { + sm.CurrentShardState.newBuilder().setShardId(evt.shardId).addAllEntityIds(evt.entityIds.asJava).build() + } + + private def currentShardStateFromBinary(bytes: Array[Byte]): CurrentShardState = { + val parsed = sm.CurrentShardState.parseFrom(bytes) + CurrentShardState(parsed.getShardId, parsed.getEntityIdsList.asScala.toSet) + } + + private def shardStateFromProto(parsed: ClusterShardingMessages.ShardState): ShardState = { + ShardState(parsed.getShardId, parsed.getEntityIdsList.asScala.toSet) + } + + private def shardStateFromBinary(bytes: Array[Byte]): ShardState = { + val parsed = sm.ShardState.parseFrom(bytes) + ShardState(parsed.getShardId, parsed.getEntityIdsList.asScala.toSet) + } + + private def currentShardRegionStateToProto(evt: CurrentShardRegionState): sm.CurrentShardRegionState = { + val shards = evt.shards.map(shardStateToProto).asJava + val failed = evt.failed.asJava + sm.CurrentShardRegionState.newBuilder().addAllShards(shards).addAllFailed(failed).build() + } + + private def currentShardRegionStateFromBinary(bytes: Array[Byte]): CurrentShardRegionState = { + val parsed = sm.CurrentShardRegionState.parseFrom(bytes) + val state: Set[ShardState] = parsed.getShardsList.asScala.map(shardStateFromProto).toSet + val failed: Set[String] = parsed.getFailedList.asScala.toSet + CurrentShardRegionState(state, failed) + } + def serializeAddress(address: Address): sm.Address = address match { case Address(protocol, systemName, Some(host), Some(port)) => 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 521608c99b..6a3ea6a047 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 @@ -61,12 +61,6 @@ object ClusterShardingGetStateSpecConfig extends MultiNodeConfig { dir = target/ClusterShardingGetStateSpec/sharding-ddata map-size = 10 MiB } - # using Java serialization for these messages because test is sending them - # to other nodes, which isn't normal usage. - akka.actor.serialization-bindings { - "${ShardRegion.GetShardRegionState.getClass.getName}" = java-test - "${classOf[ShardRegion.CurrentShardRegionState].getName}" = java-test - } """).withFallback(MultiNodeClusterSpec.clusterConfig)) nodeConfig(first, second)(ConfigFactory.parseString("""akka.cluster.roles=["shard"]""")) diff --git a/akka-cluster-sharding/src/multi-jvm/scala/akka/cluster/sharding/ClusterShardingQueriesSpec.scala b/akka-cluster-sharding/src/multi-jvm/scala/akka/cluster/sharding/ClusterShardingQueriesSpec.scala index 9b513b04f3..c54e6caef5 100644 --- a/akka-cluster-sharding/src/multi-jvm/scala/akka/cluster/sharding/ClusterShardingQueriesSpec.scala +++ b/akka-cluster-sharding/src/multi-jvm/scala/akka/cluster/sharding/ClusterShardingQueriesSpec.scala @@ -4,20 +4,16 @@ package akka.cluster.sharding -import scala.concurrent.duration._ - -import akka.actor.Actor -import akka.actor.ActorLogging -import akka.actor.ActorRef -import akka.actor.Props +import akka.actor.{ Actor, ActorLogging, ActorRef, Props } import akka.cluster.MultiNodeClusterSpec -import akka.remote.testkit.MultiNodeConfig -import akka.remote.testkit.MultiNodeSpec +import akka.remote.testkit.{ MultiNodeConfig, MultiNodeSpec } import akka.serialization.jackson.CborSerializable import akka.testkit.TestProbe import com.typesafe.config.ConfigFactory import org.scalatest.concurrent.ScalaFutures +import scala.concurrent.duration._ + object ClusterShardingQueriesSpec { case class Ping(id: Long) extends CborSerializable case object Pong extends CborSerializable @@ -44,7 +40,7 @@ object ClusterShardingQueriesSpec { object ClusterShardingQueriesSpecConfig extends MultiNodeConfig { val controller = role("controller") - val first = role("first") + val busy = role("busy") val second = role("second") val third = role("third") @@ -59,7 +55,7 @@ object ClusterShardingQueriesSpecConfig extends MultiNodeConfig { akka.cluster.testkit.auto-down-unreachable-after = 0s akka.cluster.sharding { state-store-mode = "ddata" - shard-region-query-timeout = 0ms + shard-region-query-timeout = 2ms updating-state-timeout = 2s waiting-for-state-timeout = 2s } @@ -69,7 +65,11 @@ object ClusterShardingQueriesSpecConfig extends MultiNodeConfig { } """).withFallback(MultiNodeClusterSpec.clusterConfig))) - nodeConfig(first, second, third)(ConfigFactory.parseString("""akka.cluster.roles=["shard"]""")) + val shardRoles = ConfigFactory.parseString("""akka.cluster.roles=["shard"]""") + + nodeConfig(busy)( + ConfigFactory.parseString("akka.cluster.sharding.shard-region-query-timeout = 0ms").withFallback(shardRoles)) + nodeConfig(second, third)(shardRoles) } @@ -108,13 +108,13 @@ abstract class ClusterShardingQueriesSpec "Querying cluster sharding" must { "join cluster, initialize sharding" in { - awaitClusterUp(controller, first, second, third) + awaitClusterUp(controller, busy, second, third) runOn(controller) { startProxy() } - runOn(first, second, third) { + runOn(busy, second, third) { startShard() } @@ -136,8 +136,8 @@ abstract class ClusterShardingQueriesSpec enterBarrier("sharded actors started") } - "get ShardIds of shards that timed out per region" in { - runOn(roles: _*) { + "return shard stats of cluster sharding regions if one or more shards timeout, versus all as empty" in { + runOn(busy, second, third) { val probe = TestProbe() val region = ClusterSharding(system).shardRegion(shardTypeName) region.tell(ShardRegion.GetClusterShardingStats(10.seconds), probe.ref) @@ -146,13 +146,32 @@ abstract class ClusterShardingQueriesSpec val timeouts = numberOfShards / regions.size // 3 regions, 2 shards per region, all 2 shards/region were unresponsive - // within shard-region-query-timeout = 0ms - regions.values.forall { s => - s.stats.isEmpty && s.failed.size == timeouts - } shouldBe true + // within shard-region-query-timeout, which only on first is 0ms + regions.values.map(_.stats.size).sum shouldEqual 4 + regions.values.map(_.failed.size).sum shouldEqual timeouts + } + enterBarrier("received failed stats from timed out shards vs empty") + } - regions.values.map(_.failed.size).sum shouldEqual numberOfShards - enterBarrier("received stats") + "return shard state of sharding regions if one or more shards timeout, versus all as empty" in { + runOn(busy) { + val probe = TestProbe() + val region = ClusterSharding(system).shardRegion(shardTypeName) + region.tell(ShardRegion.GetShardRegionState, probe.ref) + val state = probe.expectMsgType[ShardRegion.CurrentShardRegionState] + state.shards.isEmpty shouldEqual true + state.failed.size shouldEqual 2 + } + enterBarrier("query-timeout-on-busy-node") + + runOn(second, third) { + val probe = TestProbe() + val region = ClusterSharding(system).shardRegion(shardTypeName) + + region.tell(ShardRegion.GetShardRegionState, probe.ref) + val state = probe.expectMsgType[ShardRegion.CurrentShardRegionState] + state.shards.size shouldEqual 2 + state.failed.isEmpty shouldEqual true } enterBarrier("done") } diff --git a/akka-cluster-sharding/src/test/scala/akka/cluster/sharding/ShardRegionSpec.scala b/akka-cluster-sharding/src/test/scala/akka/cluster/sharding/ShardRegionSpec.scala index 04a4f5c436..0c003eae72 100644 --- a/akka-cluster-sharding/src/test/scala/akka/cluster/sharding/ShardRegionSpec.scala +++ b/akka-cluster-sharding/src/test/scala/akka/cluster/sharding/ShardRegionSpec.scala @@ -135,6 +135,7 @@ class ShardRegionSpec extends AkkaSpec(ShardRegionSpec.config) { probe .receiveWhile(messages = expect) { case e: ShardRegion.CurrentShardRegionState => + e.failed.isEmpty shouldEqual true e.shards.map(_.shardId) } .flatten diff --git a/akka-cluster-sharding/src/test/scala/akka/cluster/sharding/ShardingQueriesSpec.scala b/akka-cluster-sharding/src/test/scala/akka/cluster/sharding/ShardingQueriesSpec.scala index 13deb94df6..3946813897 100644 --- a/akka-cluster-sharding/src/test/scala/akka/cluster/sharding/ShardingQueriesSpec.scala +++ b/akka-cluster-sharding/src/test/scala/akka/cluster/sharding/ShardingQueriesSpec.scala @@ -4,7 +4,7 @@ package akka.cluster.sharding -import akka.cluster.sharding.Shard.ShardStats +import akka.cluster.sharding.Shard.{ CurrentShardState, ShardStats } import akka.cluster.sharding.ShardRegion.ShardState import akka.cluster.sharding.ShardingQueries.ShardsQueryResult import akka.testkit.AkkaSpec @@ -35,23 +35,31 @@ class ShardingQueriesSpec extends AkkaSpec { } "partition failures and responses by type and by convention (failed Left, T Right)" in { - val responses = Seq(ShardStats("a", 1), ShardStats("b", 1)) - val results = responses.map(Right(_)) ++ failures.map(Left(_)) - val qr = ShardsQueryResult[ShardStats](results, shards.size, timeout) - qr.failed shouldEqual failures - qr.responses shouldEqual responses - isTotalFailed(qr) shouldBe false - isAllSubsetFailed(qr) shouldBe false - qr.toString shouldEqual s"Queried [3] shards: [2] responsive, [1] failed after $timeout." + def assert[T](responses: Seq[T]) = { + val results = responses.map(Right(_)) ++ failures.map(Left(_)) + val qr = ShardsQueryResult[T](results, shards.size, timeout) + qr.failed shouldEqual failures + qr.responses shouldEqual responses + isTotalFailed(qr) shouldBe false + isAllSubsetFailed(qr) shouldBe false + qr.toString shouldEqual s"Queried [3] shards: [2] responsive, [1] failed after $timeout." + } + + assert[ShardStats](Seq(ShardStats("a", 1), ShardStats("b", 1))) + assert[CurrentShardState](Seq(CurrentShardState("a", Set("a1")), CurrentShardState("b", Set("b1")))) } "detect a subset query - not all queried" in { - val responses = Seq(ShardStats("a", 1), ShardStats("b", 1)) - val results = responses.map(Right(_)) ++ failures.map(Left(_)) - val qr = ShardsQueryResult[ShardStats](results, shards.size + 1, timeout) - qr.total > qr.queried shouldBe true - qr.queried < shards.size - qr.toString shouldEqual s"Queried [3] shards of [4]: [2] responsive, [1] failed after $timeout." + def assert[T](responses: Seq[T]) = { + val results = responses.map(Right(_)) ++ failures.map(Left(_)) + val qr = ShardsQueryResult[T](results, shards.size + 1, timeout) + qr.total > qr.queried shouldBe true + qr.queried < shards.size + qr.toString shouldEqual s"Queried [3] shards of [4]: [2] responsive, [1] failed after $timeout." + } + + assert[ShardStats](Seq(ShardStats("a", 1), ShardStats("b", 1))) + assert[CurrentShardState](Seq(CurrentShardState("a", Set("a1")), CurrentShardState("b", Set("b1")))) } "partition when all failed" in { diff --git a/akka-docs/src/main/paradox/cluster-sharding.md b/akka-docs/src/main/paradox/cluster-sharding.md index 2d026273d5..351808691a 100644 --- a/akka-docs/src/main/paradox/cluster-sharding.md +++ b/akka-docs/src/main/paradox/cluster-sharding.md @@ -220,13 +220,14 @@ Two requests to inspect the cluster state are available: @scala[`ShardRegion.GetShardRegionState`] @java[`ShardRegion.getShardRegionStateInstance`] which will return a @scala[`ShardRegion.CurrentShardRegionState`] @java[`ShardRegion.ShardRegionState`] that contains -the identifiers of the shards running in a Region and what entities are alive for each of them. +the identifiers of the shards running in a Region and what entities are alive for each of them. `ShardRegion.GetClusterShardingStats` which will query all the regions in the cluster and return a `ShardRegion.ClusterShardingStats` containing the identifiers of the shards running in each region and a count -of entities that are alive in each shard. If any shard queries failed, for example due to timeout -if a shard was too busy to reply within the configured `akka.cluster.sharding.shard-region-query-timeout`, -`ShardRegion.ClusterShardingStats` will also include the set of shard identifiers by region that failed. +of entities that are alive in each shard. + +If any shard queries failed, for example due to timeout if a shard was too busy to reply within the configured `akka.cluster.sharding.shard-region-query-timeout`, +`ShardRegion.CurrentShardRegionState` and `ShardRegion.ClusterShardingStats` will also include the set of shard identifiers by region that failed. The type names of all started shards can be acquired via @scala[`ClusterSharding.shardTypeNames`] @java[`ClusterSharding.getShardTypeNames`].