|
|
@ -206,13 +206,17 @@ def retry_upload(tid: int, end_event: threading.Event, increase_count: bool = Tr |
|
|
|
break |
|
|
|
break |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def cb(sm, item, tid, sz: int, cur: int) -> None: |
|
|
|
def cb(sm, item, tid, sz: int, cur: int, end_event: threading.Event) -> None: |
|
|
|
# Abort transfer if connection changed to metered after starting upload |
|
|
|
# Abort transfer if connection changed to metered after starting upload |
|
|
|
|
|
|
|
# or if athenad is shutting down to re-connect the websocket |
|
|
|
sm.update(0) |
|
|
|
sm.update(0) |
|
|
|
metered = sm['deviceState'].networkMetered |
|
|
|
metered = sm['deviceState'].networkMetered |
|
|
|
if metered and (not item.allow_cellular): |
|
|
|
if metered and (not item.allow_cellular): |
|
|
|
raise AbortTransferException |
|
|
|
raise AbortTransferException |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if end_event.is_set(): |
|
|
|
|
|
|
|
raise AbortTransferException |
|
|
|
|
|
|
|
|
|
|
|
cur_upload_items[tid] = replace(item, progress=cur / sz if sz else 1) |
|
|
|
cur_upload_items[tid] = replace(item, progress=cur / sz if sz else 1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -252,7 +256,7 @@ def upload_handler(end_event: threading.Event) -> None: |
|
|
|
sz = -1 |
|
|
|
sz = -1 |
|
|
|
|
|
|
|
|
|
|
|
cloudlog.event("athena.upload_handler.upload_start", fn=fn, sz=sz, network_type=network_type, metered=metered, retry_count=item.retry_count) |
|
|
|
cloudlog.event("athena.upload_handler.upload_start", fn=fn, sz=sz, network_type=network_type, metered=metered, retry_count=item.retry_count) |
|
|
|
response = _do_upload(item, partial(cb, sm, item, tid)) |
|
|
|
response = _do_upload(item, partial(cb, sm, item, tid, end_event)) |
|
|
|
|
|
|
|
|
|
|
|
if response.status_code not in (200, 201, 401, 403, 412): |
|
|
|
if response.status_code not in (200, 201, 401, 403, 412): |
|
|
|
cloudlog.event("athena.upload_handler.retry", status_code=response.status_code, fn=fn, sz=sz, network_type=network_type, metered=metered) |
|
|
|
cloudlog.event("athena.upload_handler.retry", status_code=response.status_code, fn=fn, sz=sz, network_type=network_type, metered=metered) |
|
|
|