private void GetResult(string configFile, int taskNumber = 0) { int sleptSoFar = 0; while (worker != null && worker.IsAlive) { Thread.Sleep(sleptSoFar += 500); if (sleptSoFar > SleepTime) { Response.Redirect(Request.RawUrl); } } var driver = new MapReduceDriver(configFile); var fi = new FileInfo(driver.Tasks[0].Output.Location); if (worker == null && fi.LastWriteTime.AddSeconds(5) < DateTime.Now) { Start(configFile); Response.Redirect(Request.RawUrl); } SendFile(fi); }
public StatusMessage Start(string config, IDictionary <string, string> parameters) { var statuslocal = new StatusMessage(); if (string.IsNullOrEmpty(config)) { statuslocal.Type = StatusType.Error; statuslocal.Message = "Invalid config name"; } else if (worker != null) { statuslocal.Type = StatusType.Error; statuslocal.Message = "A MapReduce is already running"; } else { driver = new MapReduceDriver(Path.Combine("configs", config)); SetParameters(driver.Tasks, parameters); worker = new Thread(new ThreadStart(MapReduceThread)); worker.Start(); status.ResultSetId = statuslocal.ResultSetId = Guid.NewGuid(); } return(statuslocal); }
private void MapReduceThread(object driver) { MapReduceDriver driverTyped = driver as MapReduceDriver; driverTyped.Progress += new ProgressDetails(RefreshStatus); driverTyped.Start(); foreach (var task in driverTyped.Tasks) { status.OutputFiles.Add(task.Output.Location); } //status.Type = UpdateType.None; //status.Created = DateTime.Now; //Session[StatusKey] = status; }
private void Start(string configFile) { if (string.IsNullOrEmpty(configFile)) { JsonMessage("config file name not provided."); return; } if (worker != null) { return; } worker = new Thread(MapReduceThread); var dr = new MapReduceDriver(configFile); worker.Start(dr); Session[WorkerThreadKey] = worker; JsonMessage("Started"); }