fix: a ghost project is created when a job upload fails (#222)

This commit is contained in:
Luis Uguina
2020-05-10 06:04:07 +10:00
committed by GitHub
parent b91d3e71ce
commit 18b99ded40

View File

@@ -463,7 +463,7 @@ public class Client {
int step = log.newCheckPoint();
Error.Type ret;
while (true) {
Job job_to_send;
Job job_to_send = null;
try {
job_to_send = jobsToValidate.take();
this.log.debug("will validate " + job_to_send);
@@ -474,13 +474,17 @@ public class Client {
this.log.debug("Client::senderLoop confirm failed, ret: " + ret);
sendError(step);
}
this.uploadQueueSize--;
this.uploadQueueVolume -= job_to_send.getOutputImageSize();
this.gui.displayUploadQueueStats(this.uploadQueueSize, this.uploadQueueVolume);
}
catch (InterruptedException e) {
}
finally {
this.uploadQueueSize--;
if (job_to_send != null) {
this.uploadQueueVolume -= job_to_send.getOutputImageSize();
}
this.gui.displayUploadQueueStats(this.uploadQueueSize, this.uploadQueueVolume);
}
}
}
@@ -784,21 +788,23 @@ public class Client {
int nb_try = 1;
int max_try = 3;
ServerCode ret = ServerCode.UNKNOWN;
while (nb_try < max_try && ret != ServerCode.OK) {
Type confirmJobReturnCode = Error.Type.OK;
retryLoop: while (nb_try < max_try && ret != ServerCode.OK) {
ret = this.server.HTTPSendFile(url_real, ajob.getOutputImagePath());
switch (ret) {
case OK:
// no issue, exit the loop
nb_try = max_try;
break;
break retryLoop;
case JOB_VALIDATION_ERROR_SESSION_DISABLED:
case JOB_VALIDATION_ERROR_BROKEN_MACHINE:
return Type.SESSION_DISABLED;
confirmJobReturnCode = Error.Type.SESSION_DISABLED;
break retryLoop;
case JOB_VALIDATION_ERROR_MISSING_PARAMETER:
// no point to retry the request
return Error.Type.UNKNOWN;
confirmJobReturnCode = Error.Type.UNKNOWN;
break retryLoop;
default:
// do nothing, try to do a request on the next loop
@@ -812,7 +818,7 @@ public class Client {
Thread.sleep(32000);
}
catch (InterruptedException e) {
return Error.Type.UNKNOWN;
confirmJobReturnCode = Error.Type.UNKNOWN;
}
}
}
@@ -820,14 +826,16 @@ public class Client {
this.isValidatingJob = false;
this.previousJob = ajob;
if (confirmJobReturnCode == Error.Type.OK) {
gui.AddFrameRendered();
}
// we can remove the frame file
File frame = new File(ajob.getOutputImagePath());
frame.delete();
ajob.setOutputImagePath(null);
return Error.Type.OK;
return confirmJobReturnCode;
}
protected boolean shouldWaitBeforeRender() {