From patchwork Wed Feb 10 22:33:45 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Zhou X-Patchwork-Id: 581709 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from archives.nicira.com (unknown [IPv6:2600:3c00::f03c:91ff:fe6e:bdf7]) by ozlabs.org (Postfix) with ESMTP id D4E511401DA for ; Thu, 11 Feb 2016 09:33:55 +1100 (AEDT) Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id 8CB2710233; Wed, 10 Feb 2016 14:33:53 -0800 (PST) X-Original-To: dev@openvswitch.com Delivered-To: dev@openvswitch.com Received: from mail-pa0-f53.google.com (mail-pa0-f53.google.com [209.85.220.53]) by archives.nicira.com (Postfix) with ESMTPS id 0D00810165 for ; Wed, 10 Feb 2016 14:33:52 -0800 (PST) Received: by mail-pa0-f53.google.com with SMTP id yy13so18572172pab.3 for ; Wed, 10 Feb 2016 14:33:52 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=QS69nDwyJRiFtegIZ2iSyTJQ7PFGIucVslgcH7Ut19A=; b=fqCV3xk92F8KYCyCl4nqvhc1BV7JW3vhd1ZSs1Gw3EFCoFNsDsEvNMFcn8417QNATM nWNE7yS37phqZGtt1e3r6lvKbi/sCnWOmQTpLlTMYJt/y7BVnfpGOgxGcY4ZQQEqwhe/ rGcMUifNPdIlNhV9jeCQTZ2pLTL3wuVvJpFMreA9ly/FpScM9ctmD6kOgmEJZeQtkLdS diVnDTN0e3m6cD0uOzJHm9XuO22+JVSeLh1inYPlRodAjEXTviqh1pz/+dylEVWZiq+l MFPlx93z1kO9YYLWrhdGNzIjMKDkBPixK5SLT/DvnWSDR8iO6pCv/EY1ZgJEhBK7Yere 6iVw== X-Gm-Message-State: AG10YOTP4S/b0ZtC6QqfTBriKL7lMBLTNESIIQSvqnNcl+27lYMSR++uo/U245byWGNW/w== X-Received: by 10.66.182.202 with SMTP id eg10mr62126513pac.50.1455143631510; Wed, 10 Feb 2016 14:33:51 -0800 (PST) Received: from ubuntu.localdomain ([208.91.1.34]) by smtp.gmail.com with ESMTPSA id xm10sm7471864pab.12.2016.02.10.14.33.49 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 10 Feb 2016 14:33:50 -0800 (PST) From: Andy Zhou To: dev@openvswitch.com Date: Wed, 10 Feb 2016 14:33:45 -0800 Message-Id: <1455143625-107098-1-git-send-email-azhou@ovn.org> X-Mailer: git-send-email 1.9.1 Subject: [ovs-dev] [PATCH] ovsdb-server: Eliminating max session limit X-BeenThere: dev@openvswitch.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dev-bounces@openvswitch.org Sender: "dev" This patch removes limits on number of concurrent sessions allowed by ovsdb-server. Historically, it was not an design goal for OVSDB server to support very high number of sessions. The imposed limit reflects those design choices. Work is now underway to improve OVSDB scalability since supporting large of number of sessions is important for OVN, Removing this limit makes scalability testing possible. Signed-off-by: Andy Zhou Acked-by: Han Zhou Acked-by: Ben Pfaff --- NEWS | 3 +++ ovsdb/jsonrpc-server.c | 35 ++++++++++++++--------------------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/NEWS b/NEWS index 8c9f310..18fca10 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,9 @@ Post-v2.5.0 bitrot. - ovs-appctl: * New "vlog/close" command. + - ovsdb-server: + * Remove max number of sessions limit, to enable connection scaling + testing. v2.5.0 - xx xxx xxxx diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c index ee2026e..0d23b77 100644 --- a/ovsdb/jsonrpc-server.c +++ b/ovsdb/jsonrpc-server.c @@ -101,7 +101,7 @@ static struct json *ovsdb_jsonrpc_monitor_compose_update( struct ovsdb_jsonrpc_server { struct ovsdb_server up; - unsigned int n_sessions, max_sessions; + unsigned int n_sessions; struct shash remotes; /* Contains "struct ovsdb_jsonrpc_remote *"s. */ }; @@ -130,7 +130,6 @@ ovsdb_jsonrpc_server_create(void) { struct ovsdb_jsonrpc_server *server = xzalloc(sizeof *server); ovsdb_server_init(&server->up); - server->max_sessions = 330; /* Random limit. */ shash_init(&server->remotes); return server; } @@ -324,25 +323,19 @@ ovsdb_jsonrpc_server_run(struct ovsdb_jsonrpc_server *svr) struct ovsdb_jsonrpc_remote *remote = node->data; if (remote->listener) { - if (svr->n_sessions < svr->max_sessions) { - struct stream *stream; - int error; - - error = pstream_accept(remote->listener, &stream); - if (!error) { - struct jsonrpc_session *js; - js = jsonrpc_session_open_unreliably(jsonrpc_open(stream), - remote->dscp); - ovsdb_jsonrpc_session_create(remote, js); - } else if (error != EAGAIN) { - VLOG_WARN_RL(&rl, "%s: accept failed: %s", - pstream_get_name(remote->listener), - ovs_strerror(error)); - } - } else { - VLOG_WARN_RL(&rl, "%s: connection exceeded maximum (%d)", + struct stream *stream; + int error; + + error = pstream_accept(remote->listener, &stream); + if (!error) { + struct jsonrpc_session *js; + js = jsonrpc_session_open_unreliably(jsonrpc_open(stream), + remote->dscp); + ovsdb_jsonrpc_session_create(remote, js); + } else if (error != EAGAIN) { + VLOG_WARN_RL(&rl, "%s: accept failed: %s", pstream_get_name(remote->listener), - svr->max_sessions); + ovs_strerror(error)); } } @@ -358,7 +351,7 @@ ovsdb_jsonrpc_server_wait(struct ovsdb_jsonrpc_server *svr) SHASH_FOR_EACH (node, &svr->remotes) { struct ovsdb_jsonrpc_remote *remote = node->data; - if (remote->listener && svr->n_sessions < svr->max_sessions) { + if (remote->listener) { pstream_wait(remote->listener); }