denis-chudov commented on code in PR #2003:
URL: https://github.com/apache/ignite-3/pull/2003#discussion_r1183431564


##########
modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/leases/Lease.java:
##########
@@ -81,7 +92,12 @@ public Lease prolongLease(HybridTimestamp to) {
                 + ", expirationTime=" + expirationTime
                 + ", prolongTo=" + to + ']';
 
-        return new Lease(leaseholder, startTime, to, true);
+        assert prolongable : "The lease should available to prolong ["

Review Comment:
   ```suggestion
           assert prolongable : "The lease should be available to prolong ["
   ```



##########
modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/LeaseUpdater.java:
##########
@@ -355,4 +407,54 @@ private boolean isLeaseOutdated(Lease lease) {
             return now.after(lease.getExpirationTime());
         }
     }
+
+    /**
+     * Message handler to process notification from replica side.
+     */
+    private class PlacementDriverActorMessageHandler implements 
NetworkMessageHandler {
+        @Override
+        public void onReceived(NetworkMessage msg0, String sender, @Nullable 
Long correlationId) {
+            if (!(msg0 instanceof PlacementDriverActorMessage)) {
+                return;
+            }
+
+            var msg = (PlacementDriverActorMessage) msg0;
+
+            if (!stateActorLock.enterBusy()) {
+                return;
+            }
+
+            try {
+                processMessageInternal(sender, msg);
+            } finally {
+                stateActorLock.leaveBusy();
+            }
+        }
+
+        /**
+         * Processes an placement driver actor message. The method should be 
invoked under state lock.
+         *
+         * @param sender Sender node name.
+         * @param msg Message.
+         */
+        private void processMessageInternal(String sender, 
PlacementDriverActorMessage msg) {
+            ReplicationGroupId grpId = msg.groupId();
+
+            Lease lease = leaseTracker.getLease(grpId);
+
+            if (msg instanceof StopLeaseProlongationMessage) {
+                if (lease.isProlongable() && 
sender.equals(lease.getLeaseholder().name())) {
+                    denyLease(grpId, lease).whenComplete((res, th) -> {
+                        if (th != null) {
+                            LOG.warn("Prolongation was not denied due to 
exception [groupId={}]", th, grpId);

Review Comment:
   ```suggestion
                               LOG.warn("Prolongation denial failed due to 
exception [groupId={}]", th, grpId);
   ```



##########
modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/LeaseUpdater.java:
##########
@@ -355,4 +407,54 @@ private boolean isLeaseOutdated(Lease lease) {
             return now.after(lease.getExpirationTime());
         }
     }
+
+    /**
+     * Message handler to process notification from replica side.
+     */
+    private class PlacementDriverActorMessageHandler implements 
NetworkMessageHandler {
+        @Override
+        public void onReceived(NetworkMessage msg0, String sender, @Nullable 
Long correlationId) {
+            if (!(msg0 instanceof PlacementDriverActorMessage)) {
+                return;
+            }
+
+            var msg = (PlacementDriverActorMessage) msg0;
+
+            if (!stateActorLock.enterBusy()) {
+                return;
+            }
+
+            try {
+                processMessageInternal(sender, msg);
+            } finally {
+                stateActorLock.leaveBusy();
+            }
+        }
+
+        /**
+         * Processes an placement driver actor message. The method should be 
invoked under state lock.
+         *
+         * @param sender Sender node name.
+         * @param msg Message.
+         */
+        private void processMessageInternal(String sender, 
PlacementDriverActorMessage msg) {
+            ReplicationGroupId grpId = msg.groupId();
+
+            Lease lease = leaseTracker.getLease(grpId);
+
+            if (msg instanceof StopLeaseProlongationMessage) {
+                if (lease.isProlongable() && 
sender.equals(lease.getLeaseholder().name())) {
+                    denyLease(grpId, lease).whenComplete((res, th) -> {
+                        if (th != null) {
+                            LOG.warn("Prolongation was not denied due to 
exception [groupId={}]", th, grpId);
+                        } else {
+                            LOG.info("Lease deny prolonging message was 
handled [groupId={}, sender={}, deny={}]", grpId, sender, res);

Review Comment:
   ```suggestion
                               LOG.info("Lease prolongation was denied 
[groupId={}, sender={}, deny={}]", grpId, sender, res);
   ```



-- 
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]

Reply via email to