Skip to content

Commit 8a4012a

Browse files
committed
Handle correctly the case when push finish fails
1 parent 9b488b2 commit 8a4012a

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

mergin/client_push.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -210,16 +210,17 @@ def push_project_finalize(job):
210210
resp = job.mc.post("/v1/project/push/finish/%s" % job.transaction_id)
211211
job.server_resp = json.load(resp)
212212
except ClientError as err:
213-
job.mc.post("/v1/project/push/cancel/%s" % job.transaction_id)
214213
# server returns various error messages with filename or something generic
215214
# it would be better if it returned list of failed files (and reasons) whenever possible
216-
return {'error': str(err)}
217-
218-
if 'error' in job.server_resp:
219-
#TODO would be good to get some detailed info from server so user could decide what to do with it
220-
# e.g. diff conflicts, basefiles issues, or any other failure
221-
job.mp.log.error("push failed. server response: " + job.server_resp['error'])
222-
raise ClientError(job.server_resp['error'])
215+
job.mp.log.error("--- push finish failed! " + str(err))
216+
217+
# if push finish fails, the transaction is not killed, so we
218+
# need to cancel it so it does not block further uploads
219+
job.mp.log.info("canceling the pending transaction...")
220+
resp_cancel = job.mc.post("/v1/project/push/cancel/%s" % job.transaction_id)
221+
server_resp_cancel = json.load(resp_cancel)
222+
job.mp.log.info("cancel response: " + str(server_resp_cancel))
223+
raise err
223224

224225
job.mp.metadata = {
225226
'name': job.project_path,

0 commit comments

Comments
 (0)