URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 78469
[ Назад ]

Исходное сообщение
"Dovecot убивает себя :("

Отправлено Gleb , 29-Янв-08 12:14 
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 делать проверку времени или нереагировать на время так болезненно.

Заранее спасибо.


Содержание

Сообщения в этом обсуждении
"Dovecot убивает себя :("
Отправлено Andrey Mitrofanov , 29-Янв-08 12:29 
>лог:
>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 попытаться "починить"...


"Dovecot убивает себя :("
Отправлено Gleb , 29-Янв-08 12:44 
>Версию "по-новее" взять (или по-старее?)? Там ещё sleep-ов понавтыкали...
>Или часы-батарейку-ntpd попытаться "починить"...

версии разные перепробывал
батарейка да - сраная
падает именно после синхронизации времени

но вопрос в другом: Как отучить Dovecot от такой реакции?


"Dovecot убивает себя :("
Отправлено Gleb , 29-Янв-08 15:47 
нашел в исходниках 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?
насколько это опасно?

ЗЫ смущают коменты...


"Dovecot убивает себя :("
Отправлено angra , 29-Янв-08 16:26 
Лучше измените значение IOLOOP_MAX_TIME_BACKWARDS_SLEEP, лучше получить засыпание на несколько секунд, чем проблемы в работе, которые вовсе необязательно сразу проявятся.

"Dovecot убивает себя :("
Отправлено Gleb , 29-Янв-08 17:02 
>Лучше измените значение IOLOOP_MAX_TIME_BACKWARDS_SLEEP, лучше получить засыпание на несколько секунд, чем проблемы
>в работе, которые вовсе необязательно сразу проявятся.

Судя по всему через конфиги и параметры вылечить не получится.
Я уже думал над изменением этого параметра.
Он равен 5.
Попробую выставить 7200 (2ч.)
Спасибо.


"Dovecot убивает себя :("
Отправлено vvs , 05-Сен-09 00:35 
>>Лучше измените значение IOLOOP_MAX_TIME_BACKWARDS_SLEEP, лучше получить засыпание на несколько секунд, чем проблемы
>>в работе, которые вовсе необязательно сразу проявятся.
>
>Судя по всему через конфиги и параметры вылечить не получится.
>Я уже думал над изменением этого параметра.
>Он равен 5.
>Попробую выставить 7200 (2ч.)
>Спасибо.

всё оказалось намного проще! Нужно лишь добавить ключ "-x" в строку запуска ntpd, чтобы часы подводились плавно, а не мгновенно. Тогда ничего падать не будет ))

как пример у меня:

/usr/sbin/ntpd -p /var/run/ntpd.pid -u 106:110 -g -x

http://zenway.ru/


"Dovecot убивает себя :("
Отправлено Aivanzipper , 25-Ноя-09 18:37 
# postfix stop
# cd /usr/ports/mail/dovecot && make deinstall
# sysinstall (set TZ)
# make install clean
# /usr/local/etc/rc.d/dovecot start
# postfix start

Мне это помогло.