I'm in the process of adding special error handling to rrd_client in order to be able to deal with more error situations when fetching data from a large number of remote rrdcached's. One issue I'm bumping into is this code in data_fetch (summarized): rrdc_connect (rrd_daemon); if (rrdc_is_connected (rrd_daemon)) status = rrdc_fetch (im->gdes[i].rrd, else if ((rrd_fetch_fn(im->gdes[i].rrd, this has the effect that if the connection fails it "falls back" to local file access, which makes no sense to me. If a data series is supposed to come from the daemon then what is the use-case for retrieving "some" local data from a file that happens to have the same pathname? I would much rather see this code look like: if(rrd_daemon != NULL) fetch remotely and error if it fails else fetch data locally and error if it fails end Is there something I'm missing? Thanks! Thorsten
NB: some of the things we're working on is having explicit timeouts for remote connections and being able to fill the dataset with NaN if the remote fetch fails. The motivation is that we're producing graphs that may retrieve more than 100 remote RRDs from potentially as many rrdcached servers and throwing the whole graph down the drain if just one doesn't respond obviously doesn't work. We're also looking into using libevent to run all the connections in data_fetch in parallel, which would be really sweet. _______________________________________________ rrd-developers mailing list rrd-developers@lists.oetiker.ch https://lists.oetiker.ch/cgi-bin/listinfo/rrd-developers