Hi Kevin,
this patch did not apply ... the Enqueue at head part does not
exist in the svn version of the daemon.
cheers
tobi
Friday kevin brintnall wrote:
> A RRD file with no values would not be enqueued, so it would never be
> flushed. Therefore, its "flushed" condition would never be broadcast.
> Therefore, a "flush" issued against a file with no updates would block
> until the file was written to disk for another reason (i.e. periodic
> timer, flush after update, etc).
>
> If we have no values, do not try to enqueue the RRD, and do not block
> waiting for it to be flushed.
> ---
> src/rrd_daemon.c | 12 +++++++-----
> 1 files changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/src/rrd_daemon.c b/src/rrd_daemon.c
> index d6f77eb..36d090c 100644
> --- a/src/rrd_daemon.c
> +++ b/src/rrd_daemon.c
> @@ -745,12 +745,14 @@ static int flush_file (const char *filename) /* {{{ */
> return (ENOENT);
> }
>
> - /* Enqueue at head */
> - enqueue_cache_item (ci, HEAD);
> - pthread_cond_signal (&cache_cond);
> + if (ci->values > 0)
> + {
> + /* Enqueue at head */
> + enqueue_cache_item (ci, HEAD);
> + pthread_cond_signal (&cache_cond);
> + pthread_cond_wait(&ci->flushed, &cache_lock);
> + }
>
> - pthread_cond_wait(&ci->flushed, &cache_lock);
> - assert((ci->flags & CI_FLAGS_IN_QUEUE) == 0);
> pthread_mutex_unlock(&cache_lock);
>
> return (0);
>
--
Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
http://it.oetiker.ch [EMAIL PROTECTED] ++41 62 775 9902 / sb: -9900
_______________________________________________
rrd-developers mailing list
[email protected]
https://lists.oetiker.ch/cgi-bin/listinfo/rrd-developers