commit syslog-ng for openSUSE:Factory
Hello community, here is the log from the commit of package syslog-ng for openSUSE:Factory checked in at Fri Feb 5 14:30:59 CET 2010. -------- --- syslog-ng/syslog-ng.changes 2009-02-04 04:15:07.000000000 +0100 +++ /mounts/work_src_done/STABLE/syslog-ng/syslog-ng.changes 2010-01-18 17:01:17.000000000 +0100 @@ -1,0 +2,12 @@ +Mon Jan 18 16:41:20 CET 2010 - mt@suse.de + +- Fixed to inform user instead to fail when the removed summary() + suse extension option were used in old config (bnc#519653). + +------------------------------------------------------------------- +Fri Jan 15 15:31:16 CET 2010 - mt@suse.de + +- Applied POLLERR handling fixes for logreader/logwriter causing + 100% CPU usage e.g. when a UDP destination is down (bnc#541802). + +------------------------------------------------------------------- calling whatdependson for head-i586 New: ---- syslog-ng-2.0.9-summary-is-removed.diff syslog-ng-HP-UX-100-CPU-spinning.diff syslog-ng-logwriter-100-CPU-usage.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ syslog-ng.spec ++++++ --- /var/tmp/diff_new_pack.mPjHlI/_old 2010-02-05 14:29:15.000000000 +0100 +++ /var/tmp/diff_new_pack.mPjHlI/_new 2010-02-05 14:29:15.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package syslog-ng (Version 2.0.9) # -# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -21,8 +21,8 @@ Name: syslog-ng %define eventlog_version 0.2.7 Version: 2.0.9 -Release: 28 -License: GPL v2 only +Release: 29 +License: GPLv2 Group: System/Daemons Summary: The new-generation syslog-daemon Url: http://www.balabit.com/products/syslog_ng/ @@ -48,6 +48,9 @@ Patch17: syslog-ng-no-perm-change.dif Patch18: syslog-ng-libnet-dynamic.dif Patch20: syslog-ng-chroot_CVE-2008-5110.dif +Patch21: syslog-ng-HP-UX-100-CPU-spinning.diff +Patch22: syslog-ng-logwriter-100-CPU-usage.diff +Patch23: syslog-ng-2.0.9-summary-is-removed.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: bison flex gcc-c++ glib2-devel pkgconfig BuildRequires: klogd libnet python tcpd-devel @@ -93,6 +96,9 @@ %patch17 -p0 %patch18 -p0 %patch20 -p0 +%patch21 -p1 +%patch22 -p1 +%patch23 -p0 cp -a $RPM_SOURCE_DIR/syslog-ng.README README.SuSE cp -a $RPM_SOURCE_DIR/syslog-ng.rc-script . cp -a $RPM_SOURCE_DIR/syslog-ng.conf.default . ++++++ syslog-ng-2.0.9-summary-is-removed.diff ++++++ --- src/cfg-grammar.y +++ src/cfg-grammar.y 2010/01/15 15:57:03 @@ -62,7 +62,7 @@ gint last_addr_family = AF_INET; %token KW_USER KW_DOOR KW_SUN_STREAMS KW_PROGRAM /* option items */ -%token KW_FSYNC KW_MARK_FREQ KW_STATS_FREQ KW_FLUSH_LINES KW_FLUSH_TIMEOUT KW_LOG_MSG_SIZE KW_FILE_TEMPLATE KW_PROTO_TEMPLATE +%token KW_FSYNC KW_MARK_FREQ KW_STATS_FREQ KW_SUMMARY_FREQ KW_FLUSH_LINES KW_FLUSH_TIMEOUT KW_LOG_MSG_SIZE KW_FILE_TEMPLATE KW_PROTO_TEMPLATE %token KW_CHAIN_HOSTNAMES KW_NORMALIZE_HOSTNAMES KW_KEEP_HOSTNAME KW_CHECK_HOSTNAME KW_BAD_HOSTNAME %token KW_KEEP_TIMESTAMP @@ -734,6 +734,7 @@ options_items options_item : KW_MARK_FREQ '(' NUMBER ')' { configuration->mark_freq = $3; } | KW_STATS_FREQ '(' NUMBER ')' { configuration->stats_freq = $3; } + | KW_SUMMARY_FREQ '(' NUMBER ')' { msg_notice("The summary option has been removed, please remove from config", evt_tag_int("summary", $3), NULL); } | KW_FLUSH_LINES '(' NUMBER ')' { configuration->flush_lines = $3; } | KW_FLUSH_TIMEOUT '(' NUMBER ')' { configuration->flush_timeout = $3; } | KW_CHAIN_HOSTNAMES '(' yesno ')' { configuration->chain_hostnames = $3; } @@ -907,4 +908,4 @@ yyparser_reset(void) last_reader_options = NULL; last_writer_options = NULL; last_template = NULL; -} \ Kein Zeilenumbruch am Dateiende. +} --- src/cfg-lex.l +++ src/cfg-lex.l 2010/01/15 15:43:31 @@ -76,6 +76,7 @@ static struct keyword keywords[] = { { "mark", KW_MARK_FREQ }, /* obsolete */ { "stats_freq", KW_STATS_FREQ }, { "stats", KW_STATS_FREQ }, /* obsolete */ + { "summary", KW_SUMMARY_FREQ }, /* obsolete */ { "flush_lines", KW_FLUSH_LINES }, { "flush_timeout", KW_FLUSH_TIMEOUT }, { "sync_freq", KW_FLUSH_LINES }, /* obsolete */ ++++++ syslog-ng-HP-UX-100-CPU-spinning.diff ++++++
From c40a607eb5e4b4c83a2a29c20dd64644174f30a7 Mon Sep 17 00:00:00 2001 From: Balazs Scheidler
Date: Thu, 6 Nov 2008 11:53:32 +0100 Subject: [PATCH 1/2] fixed 100% CPU spinning on HP-UX upon a connection break
As I see the problem seems to be caused by the fact that HP-UX returns POLLERR only without the other bits (e.g. POLLHUP) syslog-ng would handle this gracefully if either the other bits would be set, or there'd be some pending messages to send, in which case a normal write() error would occur. --- src/logwriter.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/src/logwriter.c b/src/logwriter.c index bb82b43..7a5fcf7 100644 --- a/src/logwriter.c +++ b/src/logwriter.c @@ -139,6 +139,13 @@ log_writer_fd_dispatch(GSource *source, log_writer_broken(self->writer, NC_CLOSE); return FALSE; } + else if (self->pollfd.revents & (G_IO_ERR)) + { + msg_error("POLLERR occurred while idle", + evt_tag_int("fd", self->fd->fd), + NULL); + log_writer_broken(self->writer, NC_WRITE_ERROR); + } else if (self->writer->queue->length || self->writer->partial) { if (!log_writer_flush_log(self->writer, self->fd)) -- 1.6.4.2 ++++++ syslog-ng-logwriter-100-CPU-usage.diff ++++++
From ab0b9b75a2f69e9e66fe5727fe6c5a4ca4acac99 Mon Sep 17 00:00:00 2001 From: Balazs Scheidler
Date: Mon, 5 Oct 2009 12:33:07 +0200 Subject: [PATCH 2/2] [logwriter] fixed a 100% CPU usage if a udp destination is down
Sometimes when a UDP destination is down we get POLLERR from poll. This was not always propagated to the dispatch handler by GLib if pollfd.events was 0. This patch makes sure that at least G_IO_ERR is present in the "events" field in logreader/logwriter. Reported-By: Sandor Geller --- src/logreader.c | 4 ++-- src/logwriter.c | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/logreader.c b/src/logreader.c index 9ca53a0..58ee2aa 100644 --- a/src/logreader.c +++ b/src/logreader.c @@ -62,7 +62,7 @@ log_reader_fd_prepare(GSource *source, #endif self->pollfd.revents = 0; - self->pollfd.events = 0; + self->pollfd.events = G_IO_ERR; /* never indicate readability if flow control prevents us from sending messages */ @@ -83,7 +83,7 @@ log_reader_fd_prepare(GSource *source, return FALSE; } - self->pollfd.events = G_IO_IN; + self->pollfd.events |= G_IO_IN; return FALSE; } diff --git a/src/logwriter.c b/src/logwriter.c index 7a5fcf7..79e1a0a 100644 --- a/src/logwriter.c +++ b/src/logwriter.c @@ -50,12 +50,14 @@ log_writer_fd_prepare(GSource *source, LogWriterWatch *self = (LogWriterWatch *) source; gint num_elements = self->writer->queue->length / 2; + self->pollfd.events = G_IO_ERR; + self->pollfd.revents = 0; if (self->writer->partial || (self->writer->options->flush_lines == 0 && num_elements != 0) || (self->writer->options->flush_lines > 0 && num_elements >= self->writer->options->flush_lines)) { /* we need to flush our buffers */ - self->pollfd.events = self->fd->cond; + self->pollfd.events |= self->fd->cond; } else if (num_elements) { @@ -96,13 +98,10 @@ log_writer_fd_prepare(GSource *source, } return FALSE; } - else - self->pollfd.events = 0; if (self->writer->flags & LW_DETECT_EOF) self->pollfd.events |= G_IO_HUP | G_IO_IN; self->flush_waiting_for_timeout = FALSE; - self->pollfd.revents = 0; return FALSE; } -- 1.6.4.2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@Hilbert.suse.de