From e904571a25e4c215fe0928ca8b61eb1a817410bd Mon Sep 17 00:00:00 2001
From: "isaacklugman@gmail.com" <ik1g19@soton.ac.uk>
Date: Thu, 13 May 2021 14:04:10 +0100
Subject: [PATCH] rebalance only occurs when at least one file is stored

---
 src/Controller.java | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/src/Controller.java b/src/Controller.java
index d169178..87085e8 100644
--- a/src/Controller.java
+++ b/src/Controller.java
@@ -496,25 +496,29 @@ public class Controller extends Server {
 
 
     private void rebalanceOperation() {
-       if (rebalanceInProgess) rebalanceCounter++;
-       else {
-           threadIDOutput("Started Rebalance Operation");
+        threadIDOutput("Started Rebalance Operation");
 
-           State currentSate = currentState();
+        if (rebalanceInProgess) {
+            rebalanceCounter++;
+            threadIDOutput("Rebalance already in progress, queued for later");
+        }
+        else if (fileIndex.size() == 0) {
+            threadIDOutput("Rebalance cancelled, no files currently stored");
+        }
+        else {
+            State currentSate = currentState();
 
-           List<Change> changes = rebalance(currentSate);
+            List<Change> changes = rebalance(currentSate);
 
-           if (!changes.isEmpty()) rebalanceChanges(changes);
-           else rebalanceInProgess = false;
-       }
+            if (!changes.isEmpty()) rebalanceChanges(changes);
+            else rebalanceInProgess = false;
+        }
     }
 
 
 
     public DStoreConnection registerDStore(Socket requestingSocket, String joinRequest) {
-        if (fileIndex.size() > 0) {
-            rebalanceOperation();
-        }
+        rebalanceOperation();
 
 
         Socket dSock = requestingSocket;
-- 
GitLab