sergeyuttsel commented on code in PR #1729:
URL: https://github.com/apache/ignite-3/pull/1729#discussion_r1160635718
##########
modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java:
##########
@@ -168,6 +183,19 @@ public class DistributionZoneManager implements
IgniteComponent {
*/
private final Map<Integer, ZoneState> zonesState;
+ /** The tracker for last topology version which was observed by
distribution zone manager. */
+ private final PendingComparableValuesTracker<Long> topVerTracker;
+
+ /**
+ * The last meta storage revision on which scale up timer was started.
+ */
+ private long lastScaleUpRevision;
Review Comment:
Fixed
##########
modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java:
##########
@@ -505,6 +540,111 @@ public int getZoneId(String name) {
}
}
+ /**
+ * The method for obtaining data nodes of the specified zone.
+ * The flow for the future completion:
+ * Waiting for DistributionZoneManager observe passed topology version or
greater version in topologyWatchListener.
+ * If the {@link
DistributionZoneConfigurationSchema#dataNodesAutoAdjustScaleUp} equals to 0
than wait for writing data nodes triggered
+ * by started nodes and corresponding to the passed topology version or
greater topology version
+ * to the data nodes into the meta storage.
+ * If the {@link
DistributionZoneConfigurationSchema#dataNodesAutoAdjustScaleDown} equals to 0
than wait for writing data nodes
+ * triggered by stopped nodes and corresponding to the passed topology
version or greater topology version
+ * to the data nodes into the meta storage.
+ * After waiting it completes the future with data nodes of the specified
zone.
+ * This method must be invoked in a change configuration closure to
guarantee that the zone is exists and values of scaleUp/scaleDown
+ * timers are up to date.
+ *
+ * @param zoneId Zone id.
+ * @param topVer Topology version.
+ * @return The data nodes future.
+ */
+ public CompletableFuture<Set<String>> topologyVersionedDataNodes(int
zoneId, long topVer) {
+ CompletableFuture<IgniteBiTuple<Boolean, Boolean>> timerValuesFut =
awaitTopologyVersion(topVer)
+ .thenCompose(ignored -> getImmediateTimers(zoneId));
+
+ return allOf(timerValuesFut.thenCompose(timerValues ->
scaleUpAwaiting(zoneId, timerValues.get1())),
+ timerValuesFut.thenCompose(timerValues ->
scaleDownAwaiting(zoneId, timerValues.get2()))
+ )
+ .thenCompose(ignored -> getDataNodesFuture(zoneId));
Review Comment:
Fixed
##########
modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZoneManager.java:
##########
@@ -132,6 +143,10 @@ public class DistributionZoneManager implements
IgniteComponent {
/** Default number of zone partitions. */
public static final int DEFAULT_PARTITION_COUNT = 25;
+ /** Value for the distribution zones' timers which means that data nodes
changing for distribution zone will be
Review Comment:
Fixed
--
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]