From 0b9fa59789a972da2e83f7500a3a760ab210f3c2 Mon Sep 17 00:00:00 2001
From: Konstantin Osipov <kostja@tarantool.org>
Date: Wed, 25 Oct 2017 20:27:39 +0300
Subject: [PATCH] iproto: warn when we reach the limit on input or working
 fibers

---
 src/box/iproto.cc | 13 ++++++-------
 src/fiber_pool.c  |  2 ++
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/box/iproto.cc b/src/box/iproto.cc
index 6764ca5dc4..a132402827 100644
--- a/src/box/iproto.cc
+++ b/src/box/iproto.cc
@@ -314,6 +314,8 @@ iproto_connection_is_idle(struct iproto_connection *con)
 static inline void
 iproto_connection_stop(struct iproto_connection *con)
 {
+	say_warn("readahead limit reached, stopping input on connection %s",
+		 sio_socketname(con->input.fd));
 	assert(rlist_empty(&con->in_stop_list));
 	ev_io_stop(con->loop, &con->input);
 	rlist_add_tail(&stopped_connections, &con->in_stop_list);
@@ -480,9 +482,8 @@ static const struct cmsg_hop sync_route[] = {
 };
 
 static struct iproto_connection *
-iproto_connection_new(const char *name, int fd)
+iproto_connection_new(int fd)
 {
-	(void) name;
 	struct iproto_connection *con = (struct iproto_connection *)
 		mempool_alloc_xc(&iproto_connection_pool);
 	con->input.data = con->output.data = con;
@@ -1251,13 +1252,11 @@ static void
 iproto_on_accept(struct evio_service * /* service */, int fd,
 		 struct sockaddr *addr, socklen_t addrlen)
 {
-	char name[SERVICE_NAME_MAXLEN];
-	snprintf(name, sizeof(name), "%s/%s", "iobuf",
-		sio_strfaddr(addr, addrlen));
-
+	(void) addr;
+	(void) addrlen;
 	struct iproto_connection *con;
 
-	con = iproto_connection_new(name, fd);
+	con = iproto_connection_new(fd);
 	/*
 	 * Ignore msg allocation failure - the queue size is
 	 * fixed so there is a limited number of msgs in
diff --git a/src/fiber_pool.c b/src/fiber_pool.c
index 0a81c00698..aa8b195102 100644
--- a/src/fiber_pool.c
+++ b/src/fiber_pool.c
@@ -129,6 +129,8 @@ fiber_pool_cb(ev_loop *loop, struct ev_watcher *watcher, int events)
 			 * get scheduled again - there are enough
 			 * worker fibers already, so just leave.
 			 */
+			say_warn("fiber pool size %d reached on endpoint %s",
+				 pool->max_size, pool->endpoint.name);
 			break;
 		}
 	}
-- 
GitLab