[ovs-dev] [PATCH V2] jsonrpc: Notify excessive sending backlog.
Alex Wang
alexw at nicira.com
Fri Sep 19 20:32:55 UTC 2014
This commit adds a log message to notify the excessive backlog
for jsonrpc. Expectedly, this message should never be printed.
Signed-off-by: Alex Wang <alexw at nicira.com>
---
PATCH -> V2:
- change the log level to INFO and use rate-limiter.
- avoid calling list_size().
---
lib/jsonrpc.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/lib/jsonrpc.c b/lib/jsonrpc.c
index 0841ad8..a9f6a2a 100644
--- a/lib/jsonrpc.c
+++ b/lib/jsonrpc.c
@@ -47,6 +47,7 @@ struct jsonrpc {
/* Output. */
struct list output; /* Contains "struct ofpbuf"s. */
+ size_t output_count; /* Number of elements in "output". */
size_t backlog;
};
@@ -124,6 +125,7 @@ jsonrpc_run(struct jsonrpc *rpc)
ofpbuf_pull(buf, retval);
if (!ofpbuf_size(buf)) {
list_remove(&buf->list_node);
+ rpc->output_count--;
ofpbuf_delete(buf);
}
} else {
@@ -257,8 +259,15 @@ jsonrpc_send(struct jsonrpc *rpc, struct jsonrpc_msg *msg)
ofpbuf_use(buf, s, length);
ofpbuf_set_size(buf, length);
list_push_back(&rpc->output, &buf->list_node);
+ rpc->output_count++;
rpc->backlog += length;
+ if (rpc->output_count >= 50) {
+ VLOG_INFO_RL(&rl, "excessive sending backlog, jsonrpc: %s, num of"
+ " msgs: %"PRIuSIZE", backlog: %"PRIuSIZE".", rpc->name,
+ rpc->output_count, rpc->backlog);
+ }
+
if (rpc->backlog == length) {
jsonrpc_run(rpc);
}
@@ -496,6 +505,7 @@ jsonrpc_cleanup(struct jsonrpc *rpc)
ofpbuf_list_delete(&rpc->output);
rpc->backlog = 0;
+ rpc->output_count = 0;
}
static struct jsonrpc_msg *
--
1.7.9.5
More information about the dev
mailing list