diff options
author | Muhammad Moinur Rahman <bofh@FreeBSD.org> | 2017-02-24 21:15:52 +0000 |
---|---|---|
committer | Muhammad Moinur Rahman <bofh@FreeBSD.org> | 2017-02-24 21:15:52 +0000 |
commit | 9eff14e4885b86d6f5a8b35c69ebaabd9e74df06 (patch) | |
tree | 443206cca0976456f3fd02dad4c4ebfe294c5904 /mail/dbmail/files/patch-0006-simplify-log_query_time-duration-logic | |
parent | devel/py-pathlib2: add missing dependency (diff) |
mail/dbmail: adopt latest fixes from git:
- login_disabled option before starttls for pop3
- fix compiler warnings for GCC5
- Fix IMAP mailbox maintanence
- prevent assertion in p_string_erase
- improve crypt authentication, also don't segfault when spasswd is empty
- simplify log_query_time duration logic
- Disconnect IMAP clients if only few free FDs left
- Add primary key constraint to dbmail_authlog
- Rework temporary connection failures
- Give sensible default for retry 120s
- Add retries for binding and searching
- Bump search timeout to 60s
- Increase ldap timeout to 600s 10 mins
- Refactor deprecated functions
- Get timeout from config
- Remove redundant event_assign
- Remove deprecated non functioning g_mem_profile
- Add definition for authldap_free
- Revert inadvertent event_assign removal
- Reduce failed LDAP connection for search to error
- Update LDAP to non deprecated search
- Clear the ldap connection
- Update ldap deprecated unbind
- Fix typo
- Update to ldap_unbind_ext_s and remove redundant sigaction
- Rebalance commit rollback
- Ensure mailbox2dbmail is using Python 2
- Tidy mailbox2dbmail man page
- Update description of pid file location in server man page
- Boundaries fixups ordering of parts do not add newline on
- Prepend headers during delivery
- Allow for systems that don't use proc
PR: 210274
Submitted by: fluffy
Diffstat (limited to 'mail/dbmail/files/patch-0006-simplify-log_query_time-duration-logic')
-rw-r--r-- | mail/dbmail/files/patch-0006-simplify-log_query_time-duration-logic | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/mail/dbmail/files/patch-0006-simplify-log_query_time-duration-logic b/mail/dbmail/files/patch-0006-simplify-log_query_time-duration-logic new file mode 100644 index 000000000000..55a93c49f65c --- /dev/null +++ b/mail/dbmail/files/patch-0006-simplify-log_query_time-duration-logic @@ -0,0 +1,119 @@ +From f5b73b342b4a6cae1bb15340e5da7330e29319c1 Mon Sep 17 00:00:00 2001 +From: Paul J Stevens <p.stevens@lukkien.com> +Date: Sat, 5 Mar 2016 18:43:12 +0100 +Subject: [PATCH 06/33] simplify log_query_time duration logic + +--- + src/dm_db.c | 16 ++++++++-------- + src/dm_misc.c | 12 ++++++++++++ + src/dm_misc.h | 2 ++ + test/check_dbmail_db.c | 27 +++++++++++++++++++++++++++ + 4 files changed, 49 insertions(+), 8 deletions(-) + +diff --git src/dm_db.c src/dm_db.c +index bfe9601..429d0ae 100644 +--- src/dm_db.c ++++ src/dm_db.c +@@ -354,14 +354,14 @@ void db_con_clear(Connection_T c) + + void log_query_time(char *query, struct timeval before, struct timeval after) + { +- double elapsed = ((double)after.tv_sec + ((double)after.tv_usec / 1000000)) - ((double)before.tv_sec + ((double)before.tv_usec / 1000000)); +- TRACE(TRACE_DATABASE, "last query took [%.3f] seconds", elapsed); +- if (elapsed > (double)db_params.query_time_warning) +- TRACE(TRACE_WARNING, "slow query [%s] took [%.3f] seconds", query, elapsed); +- else if (elapsed > (double)db_params.query_time_notice) +- TRACE(TRACE_NOTICE, "slow query [%s] took [%.3f] seconds", query, elapsed); +- else if (elapsed > (double)db_params.query_time_info) +- TRACE(TRACE_INFO, "slow query [%s] took [%.3f] seconds", query, elapsed); ++ unsigned int elapsed = (unsigned int)diff_time(before, after); ++ TRACE(TRACE_DATABASE, "last query took [%d] seconds", elapsed); ++ if (elapsed > db_params.query_time_warning) ++ TRACE(TRACE_WARNING, "slow query [%s] took [%d] seconds", query, elapsed); ++ else if (elapsed > db_params.query_time_notice) ++ TRACE(TRACE_NOTICE, "slow query [%s] took [%d] seconds", query, elapsed); ++ else if (elapsed > db_params.query_time_info) ++ TRACE(TRACE_INFO, "slow query [%s] took [%d] seconds", query, elapsed); + return; + } + +diff --git src/dm_misc.c src/dm_misc.c +index 1294930..e27ef34 100644 +--- src/dm_misc.c ++++ src/dm_misc.c +@@ -2422,4 +2422,16 @@ void uint64_free(void *data) + mempool_push(small_pool, data, sizeof(uint64_t)); + } + ++/* ++ * calculate the difference between two timeval values ++ * as number of seconds, using default rounding ++ */ ++int diff_time(struct timeval before, struct timeval after) ++{ ++ int tbefore = before.tv_sec * 1000000 + before.tv_usec; ++ int tafter = after.tv_sec * 1000000 + after.tv_usec; ++ int tdiff = tafter - tbefore; ++ return (int)rint((double)tdiff/1000000); ++} ++ + +diff --git src/dm_misc.h src/dm_misc.h +index a5dd04f..9660dfa 100644 +--- src/dm_misc.h ++++ src/dm_misc.h +@@ -178,4 +178,6 @@ gchar * get_crlf_encoded_opt(const gchar *string, int dots); + void strip_crlf(char *buffer); + void uint64_free(void *); + ++int diff_time(struct timeval before, struct timeval after); ++ + #endif +diff --git test/check_dbmail_db.c test/check_dbmail_db.c +index 47c34be..e6cb170 100644 +--- test/check_dbmail_db.c ++++ test/check_dbmail_db.c +@@ -414,6 +414,32 @@ START_TEST(test_db_get_sql) + } + END_TEST + ++START_TEST(test_diff_time) ++{ ++ struct timeval before, after; ++ int diff; ++ ++ before.tv_sec = 1; before.tv_usec = 0; ++ after.tv_sec = 2; after.tv_usec = 0; ++ diff = diff_time(before, after); ++ fail_unless(diff == 1); ++ ++ before.tv_sec = 1; before.tv_usec = 1000000 - 1; ++ after.tv_sec = 2; after.tv_usec = 0; ++ diff = diff_time(before, after); ++ fail_unless(diff == 0); ++ ++ before.tv_sec = 1; before.tv_usec = 500001; ++ after.tv_sec = 2; after.tv_usec = 0; ++ diff = diff_time(before, after); ++ fail_unless(diff == 0); ++ ++ before.tv_sec = 1; before.tv_usec = 499999; ++ after.tv_sec = 2; after.tv_usec = 0; ++ diff = diff_time(before, after); ++ fail_unless(diff == 1); ++} ++END_TEST + + Suite *dbmail_db_suite(void) + { +@@ -435,6 +461,7 @@ Suite *dbmail_db_suite(void) + tcase_add_test(tc_db, test_mailbox_match_new); + tcase_add_test(tc_db, test_db_findmailbox_by_regex); + tcase_add_test(tc_db, test_db_get_sql); ++ tcase_add_test(tc_db, test_diff_time); + + return s; + } +-- +2.10.1 (Apple Git-78) + |