680a1a5 Ticket 49316 - Fix clock unsafety in DS

Authored and Committed by William Brown 6 years ago
73 files changed. 921 lines added. 765 lines removed.
configure.ac
file modified
+4 -1
ldap/servers/plugins/acct_usability/acct_usability.c
file modified
+1 -1
ldap/servers/plugins/acctpolicy/acct_plugin.c
file modified
+2 -2
ldap/servers/plugins/acctpolicy/acct_util.c
file modified
+3 -3
ldap/servers/plugins/automember/automember.c
file modified
+2 -2
ldap/servers/plugins/chainingdb/cb.h
file modified
+1 -2
ldap/servers/plugins/chainingdb/cb_add.c
file modified
+3 -2
ldap/servers/plugins/chainingdb/cb_compare.c
file modified
+4 -3
ldap/servers/plugins/chainingdb/cb_conn_stateless.c
file modified
+36 -33
ldap/servers/plugins/chainingdb/cb_delete.c
file modified
+3 -2
ldap/servers/plugins/chainingdb/cb_modify.c
file modified
+3 -2
ldap/servers/plugins/chainingdb/cb_modrdn.c
file modified
+3 -2
ldap/servers/plugins/chainingdb/cb_search.c
file modified
+62 -62
ldap/servers/plugins/dna/dna.c
file modified
+1 -1
ldap/servers/plugins/replication/cl5_api.c
file modified
+5 -5
ldap/servers/plugins/replication/repl5_backoff.c
file modified
+2 -2
ldap/servers/plugins/replication/repl5_connection.c
file modified
+5 -5
ldap/servers/plugins/replication/repl5_inc_protocol.c
file modified
+8 -8
ldap/servers/plugins/replication/repl5_replica.c
file modified
+8 -11
ldap/servers/plugins/replication/repl5_ruv.c
file modified
+4 -4
ldap/servers/plugins/replication/repl5_tot_protocol.c
file modified
+7 -7
ldap/servers/plugins/replication/repl_objset.c
file modified
+2 -2
ldap/servers/plugins/replication/windows_connection.c
file modified
+1 -1
ldap/servers/plugins/replication/windows_inc_protocol.c
file modified
+3 -3
ldap/servers/plugins/replication/windows_tot_protocol.c
file modified
+3 -3
ldap/servers/plugins/retrocl/retrocl_po.c
file modified
+1 -1
ldap/servers/plugins/retrocl/retrocl_trim.c
file modified
+1 -1
ldap/servers/plugins/rootdn_access/rootdn_access.c
file modified
+7 -7
ldap/servers/plugins/syntaxes/string.c
file modified
+17 -17
ldap/servers/slapd/abandon.c
file modified
+4 -2
ldap/servers/slapd/add.c
file modified
+2 -6
ldap/servers/slapd/auditlog.c
file modified
+2 -2
ldap/servers/slapd/back-ldbm/dblayer.c
file modified
+124 -88
ldap/servers/slapd/back-ldbm/idl_new.c
file modified
+10 -10
ldap/servers/slapd/back-ldbm/import-merge.c
file modified
+6 -7
ldap/servers/slapd/back-ldbm/import-threads.c
file modified
+2 -6
ldap/servers/slapd/back-ldbm/import.c
file modified
+4 -4
ldap/servers/slapd/back-ldbm/index.c
file modified
+10 -15
ldap/servers/slapd/back-ldbm/ldbm_search.c
file modified
+12 -18
ldap/servers/slapd/back-ldbm/ldif2ldbm.c
file modified
+1 -1
ldap/servers/slapd/back-ldbm/proto-back-ldbm.h
file modified
+3 -3
ldap/servers/slapd/back-ldbm/sort.c
file modified
+5 -7
ldap/servers/slapd/back-ldbm/vlv.c
file modified
+9 -1
ldap/servers/slapd/back-ldbm/vlv_srch.c
file modified
+5 -18
ldap/servers/slapd/back-ldbm/vlv_srch.h
file modified
+1 -1
ldap/servers/slapd/connection.c
file modified
+3 -3
ldap/servers/slapd/conntable.c
file modified
+1 -1
ldap/servers/slapd/csngen.c
file modified
+7 -24
ldap/servers/slapd/daemon.c
file modified
+3 -70
ldap/servers/slapd/eventq.c
file modified
+21 -17
ldap/servers/slapd/generation.c
file modified
+2 -2
ldap/servers/slapd/getfilelist.c
file modified
+1 -1
ldap/servers/slapd/libglobs.c
file modified
+35 -43
ldap/servers/slapd/log.c
file modified
+7 -7
ldap/servers/slapd/main.c
file modified
+1 -1
ldap/servers/slapd/monitor.c
file modified
+1 -1
ldap/servers/slapd/operation.c
file modified
+22 -6
ldap/servers/slapd/opshared.c
file modified
+5 -11
ldap/servers/slapd/pagedresults.c
file modified
+8 -12
ldap/servers/slapd/pblock.c
file modified
+1 -4
ldap/servers/slapd/pw.c
file modified
+21 -29
ldap/servers/slapd/pw_mgmt.c
file modified
+1 -1
ldap/servers/slapd/pw_retry.c
file modified
+2 -3
ldap/servers/slapd/regex.c
file modified
+47 -1
ldap/servers/slapd/result.c
file modified
+4 -9
ldap/servers/slapd/sasl_map.c
file modified
+2 -2
ldap/servers/slapd/schema.c
file modified
+2 -2
ldap/servers/slapd/slap.h
file modified
+11 -7
ldap/servers/slapd/slapi-plugin.h
file modified
+176 -11
ldap/servers/slapd/slapi-private.h
file modified
+5 -7
ldap/servers/slapd/time.c
file modified
+110 -103
ldap/servers/slapd/uuid.c
file modified
+1 -1
ldap/servers/slapd/value.c
file modified
+19 -2
    Ticket 49316 - Fix clock unsafety in DS
    
    Bug Description:  DS is heavily reliant on correct working time
    for a variety of aspects. In almost every aspect of the server
    we found a way to misuse time somehow. From timeouts only
    checking second boundaries which would lead to timeouts of
    less that 1 second in some cases, to enforcing 32bit times on
    64bit platforms, confusion of absolute utc times and relative
    offsets, incorrect time types (not time_t), wrapping thread
    safe functions in mutexs causing import perf issues, and finally,
    using not-threadsafe polling function to update an int
    representing the current time, which may never be flushed
    to the cache, nor other threads reading it.
    
    tl;dr - what didn't we do wrong with time?
    
    Fix Description:  This fix has to cover a lot of ground:
    
    * make clock_gettime a requirement of the server
    * deprecate broken api's to create noise when people use them
    * remove the clock thread
    * replace access to clocks with clock_gettime
    * add a clock_monotonic interface for timeouts which is
      not affected by admin clock changes
    * update search/add etc to use timespec timeouts rather
      than time_t
    * replace calls to the broken "current_time()" function
      with a properly labeled utc or rel time function
    * fix checkpoint thread to run compact indepedent to
      checkpoints
    * remove incorrectly defined gmtime_r functions
    * remove incorrect documentation about atomicity of statics
      in the server
    * fix locations that used time as an int to time_t (2038 work)
    * deprecate long and long long value parser for time replacing
      with time_t to prevent 2038 issues
    
    https://pagure.io/389-ds-base/issue/49316
    
    Author: wibrown
    
    Review by: mreynolds (Thank you so much!)
    
        
file modified
+4 -1
file modified
+4 -2
file modified
+2 -6
file modified
+7 -24
file modified
+3 -70
file modified
+21 -17
file modified
+35 -43
file modified
+7 -7
file modified
+1 -1
file modified
+1 -1
file modified
+5 -11
file modified
+1 -4
file modified
+21 -29
file modified
+1 -1
file modified
+47 -1
file modified
+4 -9
file modified
+2 -2
file modified
+11 -7
file modified
+110 -103
file modified
+1 -1
file modified
+19 -2