From: Florian Forster Date: Wed, 28 Jul 2010 12:21:07 +0000 (+0200) Subject: src/graph_list.c: Add some diagnostic output. X-Git-Tag: v4.0.0~68 X-Git-Url: https://git.octo.it/?p=collection4.git;a=commitdiff_plain;h=15fc8e0d4c830e05437ff068bb75a67fe5ea46b9 src/graph_list.c: Add some diagnostic output. --- diff --git a/src/graph_list.c b/src/graph_list.c index 1b10e25..b405476 100644 --- a/src/graph_list.c +++ b/src/graph_list.c @@ -270,15 +270,28 @@ static int gl_update_cache (void) /* {{{ */ if (status == 0) { if (statbuf.st_mtime >= gl_last_update) + { + fprintf (stderr, "gl_update_cache: Not writing to cache because it's " + "at least as new as our internal data\n"); return (0); + } + } + else + { + status = errno; + fprintf (stderr, "gl_update_cache: stat(2) failed with status %i\n", + status); + /* Continue writing the file if possible. */ } fd = open (CACHE_FILE, O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH); if (fd < 0) { - fprintf (stderr, "gl_update_cache: open(2) failed with status %i\n", errno); - return (errno); + status = errno; + fprintf (stderr, "gl_update_cache: open(2) failed with status %i\n", + status); + return (status); } memset (&lock, 0, sizeof (lock)); @@ -309,6 +322,9 @@ static int gl_update_cache (void) /* {{{ */ return (-1); } + fprintf (stderr, "gl_update_cache: Start writing data\n"); + fflush (stderr); + yajl_gen_array_open (handler); for (i = 0; i < gl_active_num; i++) @@ -322,6 +338,9 @@ static int gl_update_cache (void) /* {{{ */ yajl_gen_free (handler); close (fd); + fprintf (stderr, "gl_update_cache: Finished writing data\n"); + fflush (stderr); + return (0); } /* }}} int gl_update_cache */ @@ -656,15 +675,25 @@ static int gl_read_cache (_Bool block) /* {{{ */ now = time (NULL); - if (statbuf.st_mtime <= gl_last_update) + if (block) + { + /* Read the file. No excuses. */ + } + else if (statbuf.st_mtime <= gl_last_update) { /* Our current data is at least as new as the cache. Return. */ + fprintf (stderr, "gl_read_cache: Not using cache because " + "the internal data is newer\n"); + fflush (stderr); close (fd); return (0); } else if ((statbuf.st_mtime + UPDATE_INTERVAL) < now) { - /* We'll scan the directory anyway, so there is no need to parse the cache here. */ + /* We'll scan the directory anyway, so there is no need to parse the cache + * here. */ + fprintf (stderr, "gl_read_cache: Not using cache because it's too old\n"); + fflush (stderr); close (fd); return (0); } @@ -680,6 +709,9 @@ static int gl_read_cache (_Bool block) /* {{{ */ /* alloc funcs = */ NULL, &context); + fprintf (stderr, "gl_read_cache: Start parsing data\n"); + fflush (stderr); + while (42) { ssize_t rd_status; @@ -691,10 +723,11 @@ static int gl_read_cache (_Bool block) /* {{{ */ if ((errno == EINTR) || (errno == EAGAIN)) continue; + status = errno; fprintf (stderr, "gl_read_cache: read(2) failed with status %i\n", - errno); + status); close (fd); - return (errno); + return (status); } else if (rd_status == 0) { @@ -709,10 +742,14 @@ static int gl_read_cache (_Bool block) /* {{{ */ } } - fprintf (stderr, "gl_read_cache: Closing cache file and returning\n"); + yajl_free (handle); + gl_last_update = statbuf.st_mtime; close (fd); + fprintf (stderr, "gl_read_cache: Finished parsing data\n"); + fflush (stderr); + return (0); } /* }}} int gl_read_cache */ @@ -1039,6 +1076,10 @@ int gl_update (_Bool request_served) /* {{{ */ graph_read_config (); status = gl_read_cache (/* block = */ 1); + /* We have *something* to work with. Even if it's outdated, just get on with + * handling the request and take care of re-reading data later on. */ + if ((status == 0) && !request_served) + return (0); if ((status != 0) || ((gl_last_update + UPDATE_INTERVAL) < now))