Ack.

Maybe you could consider if it makes sense to do the following 
improvement, though:

Log to syslog ONCE until the error goes away. This could be done for all 
values of errno (execpt EAGAIN and EINTR) by introducing a flag. When 
write fails, log to syslog once and set the flag. Don't log any more to 
syslog as long as the flag is set. If write is successful again, clear 
the flag.

BTW from a quick look this code seems to contain several problems (not 
related to your patch). Why is it checking for EAGAIN when the file was 
not opened non-blocking? Shouldn't it check for EINTR instead? And maybe 
the file ought to be opened non-blocking? Further up in the code, I see 
wrong usage of return value from snprintf and vsnprintf: these functions 
return -1 on error, and they can return a value larger than maximum 
buffer size in case the string would have overflowed the buffer. This is 
not checked by the code! And the loop (why is it using goto instead of 
an ordinary while loop, btw?) is wrong. If we get EAGAIN, the variable 
"i" will have the value -1, which is used as size in the next call to 
write(trace_fd, log_string, i). Sigh! Three bugs in the same function.

regards,
Anders Widell

2013-12-13 13:47, Hans Feldt skrev:
>   osaf/libs/core/common/logtrace.c |  2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
>
>
> diff --git a/osaf/libs/core/common/logtrace.c 
> b/osaf/libs/core/common/logtrace.c
> --- a/osaf/libs/core/common/logtrace.c
> +++ b/osaf/libs/core/common/logtrace.c
> @@ -120,7 +120,7 @@ write_retry:
>       if (i == -1) {
>               if (errno == EAGAIN)
>                       goto write_retry;
> -             else
> +             else if (errno != ENOSPC)
>                       syslog(LOG_ERR, "logtrace: write failed, %s", 
> strerror(errno));
>       }
>   }


------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to