Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/807700/?format=api
{ "id": 807700, "url": "http://patchwork.ozlabs.org/api/patches/807700/?format=api", "web_url": "http://patchwork.ozlabs.org/project/openvswitch/patch/20170830163314.1411-1-blp@ovn.org/", "project": { "id": 47, "url": "http://patchwork.ozlabs.org/api/projects/47/?format=api", "name": "Open vSwitch", "link_name": "openvswitch", "list_id": "ovs-dev.openvswitch.org", "list_email": "ovs-dev@openvswitch.org", "web_url": "http://openvswitch.org/", "scm_url": "git@github.com:openvswitch/ovs.git", "webscm_url": "https://github.com/openvswitch/ovs", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20170830163314.1411-1-blp@ovn.org>", "list_archive_url": null, "date": "2017-08-30T16:33:13", "name": "[ovs-dev,1/2] monitor: Fix bad caching of conditional monitor_cond requests.", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "2ab5795305d1e1f6010e19bbe8aa7b035c365932", "submitter": { "id": 67603, "url": "http://patchwork.ozlabs.org/api/people/67603/?format=api", "name": "Ben Pfaff", "email": "blp@ovn.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/openvswitch/patch/20170830163314.1411-1-blp@ovn.org/mbox/", "series": [ { "id": 647, "url": "http://patchwork.ozlabs.org/api/series/647/?format=api", "web_url": "http://patchwork.ozlabs.org/project/openvswitch/list/?series=647", "date": "2017-08-30T16:33:13", "name": "[ovs-dev,1/2] monitor: Fix bad caching of conditional monitor_cond requests.", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/647/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/807700/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/807700/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<ovs-dev-bounces@openvswitch.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "dev@openvswitch.org" ], "Delivered-To": [ "patchwork-incoming@bilbo.ozlabs.org", "ovs-dev@mail.linuxfoundation.org" ], "Authentication-Results": "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=openvswitch.org\n\t(client-ip=140.211.169.12; helo=mail.linuxfoundation.org;\n\tenvelope-from=ovs-dev-bounces@openvswitch.org;\n\treceiver=<UNKNOWN>)", "Received": [ "from mail.linuxfoundation.org (mail.linuxfoundation.org\n\t[140.211.169.12])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xj9zq4PKMz9sNn\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 02:33:27 +1000 (AEST)", "from mail.linux-foundation.org (localhost [127.0.0.1])\n\tby mail.linuxfoundation.org (Postfix) with ESMTP id EE1E7BDE;\n\tWed, 30 Aug 2017 16:33:25 +0000 (UTC)", "from smtp1.linuxfoundation.org (smtp1.linux-foundation.org\n\t[172.17.192.35])\n\tby mail.linuxfoundation.org (Postfix) with ESMTPS id 1672FB50\n\tfor <dev@openvswitch.org>; Wed, 30 Aug 2017 16:33:24 +0000 (UTC)", "from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net\n\t[217.70.183.197])\n\tby smtp1.linuxfoundation.org (Postfix) with ESMTPS id 7494D87\n\tfor <dev@openvswitch.org>; Wed, 30 Aug 2017 16:33:23 +0000 (UTC)", "from sigabrt.gateway.sonic.net\n\t(173-228-112-34.dsl.dynamic.fusionbroadband.com [173.228.112.34])\n\t(Authenticated sender: blp@ovn.org)\n\tby relay5-d.mail.gandi.net (Postfix) with ESMTPSA id 1302B41C07D;\n\tWed, 30 Aug 2017 18:33:20 +0200 (CEST)" ], "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6", "X-Originating-IP": "173.228.112.34", "From": "Ben Pfaff <blp@ovn.org>", "To": "dev@openvswitch.org", "Date": "Wed, 30 Aug 2017 09:33:13 -0700", "Message-Id": "<20170830163314.1411-1-blp@ovn.org>", "X-Mailer": "git-send-email 2.10.2", "X-Spam-Status": "No, score=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW\n\tautolearn=disabled version=3.3.1", "X-Spam-Checker-Version": "SpamAssassin 3.3.1 (2010-03-16) on\n\tsmtp1.linux-foundation.org", "Cc": "Ben Pfaff <blp@ovn.org>", "Subject": "[ovs-dev] [PATCH 1/2] monitor: Fix bad caching of conditional\n\tmonitor_cond requests.", "X-BeenThere": "ovs-dev@openvswitch.org", "X-Mailman-Version": "2.1.12", "Precedence": "list", "List-Id": "<ovs-dev.openvswitch.org>", "List-Unsubscribe": "<https://mail.openvswitch.org/mailman/options/ovs-dev>,\n\t<mailto:ovs-dev-request@openvswitch.org?subject=unsubscribe>", "List-Archive": "<http://mail.openvswitch.org/pipermail/ovs-dev/>", "List-Post": "<mailto:ovs-dev@openvswitch.org>", "List-Help": "<mailto:ovs-dev-request@openvswitch.org?subject=help>", "List-Subscribe": "<https://mail.openvswitch.org/mailman/listinfo/ovs-dev>,\n\t<mailto:ovs-dev-request@openvswitch.org?subject=subscribe>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Sender": "ovs-dev-bounces@openvswitch.org", "Errors-To": "ovs-dev-bounces@openvswitch.org" }, "content": "The current implementation of ovsdb-server caches only non-conditional\nmonitors, that is, monitors for every table row, not those that monitor\nonly rows that match some condition. To figure out which monitors are\nconditional, the code track the number of tables that have conditions that\nare uniformly true (cond->n_true_cnd) and compares that against the number\nof tables in the condition (shash_count(&cond->tables)). If they are the\nsame, then every table has (effectively) no condition, and so\ncond->conditional is set to false.\n\nHowever, the implementation was buggy. The function that adds a new\ntable condition, ovsdb_monitor_table_condition_create(), only updated\ncond->conditional if the table condition being added was true. This is\nwrong; only adding a non-true condition can actually change\ncond->conditional. This commit fixes the problem by always recalculating\ncond->conditional.\n\nThe most visible side effect of cond->conditional being true when it\nshould be false, as caused by this bug, was that conditional monitors were\nbeing mixed with unconditional monitors for the purpose of caching. This\nmeant that, if a client requested a conditional monitor that was the\nsame as an unconditional one, except for the condition, then the client\nwould receive the cached data previously sent for the unconditional one.\nThis commit fixes the problem.\n\nSigned-off-by: Ben Pfaff <blp@ovn.org>\n---\n ovsdb/monitor.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)", "diff": "diff --git a/ovsdb/monitor.c b/ovsdb/monitor.c\nindex b98100703091..7a5c2f905560 100644\n--- a/ovsdb/monitor.c\n+++ b/ovsdb/monitor.c\n@@ -651,8 +651,8 @@ ovsdb_monitor_table_condition_create(\n ovsdb_condition_clone(&mtc->new_condition, &mtc->old_condition);\n if (ovsdb_condition_is_true(&mtc->old_condition)) {\n condition->n_true_cnd++;\n- ovsdb_monitor_session_condition_set_mode(condition);\n }\n+ ovsdb_monitor_session_condition_set_mode(condition);\n \n return NULL;\n }\n", "prefixes": [ "ovs-dev", "1/2" ] }