Я столкнулся с проблемой в моем кластере oop, вызванной этой строкой кода
long endTime = System.currentTimeMillis();
if (startTime > endTime) {
System.out.println("WARNING: Clock skew between the Oozie server host and this host detected. Please fix this. " +
"Attempting to work around...");
// We don't know which one is wrong (relative to the RM), so to be safe, let's assume they're both wrong and add an
// offset in both directions
, найденной здесь
Я написал образец * Программа 1022 *, которая просто печатает текущее время в миллисекундах на узлах.
public class CurrentTimeMillisExample {
public static void main(String... args) {
long l = System.currentTimeMillis();
System.out.println(l);
}
}
Это действительно показывает, что время между узлами отличается, обычно только в миллисекундах. Проблема в том, что если узел, завершающий работу, опережает на несколько миллисекунд все, что с датами, испорчено. Я хотел бы знать, откуда java тянет время. Я использую ntptime на всех этих системах.
РЕДАКТИРОВАНИЕ1:
Примеры разницы во времени
server1: 1579614657155 - вторник, 21 января 2020 г. 8: 50: 57.155 AM GMT-05: 00
server2: 1579614693828 - вторник, 21 января 2020 г. 8: 51: 33.828 AM GMT-05: 00
server3: 1579614693035 - вторник, 21 января 2020 г. 8: 51: 33.035 AM GMT-05: 00
Таким образом, он выглядит как сервер 1 время достаточно отличается, чтобы повлиять на это. Мне все еще нужно знать, откуда java тянет это системное время?