valepakh commented on code in PR #5685:
URL: https://github.com/apache/ignite-3/pull/5685#discussion_r2079574907
##########
modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/AlterZoneCommand.java:
##########
@@ -136,23 +148,51 @@ private CatalogZoneDescriptor
fromParamsAndPreviousValue(CatalogZoneDescriptor p
CatalogStorageProfilesDescriptor storageProfiles =
storageProfileParams != null
? fromParams(storageProfileParams) :
previous.storageProfiles();
+ int replicas = requireNonNullElse(this.replicas, previous.replicas());
+ int quorumSize = adjustQuorumSize(replicas, previous.quorumSize());
+
return new CatalogZoneDescriptor(
previous.id(),
previous.name(),
- Objects.requireNonNullElse(partitions, previous.partitions()),
- Objects.requireNonNullElse(replicas, previous.replicas()),
- Objects.requireNonNullElse(autoAdjust,
previous.dataNodesAutoAdjust()),
- Objects.requireNonNullElse(scaleUp,
previous.dataNodesAutoAdjustScaleUp()),
- Objects.requireNonNullElse(scaleDown,
previous.dataNodesAutoAdjustScaleDown()),
- Objects.requireNonNullElse(filter, previous.filter()),
+ requireNonNullElse(partitions, previous.partitions()),
+ replicas,
+ quorumSize,
+ requireNonNullElse(autoAdjust, previous.dataNodesAutoAdjust()),
+ requireNonNullElse(scaleUp,
previous.dataNodesAutoAdjustScaleUp()),
+ requireNonNullElse(scaleDown,
previous.dataNodesAutoAdjustScaleDown()),
+ requireNonNullElse(filter, previous.filter()),
storageProfiles,
previous.consistencyMode()
);
}
+ /**
+ * Adjusts quorum size so it is always consistent with the replicas count.
+ *
+ * @param replicas Desired replicas count.
+ * @param previousQuorumSize Previous quorum size.
+ * @return Adjusted quorum size.
+ */
+ private int adjustQuorumSize(int replicas, int previousQuorumSize) {
+ int quorumSize = requireNonNullElse(this.quorumSize,
previousQuorumSize);
Review Comment:
Done
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]