This is an automated email from the ASF dual-hosted git repository.

vpyatkov pushed a commit to branch ignite-18991-WIP
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit f997ff4888fd6991b6f43d1b376fcdb79e34beac
Author: Mikhail Efremov <[email protected]>
AuthorDate: Fri Apr 12 16:29:56 2024 +0300

    Chnages after review form M.Efremov and M.Aliev
---
 .../ignite/client/handler/FakePlacementDriver.java |  2 +-
 .../RebalanceRaftGroupEventsListener.java          | 19 ++----
 .../distributionzones/rebalance/RebalanceUtil.java | 77 +++++++++++++---------
 .../internal/placementdriver/PlacementDriver.java  |  3 +-
 .../placementdriver/TestReplicaMetaImpl.java       |  2 +-
 .../internal/placementdriver/LeaseUpdater.java     |  1 -
 .../internal/placementdriver/leases/Lease.java     | 47 +++++++++----
 .../placementdriver/leases/LeaseTracker.java       |  1 -
 .../org/apache/ignite/internal/app/IgniteImpl.java |  4 +-
 ...ItTxDistributedTestThreeNodesThreeReplicas.java |  2 +-
 10 files changed, 92 insertions(+), 66 deletions(-)

diff --git 
a/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakePlacementDriver.java
 
b/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakePlacementDriver.java
index 605b6baac6..f1af7df2ae 100644
--- 
a/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakePlacementDriver.java
+++ 
b/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakePlacementDriver.java
@@ -141,7 +141,7 @@ public class FakePlacementDriver extends 
AbstractEventProducer<PrimaryReplicaEve
 
             @Override
             public Set<ReplicationGroupId> subgroups() {
-                return null;
+                return Set.of();
             }
         };
     }
diff --git 
a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceRaftGroupEventsListener.java
 
b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceRaftGroupEventsListener.java
index 85a100b905..aa8037195e 100644
--- 
a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceRaftGroupEventsListener.java
+++ 
b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceRaftGroupEventsListener.java
@@ -72,8 +72,8 @@ import org.apache.ignite.internal.util.ByteUtils;
 import org.apache.ignite.internal.util.IgniteSpinBusyLock;
 
 /**
- * Listener for the raft group events, which must provide correct error 
handling of rebalance process
- * and start new rebalance after the current one finished.
+ * Listener for the raft group events, which must provide correct error 
handling of rebalance process and start new rebalance after the
+ * current one finished.
  */
 public class RebalanceRaftGroupEventsListener implements 
RaftGroupEventsListener {
     /** Ignite logger. */
@@ -132,15 +132,11 @@ public class RebalanceRaftGroupEventsListener implements 
RaftGroupEventsListener
     /** Executor for scheduling rebalance retries. */
     private final ScheduledExecutorService rebalanceScheduler;
 
-    /** Zone id. */
-    // TODO: remove this
-    private final int zoneId;
-
     /** Performs reconfiguration of a Raft group of a partition. */
     private final PartitionMover partitionMover;
 
     /** Attempts to retry the current rebalance in case of errors. */
-    private final AtomicInteger rebalanceAttempts =  new AtomicInteger(0);
+    private final AtomicInteger rebalanceAttempts = new AtomicInteger(0);
 
     /**
      * Constructs new listener.
@@ -157,7 +153,6 @@ public class RebalanceRaftGroupEventsListener implements 
RaftGroupEventsListener
             IgniteSpinBusyLock busyLock,
             PartitionMover partitionMover,
             ScheduledExecutorService rebalanceScheduler,
-            int zoneId,
             int tableId
     ) {
         this.metaStorageMgr = metaStorageMgr;
@@ -165,7 +160,6 @@ public class RebalanceRaftGroupEventsListener implements 
RaftGroupEventsListener
         this.busyLock = busyLock;
         this.partitionMover = partitionMover;
         this.rebalanceScheduler = rebalanceScheduler;
-        this.zoneId = zoneId;
         this.tableId = tableId;
     }
 
@@ -258,7 +252,7 @@ public class RebalanceRaftGroupEventsListener implements 
RaftGroupEventsListener
         try {
             int partId = zonePartitionId.partitionId();
 
-            Entry counterEntry = metaStorageMgr.get(tablesCounterKey(zoneId, 
partId)).get();
+            Entry counterEntry = 
metaStorageMgr.get(tablesCounterKey(zonePartitionId)).get();
 
             assert counterEntry.value() != null;
 
@@ -272,7 +266,7 @@ public class RebalanceRaftGroupEventsListener implements 
RaftGroupEventsListener
                 return;
             }
 
-            Condition condition = value(tablesCounterKey(zoneId, 
partId)).eq(counterEntry.value());
+            Condition condition = 
value(tablesCounterKey(zonePartitionId)).eq(counterEntry.value());
 
             byte[] stableArray = Assignments.toBytes(stable);
 
@@ -283,7 +277,7 @@ public class RebalanceRaftGroupEventsListener implements 
RaftGroupEventsListener
             }
 
             Update successCase = ops(
-                    put(tablesCounterKey(zoneId, partId), toBytes(counter)),
+                    put(tablesCounterKey(zonePartitionId), toBytes(counter)),
                     // Todo: change to one key 
https://issues.apache.org/jira/browse/IGNITE-18991
                     put(raftConfigurationAppliedKey(zonePartitionId), 
stableArray)
             ).yield(TABLES_COUNTER_DECREMENT_SUCCESS);
@@ -292,6 +286,7 @@ public class RebalanceRaftGroupEventsListener implements 
RaftGroupEventsListener
 
             int res = metaStorageMgr.invoke(iif(condition, successCase, 
failCase)).get().getAsInt();
 
+            int zoneId = zonePartitionId.zoneId();
             if (res < 0) {
                 LOG.info("Count down of zone's tables counter is failed. "
                                 + "Going to retry [zoneId={}, 
appliedPeers={}]",
diff --git 
a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtil.java
 
b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtil.java
index 703b156f4f..8128d76a77 100644
--- 
a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtil.java
+++ 
b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtil.java
@@ -130,7 +130,7 @@ public class RebalanceUtil {
      * Update keys that related to rebalance algorithm in Meta Storage. Keys 
are specific for partition.
      *
      * @param zoneDescriptor Zone descriptor.
-     * @param partId Unique identifier of a partition.
+     * @param zonePartitionId Unique aggregate identifier of a partition of a 
zone.
      * @param dataNodes Data nodes.
      * @param replicas Number of replicas for a table.
      * @param revision Revision of Meta Storage that is specific for the 
assignment update.
@@ -141,7 +141,7 @@ public class RebalanceUtil {
      */
     public static CompletableFuture<Void> updatePendingAssignmentsKeys(
             CatalogZoneDescriptor zoneDescriptor,
-            ZonePartitionId partId,
+            ZonePartitionId zonePartitionId,
             Collection<String> dataNodes,
             int replicas,
             long revision,
@@ -149,13 +149,13 @@ public class RebalanceUtil {
             int partNum,
             Set<Assignment> tableCfgPartAssignments
     ) {
-        ByteArray partChangeTriggerKey = pendingChangeTriggerKey(partId);
+        ByteArray partChangeTriggerKey = 
pendingChangeTriggerKey(zonePartitionId);
 
-        ByteArray partAssignmentsPendingKey = 
pendingPartAssignmentsKey(partId);
+        ByteArray partAssignmentsPendingKey = 
pendingPartAssignmentsKey(zonePartitionId);
 
-        ByteArray partAssignmentsPlannedKey = 
plannedPartAssignmentsKey(partId);
+        ByteArray partAssignmentsPlannedKey = 
plannedPartAssignmentsKey(zonePartitionId);
 
-        ByteArray partAssignmentsStableKey = stablePartAssignmentsKey(partId);
+        ByteArray partAssignmentsStableKey = 
stablePartAssignmentsKey(zonePartitionId);
 
         Set<Assignment> partAssignments = 
AffinityUtils.calculateAssignmentForPartition(dataNodes, partNum, replicas);
 
@@ -367,7 +367,7 @@ public class RebalanceUtil {
     }
 
     private static CompletableFuture<Integer> manualPartitionUpdate(
-            ZonePartitionId partId,
+            ZonePartitionId zonePartitionId,
             Collection<String> aliveDataNodes,
             Set<String> aliveNodesConsistentIds,
             int replicas,
@@ -388,7 +388,10 @@ public class RebalanceUtil {
             return 
CompletableFuture.completedFuture(ASSIGNMENT_NOT_UPDATED.ordinal());
         }
 
-        Set<Assignment> calcAssignments = 
AffinityUtils.calculateAssignmentForPartition(aliveDataNodes, 
partId.partitionId(), replicas);
+        Set<Assignment> calcAssignments = 
AffinityUtils.calculateAssignmentForPartition(
+                aliveDataNodes,
+                zonePartitionId.partitionId(),
+                replicas);
 
         for (Assignment calcAssignment : calcAssignments) {
             if (partAssignments.size() == replicas) {
@@ -405,9 +408,9 @@ public class RebalanceUtil {
         byte[] partAssignmentsBytes = 
Assignments.forced(partAssignments).toBytes();
         byte[] revisionBytes = ByteUtils.longToBytes(revision);
 
-        ByteArray partChangeTriggerKey = pendingChangeTriggerKey(partId);
-        ByteArray partAssignmentsPendingKey = 
pendingPartAssignmentsKey(partId);
-        ByteArray partAssignmentsPlannedKey = 
plannedPartAssignmentsKey(partId);
+        ByteArray partChangeTriggerKey = 
pendingChangeTriggerKey(zonePartitionId);
+        ByteArray partAssignmentsPendingKey = 
pendingPartAssignmentsKey(zonePartitionId);
+        ByteArray partAssignmentsPlannedKey = 
plannedPartAssignmentsKey(zonePartitionId);
 
         Iif iif = iif(
                 
notExists(partChangeTriggerKey).or(value(partChangeTriggerKey).lt(revisionBytes)),
@@ -447,78 +450,78 @@ public class RebalanceUtil {
     /**
      * Key that is needed for skipping stale events of pending key change.
      *
-     * @param partId Unique identifier of a partition.
+     * @param zonePartitionId Unique aggregate identifier of a partition of a 
zone.
      * @return Key for a partition.
      * @see <a 
href="https://github.com/apache/ignite-3/blob/main/modules/table/tech-notes/rebalance.md";>Rebalance
 documentation</a>
      */
-    public static ByteArray pendingChangeTriggerKey(ZonePartitionId partId) {
-        return new ByteArray(partId + "pending.change.trigger");
+    public static ByteArray pendingChangeTriggerKey(ZonePartitionId 
zonePartitionId) {
+        return new ByteArray(zonePartitionId + "pending.change.trigger");
     }
 
     /**
      * Key that is needed for skipping stale events of stable key change.
      *
-     * @param partId Unique identifier of a partition.
+     * @param zonePartitionId Unique aggregate identifier of a partition of a 
zone.
      * @return Key for a partition.
      * @see <a 
href="https://github.com/apache/ignite-3/blob/main/modules/table/tech-notes/rebalance.md";>Rebalance
 documentation</a>
      */
-    public static ByteArray stableChangeTriggerKey(ZonePartitionId partId) {
-        return new ByteArray(partId + "stable.change.trigger");
+    public static ByteArray stableChangeTriggerKey(ZonePartitionId 
zonePartitionId) {
+        return new ByteArray(zonePartitionId + "stable.change.trigger");
     }
 
     /**
      * Key that is needed for the rebalance algorithm.
      *
-     * @param partId Unique identifier of a partition.
+     * @param zonePartitionId Unique aggregate identifier of a partition of a 
zone.
      * @return Key for a partition.
      * @see <a 
href="https://github.com/apache/ignite-3/blob/main/modules/table/tech-notes/rebalance.md";>Rebalance
 documentation</a>
      */
-    public static ByteArray pendingPartAssignmentsKey(ZonePartitionId partId) {
-        return new ByteArray(PENDING_ASSIGNMENTS_PREFIX + partId);
+    public static ByteArray pendingPartAssignmentsKey(ZonePartitionId 
zonePartitionId) {
+        return new ByteArray(PENDING_ASSIGNMENTS_PREFIX + zonePartitionId);
     }
 
     /**
      * Key that is needed for the rebalance algorithm.
      *
-     * @param partId Unique identifier of a partition.
+     * @param zonePartitionId Unique aggregate identifier of a partition of a 
zone.
      * @return Key for a partition.
      * @see <a 
href="https://github.com/apache/ignite-3/blob/main/modules/table/tech-notes/rebalance.md";>Rebalance
 documentation</a>
      */
-    public static ByteArray plannedPartAssignmentsKey(ZonePartitionId partId) {
-        return new ByteArray("assignments.planned." + partId);
+    public static ByteArray plannedPartAssignmentsKey(ZonePartitionId 
zonePartitionId) {
+        return new ByteArray("assignments.planned." + zonePartitionId);
     }
 
     /**
      * Key that is needed for the rebalance algorithm.
      *
-     * @param partId Unique identifier of a partition.
+     * @param zonePartitionId Unique aggregate identifier of a partition of a 
zone.
      * @return Key for a partition.
      * @see <a 
href="https://github.com/apache/ignite-3/blob/main/modules/table/tech-notes/rebalance.md";>Rebalance
 documentation</a>
      */
-    public static ByteArray stablePartAssignmentsKey(ZonePartitionId partId) {
-        return new ByteArray(STABLE_ASSIGNMENTS_PREFIX + partId);
+    public static ByteArray stablePartAssignmentsKey(ZonePartitionId 
zonePartitionId) {
+        return new ByteArray(STABLE_ASSIGNMENTS_PREFIX + zonePartitionId);
     }
 
     /**
      * Key that is needed for the rebalance algorithm.
      *
-     * @param partId Unique identifier of a partition.
+     * @param zonePartitionId Unique aggregate identifier of a partition of a 
zone.
      * @return Key for a partition.
      * @see <a 
href="https://github.com/apache/ignite-3/blob/main/modules/table/tech-notes/rebalance.md";>Rebalance
 documentation</a>
      */
-    public static ByteArray switchReduceKey(ZonePartitionId partId) {
-        return new ByteArray(ASSIGNMENTS_SWITCH_REDUCE_PREFIX + partId);
+    public static ByteArray switchReduceKey(ZonePartitionId zonePartitionId) {
+        return new ByteArray(ASSIGNMENTS_SWITCH_REDUCE_PREFIX + 
zonePartitionId);
     }
 
     /**
      * Key that is needed for the rebalance algorithm.
      *
-     * @param partId Unique identifier of a partition.
+     * @param zonePartitionId Unique aggregate identifier of a partition of a 
zone.
      * @return Key for a partition.
      * @see <a 
href="https://github.com/apache/ignite-3/blob/main/modules/table/tech-notes/rebalance.md";>Rebalance
 documentation</a>
      */
-    public static ByteArray switchAppendKey(ZonePartitionId partId) {
-        return new ByteArray(ASSIGNMENTS_SWITCH_APPEND_PREFIX + partId);
+    public static ByteArray switchAppendKey(ZonePartitionId zonePartitionId) {
+        return new ByteArray(ASSIGNMENTS_SWITCH_APPEND_PREFIX + 
zonePartitionId);
     }
 
     /**
@@ -532,6 +535,16 @@ public class RebalanceUtil {
         return new ByteArray(TABLES_COUNTER_PREFIX + zoneId + "_part_" + 
partId);
     }
 
+    /**
+     * ByteArray key for a counter of rebalances of tables from a zone that 
are associated with the specified partition.
+     *
+     * @param zonePartitionId Unique aggregate identifier of a partition of a 
zone.
+     * @return Key for a partition.
+     */
+    public static ByteArray tablesCounterKey(ZonePartitionId zonePartitionId) {
+        return tablesCounterKey(zonePartitionId.zoneId(), 
zonePartitionId.partitionId());
+    }
+
     /**
      * ByteArray prefix for counter of rebalances of tables from a zone that 
are associated with the specified partition.
      *
diff --git 
a/modules/placement-driver-api/src/main/java/org/apache/ignite/internal/placementdriver/PlacementDriver.java
 
b/modules/placement-driver-api/src/main/java/org/apache/ignite/internal/placementdriver/PlacementDriver.java
index edf0505370..6726c8390a 100644
--- 
a/modules/placement-driver-api/src/main/java/org/apache/ignite/internal/placementdriver/PlacementDriver.java
+++ 
b/modules/placement-driver-api/src/main/java/org/apache/ignite/internal/placementdriver/PlacementDriver.java
@@ -100,7 +100,8 @@ public interface PlacementDriver extends 
EventProducer<PrimaryReplicaEvent, Prim
     ReplicaMeta getLeaseMeta(ReplicationGroupId grpId);
 
     /**
-     * Tries to update the lease in order to include the new subgroup.
+     * Tries to update the lease in order to include the new subgroup. The set 
of groups will be added to the set of lease subgroups
+     * ({@link ReplicaMeta#subgroups()}) for the specific lease determined by 
the zone id.
      * TODO: When replicas are started by zone, the method is removed.
      *
      * @param zoneId Zone id.
diff --git 
a/modules/placement-driver-api/src/testFixtures/java/org/apache/ignite/internal/placementdriver/TestReplicaMetaImpl.java
 
b/modules/placement-driver-api/src/testFixtures/java/org/apache/ignite/internal/placementdriver/TestReplicaMetaImpl.java
index 70dfef29ae..04831a72ef 100644
--- 
a/modules/placement-driver-api/src/testFixtures/java/org/apache/ignite/internal/placementdriver/TestReplicaMetaImpl.java
+++ 
b/modules/placement-driver-api/src/testFixtures/java/org/apache/ignite/internal/placementdriver/TestReplicaMetaImpl.java
@@ -134,6 +134,6 @@ public class TestReplicaMetaImpl implements ReplicaMeta {
 
     @Override
     public Set<ReplicationGroupId> subgroups() {
-        return null;
+        return Set.of();
     }
 }
diff --git 
a/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/LeaseUpdater.java
 
b/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/LeaseUpdater.java
index 238ae19e47..8ff7afa958 100644
--- 
a/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/LeaseUpdater.java
+++ 
b/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/LeaseUpdater.java
@@ -453,7 +453,6 @@ public class LeaseUpdater {
 
                 for (Map.Entry<ReplicationGroupId, Boolean> entry : 
toBeNegotiated.entrySet()) {
                     Lease lease = renewedLeases.get(entry.getKey());
-                    // TODO check if tests are failed?
                     boolean force = alwaysForce || entry.getValue();
 
                     leaseNegotiator.negotiate(lease, force);
diff --git 
a/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/leases/Lease.java
 
b/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/leases/Lease.java
index c922131b7e..f26c218106 100644
--- 
a/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/leases/Lease.java
+++ 
b/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/leases/Lease.java
@@ -38,8 +38,7 @@ import org.apache.ignite.internal.util.ByteUtils;
 import org.jetbrains.annotations.Nullable;
 
 /**
- * A lease representation in memory.
- * The real lease is stored in Meta storage.
+ * A lease representation in memory. The real lease is stored in Meta storage.
  */
 public class Lease implements ReplicaMeta {
     private static final long serialVersionUID = 394641185393949608L;
@@ -70,7 +69,7 @@ public class Lease implements ReplicaMeta {
     private final ReplicationGroupId replicationGroupId;
 
     /** Table partition replication groups. */
-    private final Set<ReplicationGroupId> parts;
+    private final Set<ReplicationGroupId> subgroups;
 
     /**
      * Creates a new lease.
@@ -100,10 +99,10 @@ public class Lease implements ReplicaMeta {
      * @param leaseExpirationTime Lease expiration timestamp.
      * @param prolong Lease is available to prolong.
      * @param accepted The flag is {@code true} when the holder accepted the 
lease.
-     * @param proposedCandidate The name of a node that is proposed to be a 
next leaseholder. This is not null in case when the lease
-     *     is not prolongable.
+     * @param proposedCandidate The name of a node that is proposed to be a 
next leaseholder. This is not null in case when the
+     *         lease is not prolongable.
      * @param replicationGroupId ID of replication group.
-     * @param parts Table partition replication groups.
+     * @param subgroups Table partition replication groups.
      */
     public Lease(
             @Nullable String leaseholder,
@@ -114,7 +113,7 @@ public class Lease implements ReplicaMeta {
             boolean accepted,
             @Nullable String proposedCandidate,
             ReplicationGroupId replicationGroupId,
-            Set<ReplicationGroupId> parts
+            Set<ReplicationGroupId> subgroups
     ) {
         assert (leaseholder == null) == (leaseholderId == null) : 
"leaseholder=" + leaseholder + ", leaseholderId=" + leaseholderId;
 
@@ -128,7 +127,7 @@ public class Lease implements ReplicaMeta {
         this.accepted = accepted;
         this.replicationGroupId = replicationGroupId;
         this.proposedCandidate = proposedCandidate;
-        this.parts = parts;
+        this.subgroups = subgroups;
     }
 
     /**
@@ -141,7 +140,17 @@ public class Lease implements ReplicaMeta {
         assert accepted : "The lease should be accepted by leaseholder before 
prolongation: [lease=" + this + ", to=" + to + ']';
         assert prolongable : "The lease should be available to prolong: 
[lease=" + this + ", to=" + to + ']';
 
-        return new Lease(leaseholder, leaseholderId, startTime, to, true, 
true, null, replicationGroupId, parts);
+        return new Lease(
+                leaseholder,
+                leaseholderId,
+                startTime,
+                to,
+                true,
+                true,
+                null,
+                replicationGroupId,
+                subgroups
+        );
     }
 
     /**
@@ -164,7 +173,17 @@ public class Lease implements ReplicaMeta {
     public Lease denyLease(String proposedCandidate) {
         assert accepted : "The lease is not accepted: " + this;
 
-        return new Lease(leaseholder, leaseholderId, startTime, 
expirationTime, false, true, proposedCandidate, replicationGroupId, parts);
+        return new Lease(
+                leaseholder,
+                leaseholderId,
+                startTime,
+                expirationTime,
+                false,
+                true,
+                proposedCandidate,
+                replicationGroupId,
+                subgroups
+        );
     }
 
     @Override
@@ -189,7 +208,7 @@ public class Lease implements ReplicaMeta {
 
     @Override
     public Set<ReplicationGroupId> subgroups() {
-        return parts;
+        return subgroups;
     }
 
     /** Returns {@code true} if the lease might be prolonged. */
@@ -223,7 +242,7 @@ public class Lease implements ReplicaMeta {
         byte[] leaseholderIdBytes = stringToBytes(leaseholderId);
         byte[] proposedCandidateBytes = stringToBytes(proposedCandidate);
         byte[] groupIdBytes = toBytes(replicationGroupId);
-        byte[] patsBytes = toBytes(parts);
+        byte[] subgroupsBytes = toBytes(subgroups);
 
         int bufSize = 2 // accepted + prolongable
                 + HYBRID_TIMESTAMP_SIZE * 2 // startTime + expirationTime
@@ -231,7 +250,7 @@ public class Lease implements ReplicaMeta {
                 + bytesSizeForWrite(leaseholderIdBytes)
                 + bytesSizeForWrite(proposedCandidateBytes)
                 + bytesSizeForWrite(groupIdBytes)
-                + bytesSizeForWrite(patsBytes);
+                + bytesSizeForWrite(subgroupsBytes);
 
         ByteBuffer buf = ByteBuffer.allocate(bufSize).order(LITTLE_ENDIAN);
 
@@ -245,7 +264,7 @@ public class Lease implements ReplicaMeta {
         putBytes(buf, leaseholderIdBytes);
         putBytes(buf, proposedCandidateBytes);
         putBytes(buf, groupIdBytes);
-        putBytes(buf, patsBytes);
+        putBytes(buf, subgroupsBytes);
 
         return buf.array();
     }
diff --git 
a/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/leases/LeaseTracker.java
 
b/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/leases/LeaseTracker.java
index a90ad16550..59793da942 100644
--- 
a/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/leases/LeaseTracker.java
+++ 
b/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/leases/LeaseTracker.java
@@ -376,7 +376,6 @@ public class LeaseTracker extends 
AbstractEventProducer<PrimaryReplicaEvent, Pri
                         resultFuture.complete(replicaMeta);
                     }
                 })
-
         );
     }
 
diff --git 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
index 23eb41e375..607c29c9aa 100644
--- 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
+++ 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
@@ -311,7 +311,7 @@ public class IgniteImpl implements Ignite {
     private final ClusterInitializer clusterInitializer;
 
     /** Replica manager. */
-    private ReplicaManager replicaMgr = null;
+    private final ReplicaManager replicaMgr;
 
     /** Transactions manager. */
     private final TxManager txManager;
@@ -356,7 +356,7 @@ public class IgniteImpl implements Ignite {
 
     private final IgniteDeployment deploymentManager;
 
-    private DistributionZoneManager distributionZoneManager = null;
+    private final DistributionZoneManager distributionZoneManager;
 
     /** Creator for volatile {@link 
org.apache.ignite.internal.raft.storage.LogStorageFactory} instances. */
     private final VolatileLogStorageFactoryCreator 
volatileLogStorageFactoryCreator;
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestThreeNodesThreeReplicas.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestThreeNodesThreeReplicas.java
index 9e6a75c55f..29392a503c 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestThreeNodesThreeReplicas.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestThreeNodesThreeReplicas.java
@@ -77,7 +77,7 @@ public class ItTxDistributedTestThreeNodesThreeReplicas 
extends TxAbstractTest {
         var groupId = new TablePartitionId(accounts.tableId(), 0);
 
         // TODO:IGNITE-XXXX It need to be don before the message blocking to 
update lease subgroups.
-        accounts.recordView().insert(null, makeValue(1, 500.));
+        accounts.recordView().insert(null, makeValue(1, 500.0));
 
         // BLock replication messages to both replicas.
         server.blockMessages(new RaftNodeId(groupId, leader), (msg, peerId) -> 
{

Reply via email to