From c71851495c96b75ee7ac44c3c6f222507951f209 Mon Sep 17 00:00:00 2001 From: Yuriy Vostrikov <vostrikov@corp.mail.ru> Date: Thu, 11 Nov 2010 17:40:54 +0300 Subject: [PATCH] [box] now replica reports its lag --- core/log_io.c | 3 +++ core/log_io_remote.c | 1 + include/log_io.h | 2 +- mod/silverbox/box.c | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/log_io.c b/core/log_io.c index 3fc16a11d9..cd1898b2c6 100644 --- a/core/log_io.c +++ b/core/log_io.c @@ -1177,6 +1177,9 @@ write_to_disk(void *_state, struct tbuf *t) u32 result = 0; int suffix = 0; + /* we're not running inside ev_loop, so update ev_now manually */ + ev_now_update(); + /* caller requested termination */ if (t == NULL) { if (wal != NULL) diff --git a/core/log_io_remote.c b/core/log_io_remote.c index 264485fa7c..df85f1bd0c 100644 --- a/core/log_io_remote.c +++ b/core/log_io_remote.c @@ -129,6 +129,7 @@ pull_from_remote(void *state) for (;;) { row = remote_read_row(h->r->confirmed_lsn + 1); h->r->recovery_lag = ev_now() - row_v11(row)->tm; + h->r->recovery_last_update_tstamp = ev_now(); if (h->handler(h->r, row) < 0) continue; diff --git a/include/log_io.h b/include/log_io.h index 53d8d41bb0..fe20ccf40f 100644 --- a/include/log_io.h +++ b/include/log_io.h @@ -84,7 +84,7 @@ struct recovery_state { log_io_class->reader is responsible of converting data from old format */ row_handler *wal_row_handler, *snap_row_handler; ev_timer wal_timer; - ev_tstamp recovery_lag; + ev_tstamp recovery_lag, recovery_last_update_tstamp; int snap_io_rate_limit; diff --git a/mod/silverbox/box.c b/mod/silverbox/box.c index 6c758d3157..cc246d5aaa 100644 --- a/mod/silverbox/box.c +++ b/mod/silverbox/box.c @@ -1886,6 +1886,8 @@ mod_info(struct tbuf *out) tbuf_printf(out, " pid: %i\r\n", getpid()); tbuf_printf(out, " wal_writer_pid: %" PRIi64 "\r\n", (i64)recovery_state->wal_writer->pid); tbuf_printf(out, " lsn: %" PRIi64 "\r\n", recovery_state->confirmed_lsn); + tbuf_printf(out, " recovery_lag: %.3f\r\n", recovery_state->recovery_lag); + tbuf_printf(out, " recovery_last_update: %.3f\r\n", recovery_state->recovery_last_update_tstamp); tbuf_printf(out, " status: %s\r\n", status); } -- GitLab