public void fix(String id) throws FileSystemException {
		ArrayList<String> failList = new ArrayList<String>();
		ArrayList<String> doneList = new ArrayList<String>();
		int location = 0, pos = 0;
		for(String s: dataNodeLocations){
			if(s.equals(id)){
				failList.add(s);
				location = pos;
			}
			else
				doneList.add(s);
			pos++;
		}
		if(failList.size() == 0)
			return;
		try {
			dataNodeLocations[location] = "";
			ArrayList<String> alternate = NameNode.instance.getNewLocations(doneList.get(0), doneList, failList);
			if(alternate ==  null)
				throw new FileSystemException("Fixing the block failed");
			dataNodeLocations[location] = alternate.get(0);
			
			Message m = new Message("sendFile");
			m.fileName = blockName;
			m.sendLocation = dataNodeLocations[location];
			try {
				Socket socket = Communicator.CreateDataSocket(doneList.get(0));
				Message result = Communicator.sendAndReceiveMessage(socket, m);
				socket.close();
				if(result.type.equals("fail"))
					throw new FileSystemException("Fixing the block fail");
					
			} catch (IOException | ClassNotFoundException e) {
				throw new FileSystemException("Fixing the block failed2");
			} 
		} catch (RemoteException | InvalidDataNodeException e) {
			Logger.log("Can't happen");
			e.printStackTrace();
		}
	}