create an error type for when the server kills the render (before it was part of NOOUTPUTFILE)

This commit is contained in:
Laurent Clouet
2016-11-01 19:44:09 +01:00
parent aacf0d407e
commit ea50176133
4 changed files with 18 additions and 1 deletions

View File

@@ -497,7 +497,7 @@ public class Client {
// no exception should be raised to actual launcher (applet or standalone) // no exception should be raised to actual launcher (applet or standalone)
} }
if (error != null && (error == Error.Type.RENDERER_CRASHED || error == Error.Type.RENDERER_KILLED_BY_USER)) { if (error != null && (error == Error.Type.RENDERER_CRASHED || error == Error.Type.RENDERER_KILLED_BY_USER || error == Error.Type.RENDERER_KILLED_BY_SERVER)) {
// do nothing, we can ask for a job right away // do nothing, we can ask for a job right away
} }
else { else {

View File

@@ -40,6 +40,7 @@ public class Error {
RENDERER_OUT_OF_MEMORY(21), RENDERER_OUT_OF_MEMORY(21),
RENDERER_KILLED(14), RENDERER_KILLED(14),
RENDERER_KILLED_BY_USER(20), RENDERER_KILLED_BY_USER(20),
RENDERER_KILLED_BY_SERVER(22),
RENDERER_MISSING_LIBRARIES(15), RENDERER_MISSING_LIBRARIES(15),
FAILED_TO_EXECUTE(16), FAILED_TO_EXECUTE(16),
OS_NOT_SUPPORTED(17), OS_NOT_SUPPORTED(17),
@@ -170,6 +171,8 @@ public class Error {
return "The renderer stopped because either you asked to stop or the server did (usually for a render time too high)."; return "The renderer stopped because either you asked to stop or the server did (usually for a render time too high).";
case RENDERER_KILLED_BY_USER: case RENDERER_KILLED_BY_USER:
return "The renderer stopped because you've blocked its project."; return "The renderer stopped because you've blocked its project.";
case RENDERER_KILLED_BY_SERVER:
return "The renderer stopped because it's been killed by the server. Usually because the project will take too much time or it's been paused.";
case SESSION_DISABLED: case SESSION_DISABLED:
return "The server has disabled your session. Your client may have generated a broken frame (GPU not compatible, not enough RAM/VRAM, etc)."; return "The server has disabled your session. Your client may have generated a broken frame (GPU not compatible, not enough RAM/VRAM, etc).";
case RENDERER_NOT_AVAILABLE: case RENDERER_NOT_AVAILABLE:

View File

@@ -63,6 +63,7 @@ public class Job {
private RenderProcess render; private RenderProcess render;
private boolean askForRendererKill; private boolean askForRendererKill;
private boolean userBlockJob; private boolean userBlockJob;
private boolean serverBlockJob;
private Gui gui; private Gui gui;
private Configuration config; private Configuration config;
private Log log; private Log log;
@@ -86,6 +87,7 @@ public class Job {
updateRenderingStatusMethod = update_method_; updateRenderingStatusMethod = update_method_;
askForRendererKill = false; askForRendererKill = false;
userBlockJob = false; userBlockJob = false;
serverBlockJob = false;
log = log_; log = log_;
render = new RenderProcess(); render = new RenderProcess();
} }
@@ -146,6 +148,14 @@ public class Job {
return userBlockJob; return userBlockJob;
} }
public void setServerBlockJob(boolean val) {
serverBlockJob = val;
}
public boolean getServerBlockJob() {
return serverBlockJob;
}
public String getRenderCommand() { public String getRenderCommand() {
return rendererCommand; return rendererCommand;
} }
@@ -346,6 +356,9 @@ public class Job {
if (files.length != 0) { if (files.length != 0) {
new File(files[0].getAbsolutePath()).delete(); new File(files[0].getAbsolutePath()).delete();
} }
if (getServerBlockJob()) {
return Error.Type.RENDERER_KILLED_BY_SERVER;
}
if (getUserBlockJob()) { if (getUserBlockJob()) {
return Error.Type.RENDERER_KILLED_BY_USER; return Error.Type.RENDERER_KILLED_BY_USER;
} }

View File

@@ -139,6 +139,7 @@ public class Server extends Thread implements HostnameVerifier, X509TrustManager
this.log.debug("Server::keeepmealive server asked to kill local render process"); this.log.debug("Server::keeepmealive server asked to kill local render process");
// kill the current process, it will generate an error but it's okay // kill the current process, it will generate an error but it's okay
if (this.client != null && this.client.getRenderingJob() != null && this.client.getRenderingJob().getProcessRender().getProcess() != null) { if (this.client != null && this.client.getRenderingJob() != null && this.client.getRenderingJob().getProcessRender().getProcess() != null) {
this.client.getRenderingJob().setServerBlockJob(true);
OS.getOS().kill(this.client.getRenderingJob().getProcessRender().getProcess()); OS.getOS().kill(this.client.getRenderingJob().getProcessRender().getProcess());
this.client.getRenderingJob().setAskForRendererKill(true); this.client.getRenderingJob().setAskForRendererKill(true);
} }