@Override
	public void run() {
		DistributedBackupSystem.fManager.updateRepDegree(fileID, chunkNo, addr, false);
		if(!DistributedBackupSystem.fManager.chunkCorrectRepDegree(fileID, chunkNo)) {
			int waitTime = (int)(Math.random() * 400);
			try {
				Thread.sleep(waitTime);
			} catch (InterruptedException e1) {
				e1.printStackTrace();
			}
			
			for(Packet p : messages) {
				if(p.getPacketType().equals("PUTCHUNK") && Packet.bytesToHex(p.getFileID()).equals(Packet.bytesToHex(fileID)) && chunkNo == p.getChunkNo()) {
					return;
				}
			}
			
			DistributedBackupSystem.tManager.executeTask(TaskManager.TaskTypes.BACKUPCHUNK, DistributedBackupSystem.fManager.getChunk(fileID, chunkNo));
		}
	}