diff --git a/src/ckdb.h b/src/ckdb.h index 95a5791f..ed9d615d 100644 --- a/src/ckdb.h +++ b/src/ckdb.h @@ -55,7 +55,7 @@ #define DB_VLOCK "1" #define DB_VERSION "1.0.0" -#define CKDB_VERSION DB_VERSION"-1.034" +#define CKDB_VERSION DB_VERSION"-1.035" #define WHERE_FFL " - from %s %s() line %d" #define WHERE_FFL_HERE __FILE__, __func__, __LINE__ diff --git a/src/ckdb_dbio.c b/src/ckdb_dbio.c index e5528df3..033112af 100644 --- a/src/ckdb_dbio.c +++ b/src/ckdb_dbio.c @@ -3313,6 +3313,11 @@ flail: return ok; } +/* Keep some simple stats on how often shares are out of order + * and how often they produce a WARNING due to OOOLIMIT */ +static int64_t ooof0, ooof, oool0, oool; +#define OOOLIMIT -2.0 + bool _sharesummary_update(PGconn *conn, SHARES *s_row, SHAREERRORS *e_row, K_ITEM *ss_item, char *by, char *code, char *inet, tv_t *cd, WHERE_FFL_ARGS) { @@ -3442,15 +3447,21 @@ bool _sharesummary_update(PGconn *conn, SHARES *s_row, SHAREERRORS *e_row, K_ITE if (td < 0.0) { char *tmp1, *tmp2; int level; - // DEBUG only for shares out of order up to 1 second - if (td < -1.0) + // DEBUG only for shares out of order up to OOOLIMIT seconds + if (td < OOOLIMIT) { level = LOG_WARNING; - else + ooof++; + } else { level = LOG_DEBUG; - LOGMSG(level, "%s(): OoO %s createdate (%s) is < summary firstshare (%s)", + ooof0++; + } + LOGMSG(level, "%s(): OoO %s createdate (%s) is < summary" + " firstshare (%s) (F%"PRId64":%"PRId64 + "/L%"PRId64":%"PRId64"/%.1f)", __func__, s_row ? "shares" : "shareerrors", (tmp1 = ctv_to_buf(sharecreatedate, NULL, 0)), - (tmp2 = ctv_to_buf(&(row->firstshare), NULL, 0))); + (tmp2 = ctv_to_buf(&(row->firstshare), NULL, 0)), + ooof, ooof0, oool, oool0, OOOLIMIT); free(tmp2); free(tmp1); row->firstshare.tv_sec = sharecreatedate->tv_sec; @@ -3466,15 +3477,21 @@ bool _sharesummary_update(PGconn *conn, SHARES *s_row, SHAREERRORS *e_row, K_ITE } else { char *tmp1, *tmp2; int level; - // DEBUG only for shares out of order up to 1 second - if (td < -1.0) + // DEBUG only for shares out of order up to OOOLIMIT seconds + if (td < OOOLIMIT) { level = LOG_WARNING; - else + oool++; + } else { level = LOG_DEBUG; - LOGMSG(level, "%s(): OoO %s createdate (%s) is < summary lastshare (%s)", + oool0++; + } + LOGMSG(level, "%s(): OoO %s createdate (%s) is < summary" + " lastshare (%s) (F%"PRId64":%"PRId64 + "/L%"PRId64":%"PRId64"/%.1f)", __func__, s_row ? "shares" : "shareerrors", (tmp1 = ctv_to_buf(sharecreatedate, NULL, 0)), - (tmp2 = ctv_to_buf(&(row->lastshare), NULL, 0))); + (tmp2 = ctv_to_buf(&(row->lastshare), NULL, 0)), + ooof, ooof0, oool, oool0, OOOLIMIT); free(tmp2); free(tmp1); }