public void getTaskData(int pos, TaskDesc td, Task task) {
		if (task.taskMD.parent != null && task.numParentDataRecv < task.taskMD.parent.size()) {
			String data = requestData(task.taskId, task.taskMD.parent.get(pos), td,
				task.taskMD.dataSize.get(pos), task.taskMD.dataNameList.get(pos));
			while (data != null && pos < task.taskMD.parent.size() 
					|| task.taskMD.dataSize.get(pos) == 0) {
				if (task.taskMD.dataSize.get(pos) > 0)
					localTime += Library.procTimePerKVSRequest;
				task.numParentDataRecv++;
				pos++;
				task.data += data;
				if (pos == task.taskMD.parent.size())
					break;
				data = requestData(task.taskId, task.taskMD.parent.get(pos), td,
						task.taskMD.dataSize.get(pos), task.taskMD.dataNameList.get(pos));
			}
		}
		if (task.taskMD.parent == null || task.numParentDataRecv == task.taskMD.parent.size())
			actExecuteTask(td);
		
		Library.globalTaskHM.put(task.taskId, task);
	}