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."); } }