improve updated responsiveness (#1973)
parent
85fc85b3c8
commit
88c67e7e9f
|
@ -76,12 +76,12 @@ class WaitTimeHelper:
|
|||
self.ready_event.set()
|
||||
|
||||
|
||||
def wait_between_updates(ready_event):
|
||||
def wait_between_updates(ready_event, t=60*10):
|
||||
ready_event.clear()
|
||||
if SHORT:
|
||||
ready_event.wait(timeout=10)
|
||||
else:
|
||||
ready_event.wait(timeout=60 * 10)
|
||||
ready_event.wait(timeout=t)
|
||||
|
||||
|
||||
def link(src, dest):
|
||||
|
@ -341,50 +341,52 @@ def main():
|
|||
time.sleep(30)
|
||||
wait_helper = WaitTimeHelper()
|
||||
|
||||
while True:
|
||||
while not wait_helper.shutdown:
|
||||
update_failed_count += 1
|
||||
|
||||
# Check for internet every 30s
|
||||
time_wrong = datetime.datetime.utcnow().year < 2019
|
||||
ping_failed = subprocess.call(["ping", "-W", "4", "-c", "1", "8.8.8.8"])
|
||||
if ping_failed or time_wrong:
|
||||
wait_between_updates(wait_helper.ready_event, t=30)
|
||||
continue
|
||||
|
||||
# Wait until we have a valid datetime to initialize the overlay
|
||||
if not (ping_failed or time_wrong):
|
||||
try:
|
||||
# If the git directory has modifcations after we created the overlay
|
||||
# we need to recreate the overlay
|
||||
if overlay_init_done:
|
||||
overlay_init_fn = os.path.join(BASEDIR, ".overlay_init")
|
||||
git_dir_path = os.path.join(BASEDIR, ".git")
|
||||
new_files = run(["find", git_dir_path, "-newer", overlay_init_fn])
|
||||
# Attempt an update
|
||||
try:
|
||||
# If the git directory has modifcations after we created the overlay
|
||||
# we need to recreate the overlay
|
||||
if overlay_init_done:
|
||||
overlay_init_fn = os.path.join(BASEDIR, ".overlay_init")
|
||||
git_dir_path = os.path.join(BASEDIR, ".git")
|
||||
new_files = run(["find", git_dir_path, "-newer", overlay_init_fn])
|
||||
|
||||
if len(new_files.splitlines()):
|
||||
cloudlog.info(".git directory changed, recreating overlay")
|
||||
overlay_init_done = False
|
||||
if len(new_files.splitlines()):
|
||||
cloudlog.info(".git directory changed, recreating overlay")
|
||||
overlay_init_done = False
|
||||
|
||||
if not overlay_init_done:
|
||||
init_ovfs()
|
||||
overlay_init_done = True
|
||||
if not overlay_init_done:
|
||||
init_ovfs()
|
||||
overlay_init_done = True
|
||||
|
||||
if params.get("IsOffroad") == b"1":
|
||||
attempt_update()
|
||||
update_failed_count = 0
|
||||
else:
|
||||
cloudlog.info("not running updater, openpilot running")
|
||||
if params.get("IsOffroad") == b"1":
|
||||
attempt_update()
|
||||
update_failed_count = 0
|
||||
else:
|
||||
cloudlog.info("not running updater, openpilot running")
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
cloudlog.event(
|
||||
"update process failed",
|
||||
cmd=e.cmd,
|
||||
output=e.output,
|
||||
returncode=e.returncode
|
||||
)
|
||||
overlay_init_done = False
|
||||
except Exception:
|
||||
cloudlog.exception("uncaught updated exception, shouldn't happen")
|
||||
except subprocess.CalledProcessError as e:
|
||||
cloudlog.event(
|
||||
"update process failed",
|
||||
cmd=e.cmd,
|
||||
output=e.output,
|
||||
returncode=e.returncode
|
||||
)
|
||||
overlay_init_done = False
|
||||
except Exception:
|
||||
cloudlog.exception("uncaught updated exception, shouldn't happen")
|
||||
|
||||
params.put("UpdateFailedCount", str(update_failed_count))
|
||||
wait_between_updates(wait_helper.ready_event)
|
||||
if wait_helper.shutdown:
|
||||
break
|
||||
|
||||
# We've been signaled to shut down
|
||||
dismount_ovfs()
|
||||
|
|
Loading…
Reference in New Issue