[
https://issues.apache.org/jira/browse/MAPREDUCE-6542?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15005935#comment-15005935
]
Daniel Templeton commented on MAPREDUCE-6542:
---------------------------------------------
[~piaoyu zhang], thanks for the new patch. We're getting closer. Three more
things I'd like to see:
# Mark the old {{getFormattedTimeWithDiff()}} method as {{@Deprecated}}
# Refactor both the {{getFormattedTimeWithDiff()}} methods to call a new
private method that contains all the replicated logic. Something like
{{private static getFormattedTimeWithDiff(String formattedFinishTime, long
startTime)}}
# Use {{StringBuilder}} instead of {{StringBuffer}}. {{StringBuffer}} is MT
safe, but the places where it's used are locally scoped, so necessarily
single-threaded. {{StringBuilder}} is faster because it's not MT-safe.
(http://stackoverflow.com/questions/355089/stringbuilder-and-stringbuffer)
If you're feeling ambitious, it would also be nice to add a unit test that
tries to force concurrent access to the function.
> HistoryViewer use SimpleDateFormat,But SimpleDateFormat is not threadsafe
> -------------------------------------------------------------------------
>
> Key: MAPREDUCE-6542
> URL: https://issues.apache.org/jira/browse/MAPREDUCE-6542
> Project: Hadoop Map/Reduce
> Issue Type: Bug
> Components: jobhistoryserver
> Affects Versions: 2.2.0, 2.7.1
> Environment: CentOS6.5 Hadoop
> Reporter: zhangyubiao
> Assignee: zhangyubiao
> Attachments: MAPREDUCE-6542-v2.patch, MAPREDUCE-6542-v3.patch,
> MAPREDUCE-6542.patch
>
>
> I use SimpleDateFormat to Parse the JobHistory File before
> private static final SimpleDateFormat dateFormat =
> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
> public static String getJobDetail(JobInfo job) {
> StringBuffer jobDetails = new StringBuffer("");
> SummarizedJob ts = new SummarizedJob(job);
> jobDetails.append(job.getJobId().toString().trim()).append("\t");
> jobDetails.append(job.getUsername()).append("\t");
> jobDetails.append(job.getJobname().replaceAll("\\n",
> "")).append("\t");
> jobDetails.append(job.getJobQueueName()).append("\t");
> jobDetails.append(job.getPriority()).append("\t");
> jobDetails.append(job.getJobConfPath()).append("\t");
> jobDetails.append(job.getUberized()).append("\t");
>
> jobDetails.append(dateFormat.format(job.getSubmitTime())).append("\t");
>
> jobDetails.append(dateFormat.format(job.getLaunchTime())).append("\t");
>
> jobDetails.append(dateFormat.format(job.getFinishTime())).append("\t");
> return jobDetails.toString();
> }
> But I find I query the SubmitTime and LaunchTime in hive and compare
> JobHistory File time , I find that the submitTime and launchTime was wrong.
> Finally,I chang to use the FastDateFormat to parse the time format and the
> time become right
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)