Remote Rendering Always Results in Error 500
I am running Repetier-Server 0.80.3 (Pro trial period) on several devices, with the printer connected to a Raspberry Pi Zero W. Everything is working fine on the RPi so far, although rendering and timelapse are extremely slow due to the limitations of the processor. To try to pick up the slack, I've tried installing Repetier-Server on other, more powerful machines. So far, I have tried on my AMD64 Gentoo server (manually unpacking the .deb file, seems to work fine), Windows 10 x64, and Windows Subsystem for Linux, effectively running Ubuntu Xenial. All report able to remote render, and they all will take the job and run it successfully. However, when the RPi fetches the job results, getting the .png file results in an HTTP error 500. All logs on rendering servers look entirely successful, and I can't find any error messages that indicate the source of the 500 error.
From the RPi:
2017-04-30 14:39:07: Job created: /var/lib/Repetier-Server/printer/Anet_A2_Plus/models/00000029_3DBenchy.u
2017-04-30 14:39:07: finish job /var/lib/Repetier-Server/printer/Anet_A2_Plus/models/00000029_3DBenchy.u
2017-04-30 14:39:07: Updating info for /var/lib/Repetier-Server/printer/Anet_A2_Plus/models/00000029_3DBenchy.g printer Anet_A2_Plus
2017-04-30 14:39:07: Uploaded size:8344157
2017-04-30 14:39:24: LUA job rendering.render#{"id":29,"image":"/var/lib/Repetier-Server/printer/Anet_A2_Plus/models/00000029_3DBenchy_l.png","layer":"/var/lib/Repetier-Server/printer/Anet_A2_Plus/models/00000029_3DBenchy.layer","list":"models","slug":"Anet_A2_Plus"}
2017-04-30 14:39:24: cloudinitalize:application/json
2017-04-30 14:39:38: get 00000029_3DBenchy_l.png status 500
2017-04-30 14:39:38: contenttype:
2017-04-30 14:39:38: error rendering over cloud
2017-04-30 14:39:38: cloudinitalize:application/json
2017-04-30 14:39:51: get 00000029_3DBenchy_l.png status 500
2017-04-30 14:39:51: contenttype:
2017-04-30 14:39:51: error rendering over cloud
2017-04-30 14:43:23: Reading configuration file ...
Build 2
Input file: /var/lib/Repetier-Server/printer/Anet_A2_Plus/models/00000029_3DBenchy.layer
Rendering shadows ...15.667 seconds.
Rendering gcode ...153.232 seconds.
Number of end triangles: 272748
Number of normal triangles: 4090108
Rendering background ...
Time for raytracing: 36.7885 seconds.
Computation time: 211.405 seconds
From the Windows log (representative of all render hosts logs):
2017-04-30 14:46:30: localCloudDispatcher job
2017-04-30 14:46:30: renderCloudRemote called
2017-04-30 14:46:30: base = 00000030_3DBenchy
2017-04-30 14:46:46: Reading configuration file ...
Build 2
Input file: C:\ProgramData\Repetier-Server\tmp\5b9cc383-3ed0-486c-aa79-048a9e6e2f8e\00000030_3DBenchy.layer
Rendering shadows ...1.88879 seconds.
Rendering gcode ...10.0097 seconds.
Number of end triangles: 272748
Number of normal triangles: 4090108
Rendering background ...
Time for raytracing: 2.45931 seconds.
Computation time: 14.8804 seconds
Comments
} else if(a == "fetchFile") {
std::string id = ctx.form.get("id","");
std::string secret = ctx.form.get("secret","");
RemoteCloudJobPtr job = findRemoteJobFinished(id);
if(job == nullptr) {
obj["error"] = "Unkown job id";
responseCode = Poco::Net::HTTPResponse::HTTP_NOT_FOUND;
} else if(secret != job->secret) {
obj["error"] = "Wrong secret";
responseCode = Poco::Net::HTTPResponse::HTTP_FORBIDDEN;
} else {
std::string filename = fileSecureName(ctx.form.get("file",""));
boost::filesystem::path file(job->folder / filename);
if(boost::filesystem::exists(file)) {
ctx.resp.setContentType("application/octet-stream");
ctx.addContentDisposition(filename);
ctx.resp.setContentLength(boost::filesystem::file_size(file));
ctx.resp.setStatus(Poco::Net::HTTPResponse::HTTP_OK);
ctx.resp.sendFile(file.string(), "application/octet-stream");
return;
}
obj["error"] = "File does not exist";
}