Example #1
0
        public void AddResult(ChunkResultMessage mapResultMessage)
        {
            Logger.Log.Instance.Info(string.Format("Base ResultsCollector. Add partial map result for JobId '{0}', ChunkId '{0}'",
                mapResultMessage.ChunkUid.JobId,
                mapResultMessage.ChunkUid.ChunkId));

            if (mapResultMessage.ChunkUid.JobId != JobId)
            {
                throw new InvalidChunkException()
                {
                    ChunkUid = mapResultMessage.ChunkUid,
                    CorrectJobId = JobId
                };
            }

            foreach (var keyValuePair in mapResultMessage.Data)
            {
                if (_results.ContainsKey(keyValuePair.Key))
                {
                    _results[keyValuePair.Key].Add(keyValuePair.Value);
                }
                else
                {
                    _results.Add(keyValuePair.Key, new List<object> { keyValuePair.Value });
                }

            }
        }
        private void _chunkResultWatcher_ChunkResultArrive(object sender, ChunkResultMessage mapResultMessage)
        {
            try
            {
                Logger.Log.Instance.Info(string.Format("JobMonitor. Chunk of {2} stage result arrived for JobId '{0}', ChunkId '{1}'. Done: {3}",
                    mapResultMessage.ChunkUid.JobId,
                    mapResultMessage.ChunkUid.ChunkId,
                    mapResultMessage.Mode,
                    mapResultMessage.Done));

                if (mapResultMessage.Mode == ProcessingMode.Map)
                {
                    _jobProcessDataCollection[mapResultMessage.ChunkUid.JobId].MapResultsCollector.AddResult(mapResultMessage);
                    if (mapResultMessage.Done)
                        _jobJobChunkRegistrator.UpdateChunkMapComplete(mapResultMessage.ChunkUid);
                }
                else if (mapResultMessage.Mode == ProcessingMode.Reduce)
                {
                    _jobProcessDataCollection[mapResultMessage.ChunkUid.JobId].ReduceResultsCollector.AddResult(mapResultMessage);
                    if (mapResultMessage.Done)
                        _jobJobChunkRegistrator.UpdateChunkReduceComplete(mapResultMessage.ChunkUid);
                }
            }
            catch (Exception ex)
            {
                Logger.Log.Instance.Exception(ex, "JobProcessManager. ChunkMapResultArrive handler failed.");
            }
        }