temp.add(action);
arrangedMap.put(jobID, temp);
}
HadoopCallTreeRecorder recorder = HadoopCallTreeRecorder.getInstance();
Invocation invocation = recorder.getInvocation();
String hostName = recorder.takeHostname();
long startTime = recorder.takeStartTime();
// TaskTrackerStatus��JobID����callTree��o�^����B
HashMap<String, CallTree> callTreeMap = recorder.takeAllCallTree();
HashMap<String, HadoopCallTreeNode> callTreeNodeMap = recorder.takeAllCallTreeNode();
// CallTree��CallTreeNode�̂ǂ��炩�Е����������擾�ł��Ȃ��ꍇ�̓G���[
if (callTreeMap == null ^ callTreeNodeMap == null)
return false;
// ���CallTree
if (callTreeMap != null)
{
// CallTree����CallTreeNode�����قȂ�ꍇ�̓G���[
if (callTreeMap.size() != callTreeNodeMap.size())
return false;
// ��O��ۑ��������ǂ����̃t���O
boolean saveException = false;
Set<String> jobIDSet = callTreeMap.keySet();
for (String jobID : jobIDSet)
{
CallTree callTree = callTreeMap.get(jobID);
HadoopCallTreeNode node = callTreeNodeMap.get(jobID);
// CallTreeNode���擾�ł��Ȃ��ꍇ�͏����𒆒f����B
if (node == null)
return false;
// ��Ԓl�̍X�V���m�F����B
ArrayList<HadoopTaskStatus> taskStatusList = node
.getHadoopInfo().getTaskStatuses();
HadoopObjectAnalyzer.updateTaskStatuses(thisObject, taskStatusList);
// �v�����̕ۑ����s��
HadoopMeasurementInfo measurementInfo = HadoopMeasurementInfo.getInstance();
measurementInfo.addToTaskTrackerStatusList(node.getHadoopInfo());
SystemLogger.getInstance().debug("HadoopRecorder : node.getHadoopInfo() " + node.getHadoopInfo());
try
{
// �A���[���ʒm�����A�C�x���g�o�͏������s���B
recordAndAlarmEvents(callTree, callTreeRecorder, telegramId);
node.setEndTime(System.currentTimeMillis());
addEndVMStatus(node, null, callTreeRecorder);
if (cause != null && callTree.getCause() != cause)
{
callTreeRecorder.setExceptionOccured(true);
if (!saveException)
{
invocation.addThrowable(cause);
saveException = true;
}
callTree.setCause(cause);
if (config__.isAlarmException())
{
// ����������O���L�^������
node.setThrowable(cause);
node.setThrowTime(System.currentTimeMillis());
}
}
// JobID�ɑΉ�����TaskTrackerAction�������CallTreeNode�ɐݒ�
if (arrangedMap.containsKey(jobID))
{
node.getHadoopInfo().setTaskTrackerActions(arrangedMap.get(jobID));
// �㏈���̂��߂�Map����폜
arrangedMap.remove(jobID);
}
recorder.addCallTree(jobID, callTree);
if (invocation.getAlarmThreshold() != Invocation.THRESHOLD_NOT_SPECIFIED ||
invocation.getAlarmCpuThreshold() != Invocation.THRESHOLD_NOT_SPECIFIED)
{
// �ȉ��ACallTreeNode��root�̏ꍇ�A�܂���臒l���ʂɎw�肳��Ă���ꍇ�̏����B
// CallTreeNode��root�ŁA���v�l�L�^��臒l���Ă����ꍇ�ɁA�g�����U�N�V�������L�^����B
if (node.getAccumulatedTime() >= config__.getStatisticsThreshold())
recordTransaction(node);