Done: https://patchwork.ozlabs.org/patch/884143/
Thanks a lot again for taking a look.
I'd appreciate the backport into 2.9 as well if you all agree.

Regards,
Daniel

On Sat, Mar 10, 2018 at 1:35 PM, Daniel Alvarez Sanchez <dalva...@redhat.com
> wrote:

> Thanks a lot Ben and Mark.
> Yes, I'll be sending it right away. Thanks a lot guys.
>
> On Fri, Mar 9, 2018 at 8:13 PM, Ben Pfaff <b...@ovn.org> wrote:
>
>> On Fri, Mar 09, 2018 at 08:05:22AM -0600, Mark Michelson wrote:
>> > Hi Daniel,
>> >
>> > Mostly this looks correct. I had one small finding and have noted it
>> in-line
>> > down below.
>> >
>> > On 03/08/2018 04:20 PM, Daniel Alvarez wrote:
>> > >Before this patch, the databases were automatically compacted when a
>> > >transaction is logged when:
>> > >
>> > >* It's been > 10 minutes after last compaction AND
>> > >* At least 100 commits have occurred AND
>> > >* Database has grown at least 4x since last compaction (and it's > 10M)
>> > >
>> > >This patch changes the conditions as follows:
>> > >
>> > >* It's been > 10 minutes after last compaction AND
>> > >* At least 100 commits have occurred AND either
>> > >    - It's been > 24 hours after the last compaction OR
>> > >    - Database has grown at least 2x since last compaction (and it's >
>> 10M)
>> > >
>> > >Reported-by: Daniel Alvarez <dalva...@redhat.com>
>> > >Reported-at: https://mail.openvswitch.org/p
>> ipermail/ovs-discuss/2018-March/046309.html
>> > >Signed-off-by: Daniel Alvarez <dalva...@redhat.com>
>> > >---
>> > >  ovsdb/file.c            | 17 +++++++++++++----
>> > >  ovsdb/log.c             |  2 +-
>> > >  ovsdb/ovsdb-server.1.in |  6 ++++--
>> > >  3 files changed, 18 insertions(+), 7 deletions(-)
>> > >
>> > >diff --git a/ovsdb/file.c b/ovsdb/file.c
>> > >index 4b7ad52ab..02e0e8b76 100644
>> > >--- a/ovsdb/file.c
>> > >+++ b/ovsdb/file.c
>> > >@@ -46,6 +46,10 @@ VLOG_DEFINE_THIS_MODULE(ovsdb_file);
>> > >   * compacting fails. */
>> > >  #define COMPACT_RETRY_MSEC      (60 * 1000)      /* 1 minute. */
>> > >+/* Maximum number of milliseconds before compacting the database
>> regardless
>> > >+ * of its size. */
>> > >+#define COMPACT_MAX_MSEC        (24 * 60 * 60 * 1000) /* 24 hours. */
>> > >+
>> > >  /* A transaction being converted to JSON for writing to a file. */
>> > >  struct ovsdb_file_txn {
>> > >      struct json *json;          /* JSON for the whole transaction. */
>> > >@@ -586,6 +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;
>> > >      ovsdb_file_txn_init(&ftxn);
>> > >      ovsdb_txn_for_each_change(txn, ovsdb_file_change_cb, &ftxn);
>> > >@@ -604,11 +609,15 @@ ovsdb_file_commit(struct ovsdb_replica *replica,
>> > >      /* If it has been at least COMPACT_MIN_MSEC ms since the last
>> time we
>> > >       * compacted (or at least COMPACT_RETRY_MSEC ms since the last
>> time we
>> > >       * 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 4x the
>> > >-     * size of the previous snapshot, then compact the database. */
>> > >-    if (time_msec() >= file->next_compact
>> > >+     * 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
>> > >          && file->n_transactions >= 100
>> > >-        && ovsdb_log_grew_lots(file->log)) {
>> > >+        && (next_compact_elapsed >= COMPACT_MAX_MSEC
>> >
>> > I think this line is not right. If the idea is to compact if it has been
>> > more than 24 hours since the last time we did, then we should be doing
>> >
>> > time_msec() - file->last_compact >= COMPACT_MAX_MSEC
>> >
>> > instead of
>> >
>> > time_msec() - file->next_compact >= COMPACT_MAX_MSEC
>>
>> Oops, I missed this before I committed.  Daniel, would you mind sending
>> a fix?
>>
>
>
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to