Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        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;
        }
Esempio n. 4
0
        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");
        }