Skip to content
Snippets Groups Projects
Commit 036519de authored by ik1g19's avatar ik1g19
Browse files

fixed bug in remove operation

 - Error - "An established connection
   was aborted by the software in your
   host machine"
 - Cause - Controller was closing connection
   before DStore could respond
parent 936685b4
No related branches found
No related tags found
No related merge requests found
...@@ -64,7 +64,7 @@ public class Controller extends Server { ...@@ -64,7 +64,7 @@ public class Controller extends Server {
Integer port = Integer.parseInt(args[1]); Integer port = Integer.parseInt(args[1]);
send("LIST", dStoreSock); send("LIST", dStoreSock, "DataStore");
String files = readSocket(dStoreSock); String files = readSocket(dStoreSock);
...@@ -91,7 +91,7 @@ public class Controller extends Server { ...@@ -91,7 +91,7 @@ public class Controller extends Server {
nextID++; nextID++;
send("JOINED", dStoreSock); send("JOINED", dStoreSock, "DataStore");
} }
else if (command.equals("STORE")) { else if (command.equals("STORE")) {
...@@ -118,7 +118,7 @@ public class Controller extends Server { ...@@ -118,7 +118,7 @@ public class Controller extends Server {
file.setAcksQuota(r); file.setAcksQuota(r);
send("STORE_TO " + ports, client); send("STORE_TO " + ports, client, "Client");
Boolean fileStored = false; Boolean fileStored = false;
...@@ -129,7 +129,7 @@ public class Controller extends Server { ...@@ -129,7 +129,7 @@ public class Controller extends Server {
threadIDOutput("Store of file " + filename + " complete"); threadIDOutput("Store of file " + filename + " complete");
send("STORE_COMPLETE", client); send("STORE_COMPLETE", client, "Client");
} }
} }
} }
...@@ -147,7 +147,7 @@ public class Controller extends Server { ...@@ -147,7 +147,7 @@ public class Controller extends Server {
DStoreFile file = fileIndex.get(filename); DStoreFile file = fileIndex.get(filename);
int dStorePort = file.getDstore().getPort(); int dStorePort = file.getDstore().getPort();
send("LOAD_FROM " + dStorePort + " " + file.getFilesize(), client); send("LOAD_FROM " + dStorePort + " " + file.getFilesize(), client, "Client");
} }
else if (command.equals("REMOVE")) { else if (command.equals("REMOVE")) {
...@@ -164,22 +164,29 @@ public class Controller extends Server { ...@@ -164,22 +164,29 @@ public class Controller extends Server {
Socket dStore = connectToDStore(x.getValue()); Socket dStore = connectToDStore(x.getValue());
if (dStore != null) { if (dStore != null) {
send("REMOVE " + filename, dStore); send("REMOVE " + filename, dStore, "DataStore");
} else threadIDErr("Unable to connect to DataStore"); } else threadIDErr("Unable to connect to DataStore");
closeConnection("DataStore", dStore); closeConnection("DataStore", dStore);
x.getValue().removeFile(filename);
}); });
Boolean fileRemoved = false; Boolean fileRemoved = false;
while (!fileRemoved) { while (!fileRemoved) {
if (file.removeAckCheck()) { if (file.removeAckCheck()) {
fileIndex.remove(filename);
file.setRemoveInProgress(false); file.setRemoveInProgress(false);
fileRemoved = true; fileRemoved = true;
threadIDOutput("Remove of file " + filename + " complete"); threadIDOutput("Remove of file " + filename + " complete");
send("STORE_COMPLETE", client); send("REMOVE_COMPLETE", client, "Client");
} }
} }
} }
......
...@@ -33,7 +33,7 @@ public class DStore extends Server { ...@@ -33,7 +33,7 @@ public class DStore extends Server {
if (controller != null) { if (controller != null) {
send("JOIN " + port, controller); send("JOIN " + port, controller, "Controller");
handleRequest(readSocket(controller), controller); handleRequest(readSocket(controller), controller);
start(); start();
} }
...@@ -101,21 +101,21 @@ public class DStore extends Server { ...@@ -101,21 +101,21 @@ public class DStore extends Server {
} }
send(fileMessage, controller); send(fileMessage, controller, "Controller");
String response = readSocket(controller); String response = readSocket(controller);
if (response.equals("JOINED")) threadIDOutput("Successfully joined Controller"); if (response.equals("JOINED")) threadIDOutput("Successfully joined Controller");
closeConnection("Client", controller); closeConnection("Controller", controller);
} }
else if (command.equals("STORE")) { else if (command.equals("STORE")) {
String filename = args[1]; String filename = args[1];
Long filesize = Long.parseLong(args[2]); Long filesize = Long.parseLong(args[2]);
send("ACK", client); send("ACK", client, "Client");
try { try {
...@@ -128,7 +128,7 @@ public class DStore extends Server { ...@@ -128,7 +128,7 @@ public class DStore extends Server {
Socket controller = connectToController(); Socket controller = connectToController();
if (controller != null) { if (controller != null) {
send("STORE_ACK " + filename, controller); send("STORE_ACK " + filename, controller, "Controller");
} else threadIDErr("Unable to connect to Controller"); } else threadIDErr("Unable to connect to Controller");
closeConnection("Controller", controller); closeConnection("Controller", controller);
...@@ -145,14 +145,21 @@ public class DStore extends Server { ...@@ -145,14 +145,21 @@ public class DStore extends Server {
} }
else if (command.equals("REMOVE")) { else if (command.equals("REMOVE")) {
Socket controller = client;
String filename = args[1]; String filename = args[1];
if (deleteFile(file_folder + "\\" + filename)) threadIDOutput("Deleted file " + filename); if (deleteFile(file_folder + "\\" + filename)) threadIDOutput("Deleted file " + filename);
else threadIDErr("Failed to delete file " + filename); else threadIDErr("Failed to delete file " + filename);
send("REMOVE_ACK", controller);
Socket controller = connectToController();
if (controller != null) {
send("REMOVE_ACK " + filename, controller, "Controller");
}
else threadIDErr("Unable to connect to Controller");
closeConnection("Controller", controller);
} }
} }
......
...@@ -44,6 +44,10 @@ public class DStoreConnection { ...@@ -44,6 +44,10 @@ public class DStoreConnection {
public void removeFile(String filename) { file_index.remove(filename); }
public int getPort() { return port; } public int getPort() { return port; }
......
...@@ -50,25 +50,25 @@ public abstract class Server { ...@@ -50,25 +50,25 @@ public abstract class Server {
protected void send(String msg, Socket socket) { protected void send(String msg, Socket socket, String destinationName) {
try { try {
PrintWriter out = new PrintWriter(socket.getOutputStream()); PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println(msg); out.println(msg);
out.flush(); out.flush();
threadIDOutput("Sent: " + msg); threadIDOutput("Sent: \"" + msg + "\" to " + destinationName + " on port: " + socket.getPort());
} }
catch (IOException e) { catch (IOException e) {
threadIDErr("Error: " + e); threadIDErr("Error: " + e);
} }
} }
protected void send(String msg, String hostname, int port) { protected void send(String msg, String hostname, int port, String destinationName) {
try { try {
Socket socket = new Socket(hostname, port); Socket socket = new Socket(hostname, port);
PrintWriter out = new PrintWriter(socket.getOutputStream()); PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println(msg); out.println(msg);
out.flush(); out.flush();
threadIDOutput("Sent: " + msg); threadIDOutput("Sent: \"" + msg + "\" to " + destinationName);
} }
catch (IOException e) { catch (IOException e) {
threadIDErr("Error: " + e); threadIDErr("Error: " + e);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment