YARN-570. Time strings are formated in different timezone. (Akira Ajisaka and Peng Zhang via kasha)

This commit is contained in:
Karthik Kambatla 2014-11-11 13:22:48 -08:00
parent 99d9d0c2d1
commit 456b973819
3 changed files with 31 additions and 2 deletions

View File

@ -65,6 +65,9 @@ Release 2.7.0 - UNRELEASED
YARN-2735. diskUtilizationPercentageCutoff and diskUtilizationSpaceCutoff
are initialized twice in DirectoryCollection. (Zhihai Xu via kasha)
YARN-570. Time strings are formated in different timezone.
(Akira Ajisaka and Peng Zhang via kasha)
OPTIMIZATIONS
BUG FIXES

View File

@ -29,10 +29,11 @@ import org.apache.hadoop.classification.InterfaceAudience.Private;
public class Times {
private static final Log LOG = LogFactory.getLog(Times.class);
// This format should match the one used in yarn.dt.plugins.js
static final ThreadLocal<SimpleDateFormat> dateFormat =
new ThreadLocal<SimpleDateFormat>() {
@Override protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("d-MMM-yyyy HH:mm:ss");
return new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");
}
};

View File

@ -78,13 +78,38 @@ function renderHadoopDate(data, type, full) {
if(data === '0'|| data === '-1') {
return "N/A";
}
return new Date(parseInt(data)).toUTCString();
var date = new Date(parseInt(data));
var monthList = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var weekdayList = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
var offsetMinutes = date.getTimezoneOffset();
var offset
if (offsetMinutes <= 0) {
offset = "+" + zeroPad(-offsetMinutes / 60 * 100, 4);
} else {
offset = "-" + zeroPad(offsetMinutes / 60 * 100, 4);
}
// EEE MMM dd HH:mm:ss Z yyyy
return weekdayList[date.getDay()] + " " +
monthList[date.getMonth()] + " " +
date.getDate() + " " +
zeroPad(date.getHours(), 2) + ":" +
zeroPad(date.getMinutes(), 2) + ":" +
zeroPad(date.getSeconds(), 2) + " " +
offset + " " +
date.getFullYear();
}
// 'sort', 'type' and undefined all just use the number
// If date is 0, then for purposes of sorting it should be consider max_int
return data === '0' ? '9007199254740992' : data;
}
function zeroPad(n, width) {
n = n + '';
return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;
}
function renderHadoopElapsedTime(data, type, full) {
if (type === 'display' || type === 'filter') {
var timeDiff = parseInt(data);