• André Silva's avatar
    Auto-updater improvements (#8078) · dcaff6f4
    André Silva authored
    * updater: refactor updater flow into state machine
    
    * updater: delay update randomly within max range
    
    * updater: configurable update delay
    
    * updater: split polling and updater state machine step
    
    * updater: drop state to avoid deadlocking
    
    * updater: fix fetch backoff
    
    * updater: fix overflow in update delay calculation
    
    * updater: configurable update check frequency
    
    * updater: fix update policy frequency comparison
    
    * updater: use lazy_static for platform and platform_id_hash
    
    * updater: refactor operations contract calls into OperationsClient
    
    * updater: make updater generic over operations and fetch client
    
    * updater: fix compilation
    
    * updater: add testing infrastructure and minimal test
    
    * updater: fix minor grumbles
    
    * updater: add test for successful updater flow
    
    * updater: add test for update delay
    
    * updater: add test for update check frequency
    
    * updater: mock time and rng for deterministic tests
    
    * updater: test backoff on failure
    
    * updater: add test for backoff short-circuit on new release
    
    * updater: refactor to increase readability
    
    * updater: cap maximum backoff to one month
    
    * updater: add test for detecting already downloaded update
    
    * updater: add test for updater disable on fatal errors
    
    * updater: add test for pending outdated fetch
    
    * updater: test auto install of updates
    
    * updater: add test for capability updates
    
    * updater: fix capability update
    
    * updater: use ethabi to create event topic filter
    
    * updater: decrease maximum backoff to 1 day
    
    * updater: cap maximum update delay with upcoming fork block number
    
    * updater: receive state mutex guard in updater_step
    
    * updater: overload execute_upgrade to take state mutex guard
    
    * updater: remove unnecessary clone of latest operations info
    
    * updater: remove latest operations info clone when triggering fetch
    dcaff6f4