Skip to content

Commit

Permalink
Problem with multiple DS solved.
Browse files Browse the repository at this point in the history
  • Loading branch information
mariya-rightscale committed Jul 22, 2010
1 parent 21f9516 commit d16f981
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 35 deletions.
6 changes: 6 additions & 0 deletions src/rrd_daemon.c
Expand Up @@ -1950,6 +1950,12 @@ static int handle_request_help (HANDLER_PROTO) /* {{{ */

if (help && (help->syntax || help->help))
{
printf("************Delaying help***********");
int x, y;
x = rand();
y = (x % 10) + 5;
sleep(y);

char tmp[CMD_MAX];

snprintf(tmp, sizeof(tmp)-1, "Help for %s\n", help->cmd);
Expand Down
73 changes: 38 additions & 35 deletions src/rrd_graph.c
Expand Up @@ -236,7 +236,7 @@ enum gf_en gf_conv(
conv_if(AREA, GF_AREA);
conv_if(GRAD, GF_GRAD);
conv_if(STACK, GF_STACK);
conv_if(HEAT, GF_HEAT); // HEAT
conv_if(HEAT, GF_HEAT);
conv_if(TICK, GF_TICK);
conv_if(TEXTALIGN, GF_TEXTALIGN);
conv_if(DEF, GF_DEF);
Expand Down Expand Up @@ -820,38 +820,33 @@ int data_fetch(
/* only GF_DEF elements fetch data */
if (im->gdes[i].gf != GF_DEF)
continue;
/*
printf("******************New DEF.************");
printf("variable %s\n", im->gdes[i].ds_nam);
printf("rrd file %s\n", im->gdes[i].rrd);
printf("CF %d\n", im->gdes[i].cf);
printf("Start %ld Stop %ld Step %ld \n", im->gdes[i].start, im->gdes[i].end, im->gdes[i].step);
printf("DS count %d \n", im->gdes[i].ds_cnt );*/
skip = 0;
/* do we have it already ? */
for (ii = 0; ii < i; ii++) {
if (im->gdes[ii].gf != GF_DEF)
continue;
if ((strcmp(im->gdes[i].rrd, im->gdes[ii].rrd) == 0)
&& (im->gdes[i].cf == im->gdes[ii].cf)
&& (im->gdes[i].cf_reduce == im->gdes[ii].cf_reduce)
&& (im->gdes[i].start_orig == im->gdes[ii].start_orig)
&& (im->gdes[i].end_orig == im->gdes[ii].end_orig)
&& (im->gdes[i].step_orig == im->gdes[ii].step_orig)) {
/* OK, the data is already there.
** Just copy the header portion
*/
im->gdes[i].start = im->gdes[ii].start;
im->gdes[i].end = im->gdes[ii].end;
im->gdes[i].step = im->gdes[ii].step;
im->gdes[i].ds_cnt = im->gdes[ii].ds_cnt;
im->gdes[i].ds_namv = im->gdes[ii].ds_namv;
im->gdes[i].data = im->gdes[ii].data;
im->gdes[i].data_first = 0;
skip = 1;
if(!im->generate_nan){
for (ii = 0; ii < i; ii++) {
if (im->gdes[ii].gf != GF_DEF)
continue;
if ((strcmp(im->gdes[i].rrd, im->gdes[ii].rrd) == 0)
&& (im->gdes[i].cf == im->gdes[ii].cf)
&& (im->gdes[i].cf_reduce == im->gdes[ii].cf_reduce)
&& (im->gdes[i].start_orig == im->gdes[ii].start_orig)
&& (im->gdes[i].end_orig == im->gdes[ii].end_orig)
&& (im->gdes[i].step_orig == im->gdes[ii].step_orig)) {
/* OK, the data is already there.
** Just copy the header portion
*/
im->gdes[i].start = im->gdes[ii].start;
im->gdes[i].end = im->gdes[ii].end;
im->gdes[i].step = im->gdes[ii].step;
im->gdes[i].ds_cnt = im->gdes[ii].ds_cnt;
im->gdes[i].ds_namv = im->gdes[ii].ds_namv;
im->gdes[i].data = im->gdes[ii].data;
im->gdes[i].data_first = 0;
skip = 1;
}
if (skip)
break;
}
if (skip)
break;
}
if (!skip) {
unsigned long ft_step = im->gdes[i].step; /* ft_step will record what we got from fetch */
Expand Down Expand Up @@ -886,23 +881,31 @@ int data_fetch(
&im->gdes[i].data);
if (status != 0){
generate_nan(im, i);
im->generate_nan = 1;
}else{
im->generate_nan = 0;
}
}else
{
generate_nan(im, i);
im->generate_nan = 1;
}
}
else
{
if ((rrd_fetch_fn(im->gdes[i].rrd,
status = rrd_fetch_fn(im->gdes[i].rrd,
im->gdes[i].cf,
&im->gdes[i].start,
&im->gdes[i].end,
&ft_step,
&im->gdes[i].ds_cnt,
&im->gdes[i].ds_namv,
&im->gdes[i].data)) == -1) {
generate_nan(im, i);
&im->gdes[i].data);
if(status == -1){
generate_nan(im, i);
im->generate_nan = 1;
}else{
im->generate_nan = 0;
}
}
im->gdes[i].data_first = 1;
Expand Down Expand Up @@ -963,7 +966,6 @@ int generate_nan(
{
data[k] = DNAN;
}
printf("~~~~~~~~~~~~~~~~~ Done GENERATING NaN ~~~~~~~~~~~~~~~~~~~~\n");
}else{
return -1;
}
Expand Down Expand Up @@ -1403,7 +1405,7 @@ int data_proc(
if (im->logarithmic)
im->maxval = maxval * 2.0;
else{
if(im->heat_base > 0)
if(im->heat_base >= 0)
im->maxval = maxval + im->tot_heat_height;
else
im->maxval = maxval;
Expand Down Expand Up @@ -4305,6 +4307,7 @@ void rrd_graph_init(
im->heat_gap = 0.0;
im->heat_base = 0.0;
im->c_timeout = 0;
im->generate_nan = 0;

im->surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 10, 10);
im->cr = cairo_create(im->surface);
Expand Down
1 change: 1 addition & 0 deletions src/rrd_graph.h
Expand Up @@ -210,6 +210,7 @@ typedef struct image_desc_t {
int nan_fill; /* boolean. If true, generate nan if fetch does not succeed? */
int conn_to; /* boolean. If true, connect to rrdcached using user-specified timeout */
int c_timeout; /*Connect timeout*/
int generate_nan; /* boolean. Indicates if nan series had been generated or not */
double tot_heat_height; /*total height of the heat-map*/
long xsize, ysize; /* graph area size in pixels */
struct gfx_color_t graph_col[__GRC_END__]; /* real colors for the graph */
Expand Down

0 comments on commit d16f981

Please sign in to comment.