Hi, All!лог:
Fatal: Time just moved backwards by 7 seconds. This might cause a lot of problems, so I'll just kill myself now.Народ, помогите отучить Dovecot делать проверку времени или нереагировать на время так болезненно.
Заранее спасибо.
>лог:
>Fatal: Time just moved backwards by 7 seconds. This might cause a
>lot of problems, so I'll just kill myself now.google.ru: dovecot "Fatal: Time just moved backwards"
http://www.dovecot.org/list/dovecot/2007-March/020367.html и далее
Версию "по-новее" взять (или по-старее?)? Там ещё sleep-ов понавтыкали...
Или часы-батарейку-ntpd попытаться "починить"...
>Версию "по-новее" взять (или по-старее?)? Там ещё sleep-ов понавтыкали...
>Или часы-батарейку-ntpd попытаться "починить"...версии разные перепробывал
батарейка да - сраная
падает именно после синхронизации временино вопрос в другом: Как отучить Dovecot от такой реакции?
нашел в исходниках ioloop.c такой кусок кода:........................
if (ioloop_time > ioloop_timeval.tv_sec) {
time_t diff = ioloop_time - ioloop_timeval.tv_sec;/* Note that this code is here only because this is the easiest
place to check for this. The I/O loop code itself could be
easily fixed to work with time moving backwards, but there's
really no point because there are a lot of other places
which may break in more or less bad ways, such as files'
timestamps moving backwards. */
if (diff > IOLOOP_MAX_TIME_BACKWARDS_SLEEP) {
i_fatal("Time just moved backwards by %ld seconds. "
"This might cause a lot of problems, "
"so I'll just kill myself now. "
"http://wiki.dovecot.org/TimeMovedBackwards",
(long)diff);
} else {
i_error("Time just moved backwards by %ld seconds. "
"I'll sleep now until we're back in present. "
"http://wiki.dovecot.org/TimeMovedBackwards",
(long)diff);
/* Sleep extra second to make sure usecs also grows. */
diff++;while (diff > 0 && sleep(diff) != 0) {
/* don't use sleep()'s return value, because
it could get us to a long loop in case
interrupts just keep coming */
diff = ioloop_time - time(NULL) + 1;
}/* Try again. */
io_loop_handle_timeouts(ioloop, TRUE);
}
}
.........................что если убрать функцию i_fatal?
насколько это опасно?ЗЫ смущают коменты...
Лучше измените значение IOLOOP_MAX_TIME_BACKWARDS_SLEEP, лучше получить засыпание на несколько секунд, чем проблемы в работе, которые вовсе необязательно сразу проявятся.
>Лучше измените значение IOLOOP_MAX_TIME_BACKWARDS_SLEEP, лучше получить засыпание на несколько секунд, чем проблемы
>в работе, которые вовсе необязательно сразу проявятся.Судя по всему через конфиги и параметры вылечить не получится.
Я уже думал над изменением этого параметра.
Он равен 5.
Попробую выставить 7200 (2ч.)
Спасибо.
>>Лучше измените значение IOLOOP_MAX_TIME_BACKWARDS_SLEEP, лучше получить засыпание на несколько секунд, чем проблемы
>>в работе, которые вовсе необязательно сразу проявятся.
>
>Судя по всему через конфиги и параметры вылечить не получится.
>Я уже думал над изменением этого параметра.
>Он равен 5.
>Попробую выставить 7200 (2ч.)
>Спасибо.всё оказалось намного проще! Нужно лишь добавить ключ "-x" в строку запуска ntpd, чтобы часы подводились плавно, а не мгновенно. Тогда ничего падать не будет ))
как пример у меня:
/usr/sbin/ntpd -p /var/run/ntpd.pid -u 106:110 -g -x
# postfix stop
# cd /usr/ports/mail/dovecot && make deinstall
# sysinstall (set TZ)
# make install clean
# /usr/local/etc/rc.d/dovecot start
# postfix startМне это помогло.