From patchwork Sat Mar 10 13:50:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Alvarez Sanchez X-Patchwork-Id: 884143 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zz5HB3jwszB2XP for ; Sun, 11 Mar 2018 00:50:23 +1100 (AEDT) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 077E9E97; Sat, 10 Mar 2018 13:50:22 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 2B1E8E79 for ; Sat, 10 Mar 2018 13:50:21 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id CAE468B for ; Sat, 10 Mar 2018 13:50:20 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1969A4022909 for ; Sat, 10 Mar 2018 13:50:20 +0000 (UTC) Received: from dhcp-240-195.mad.redhat.com (ovpn-116-35.ams2.redhat.com [10.36.116.35]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0E79A202660D; Sat, 10 Mar 2018 13:50:18 +0000 (UTC) From: Daniel Alvarez To: dev@openvswitch.org Date: Sat, 10 Mar 2018 14:50:14 +0100 Message-Id: <20180310135014.31551-1-dalvarez@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Sat, 10 Mar 2018 13:50:20 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.6]); Sat, 10 Mar 2018 13:50:20 +0000 (UTC) for IP:'10.11.54.4' DOMAIN:'int-mx04.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'dalvarez@redhat.com' RCPT:'' X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, T_RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH v2] ovsdb: Fix database compaction check X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org We want to compact database file if it has been over 24 hours since we last compacted it and there's more than 100 commits regardless of the size of the database. This patch fixes the previous comparisson which checked if 24 hours was elapsed since the next scheduled compaction. Signed-off-by: Daniel Alvarez --- ovsdb/file.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ovsdb/file.c b/ovsdb/file.c index 02e0e8b76..40192e30d 100644 --- a/ovsdb/file.c +++ b/ovsdb/file.c @@ -590,7 +590,7 @@ ovsdb_file_commit(struct ovsdb_replica *replica, struct ovsdb_file *file = ovsdb_file_cast(replica); struct ovsdb_file_txn ftxn; struct ovsdb_error *error; - long long int next_compact_elapsed; + long long int current_time; ovsdb_file_txn_init(&ftxn); ovsdb_txn_for_each_change(txn, ovsdb_file_change_cb, &ftxn); @@ -611,12 +611,12 @@ ovsdb_file_commit(struct ovsdb_replica *replica, * tried), and if there are at least 100 transactions in the database, and * if the database is at least 10 MB, and the database is at least 2x the * size of the previous snapshot, then compact the database. However, if - * it has been over COMPACT_MAX_MSEC ms, the database size is not taken - * into account. */ - next_compact_elapsed = time_msec() - file->next_compact; - if (next_compact_elapsed >= 0 + * it has been over COMPACT_MAX_MSEC ms since the last compaction, the + * database size is not taken into account. */ + current_time = time_msec(); + if (current_time >= file->next_compact && file->n_transactions >= 100 - && (next_compact_elapsed >= COMPACT_MAX_MSEC + && (current_time - file->last_compact >= COMPACT_MAX_MSEC || ovsdb_log_grew_lots(file->log))) { error = ovsdb_file_compact(file); if (error) {