I don't think that writing an error in this case is such a good idea. Usually people set the high water mark to a very high value and if that is reached, you'll likely get thousands of error messages here.

I'd likely do something like this:

```c
/* In drop_metric() */
cdtime_t now = cdtime ();
if ((now - last_drop_time) > TIME_T_TO_CDTIME_T (60))
  ERROR ("Low water mark reached, dropping a metric.");
last_drop_time = now;
return (1); /* true => drop the metric. */
```

This way at most one message is printed every 60 seconds.