LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Да, действительно. Ну значит надо newlog=0; в начало переставить.

Насчёт ошибки не совсем соглашусь. В некоторых случаях это как раз не просто «не критично» а как раз даже желательно - не обрабатывать дубликаты сигналов, пришедших пока ты прошлый не обработал, например, если сигнал запрашивает дамп какой-нить тяжёлой статистики. В данном случае это действительно может быть теоретической проблемой, если после ротации логов мы переоткроем файл, после чего сразу случится ещё одна ротация и отправка второго сигнала - писать мы будем в старый ротированный файл. Но на практике такого не случится по двум причинам: 1) ротация делается намного реже 2) пустые файлы не ротируются, даже если ротацию запустить вручную с интервалом в 10мс, и второй сигнал переоткроет тот же файл что создан пустым после первого.

Но да, всё-таки стоит поддерживать любые варианты ротации, в т.ч. кажущиеся неадекватными, поскольку у нас никаого контракта с ротацией, кроме отправки сигнала, нет.

Алсо, у тебя теперь при каждой записи в лог будет дёргаться мютекс, что весьма небыстро и не слишком приятно.

Очень даже быстро. Быстрее чем сисколл записи что в файл что в сокет. В большинстве случаев он удовлетворится вообще юзерспейсом кажется (хотя это надо смотреть конкретные реализации в разных ОС). Ну и вообще если у мютекса проблемы со скоростью можно другое что-то использовать, я не зря там абстрактный t_lock в начале поставил. Семафоры в фрибсд точно юзерспейсные до тех пор пока не приходится ждать.

Исправление firkax, :

Да, действительно. Ну значит надо в начало переставить.

Насчёт ошибки не совсем соглашусь. В большинстве случаев это как раз не просто «не критично» а как раз даже желательно - не обрабатывать дубликаты сигналов, пришедших пока ты прошлый не обработал. В данном случае это действительно может быть теоретической проблемой, если после ротации логов мы переоткроем файл, после чего сразу случится ещё одна ротация и отправка второго сигнала - писать мы будем в старый ротированный файл. Но на практике такого не случится по двум причинам: 1) ротация делается намного реже 2) пустые файлы не ротируются, даже если ротацию запустить вручную с интервалом в 10мс, и второй сигнал переоткроет тот же файл что создан пустым после первого.

Но да, всё-таки стоит поддерживать любые варианты ротации, в т.ч. кажущиеся неадекватными, поскольку у нас никаого контракта с ротацией, кроме отправки сигнала, нет.

Алсо, у тебя теперь при каждой записи в лог будет дёргаться мютекс, что весьма небыстро и не слишком приятно.

Очень даже быстро. Быстрее чем сисколл записи что в файл что в сокет. В большинстве случаев он удовлетворится вообще юзерспейсом кажется (хотя это надо смотреть конкретные реализации в разных ОС). Ну и вообще если у мютекса проблемы со скоростью можно другое что-то использовать, я не зря там абстрактный t_lock в начале поставил. Семафоры в фрибсд точно юзерспейсные до тех пор пока не приходится ждать.

Исправление firkax, :

Да, действительно. Ну значит надо в начало переставить.

Насчёт ошибки не совсем соглашусь. В большинстве случаев это как раз не просто «не критично» а как раз даже желательно - не обрабатывать дубликаты сигналов, пришедших пока ты прошлый не обработал. В данном случае это действительно может быть теоретической проблемой, если после ротации логов мы переоткроем файл, после чего сразу случится ещё одна ротация и отправка второго сигнала - писать мы будем в старый ротированный файл. Но на практике такого не случится по двум причинам: 1) ротация делается намного реже 2) пустые файлы не ротируются, даже если ротацию запустить вручную с интервалом в 10мс, и второй сигнал переоткроет тот же файл что создан пустым после первого.

Но да, всё-таки стоит поддерживать любые варианты ротации, в т.ч. кажущиеся неадекватными, поскольку у нас никаого контракта с ротацией, кроме отправки сигнала, нет.

Алсо, у тебя теперь при каждой записи в лог будет дёргаться мютекс, что весьма небыстро и не слишком приятно.

Очень даже быстро. Быстрее чем сисколл записи что в файл что в сокет. В большинстве случаев он удовлетворится вообще юзерспейсом кажется (хотя это надо смотреть конкретные реализации в разных ОС). Ну и вообще если у мютекса проблемы со скоростью можно другое что-то использовать, я не зря там абстрактный t_lock в начале поставил.

Исходная версия firkax, :

Да, действительно. Ну значит надо в начало переставить.

Насчёт ошибки не совсем соглашусь. В большинстве случаев это как раз не просто «не критично» а как раз даже желательно - не обрабатывать дубликаты сигналов, пришедших пока ты прошлый не обработал. В данном случае это действительно может быть теоретической проблемой, если после ротации логов мы переоткроем файл, после чего сразу случится ещё одна ротация и отправка второго сигнала - писать мы будем в старый ротированный файл. Но на практике такого не случится по двум причинам: 1) ротация делается намного реже 2) пустые файлы не ротируются, даже если ротацию запустить вручную с интервалом в 10мс, и второй сигнал переоткроет тот же файл что создан пустым после первого.

Но да, всё-таки стоит поддерживать любые варианты ротации, в т.ч. кажущиеся неадекватными, поскольку у нас никаого контракта с ротацией, кроме отправки сигнала, нет.

Алсо, у тебя теперь при каждой записи в лог будет дёргаться мютекс, что весьма небыстро и не слишком приятно.

Очень даже быстро. Быстрее чем сисколл записи что в файл что в сокет. В большинстве случаев он удовлетворится вообще юзерспейсом. Ну и вообще если у мютекса проблемы со скоростью можно другое что-то использовать, я не зря там абстрактный t_lock в начале поставил.