I was wondering if it would be possible (and as a followup, if anyone has done so) to integrate an event plugin that would detect and re queue a task if the output file size falls below a set amount (or if its XX% smaller than tasks that preceded it). Right now we are rendering standalone vrscenes that are tiled into tasks. Invariably, one node will “render” and complete a job, however, even Deadline recognizes that the output file size is nill in the task panel (even though the job is “completed”).
I know there is an option for this under the AE plugin, however, I was curious if it was possible to use as an event script (or modify the vray plugin) so that we could incorporate it into our workflow.
Events still can’t fire per-task yet. You could make it an OnJobCompleted event though, I’ve done that for similar stuff.
You’ve probably checked this already, but does V-Ray (and I’m guessing SketchUp) output anything at all to show there was a problem? StdoutHandler is a better course of action here if possible.
Good question - just happened, and this is the last part of the task report. Let me know if this does or does not help, can also send along full task report:
The V-Ray standalone plugin should fail on a non-zero exit code. All plugins usually do by default actually… Here’s the override code in the V-Ray standalone plugin:
def CheckExitCode( self, exitCode ):
# If V-Ray failed to load a known benign DLL, it will have an exit code other than 0. (ie. 3)
if not self.failedLoadingDLL:
if exitCode != 0:
self.FailRender( "V-Ray returned non-zero error code: %s. Check the render log." % exitCode )
I’m surprised your second job succeeded. Did anyone modify that in your plugin? Maybe we can catch that large negative exit code and fail on that?
Nope, just stock and the plugin looks the same as your code snippet. I think I actually asked you all (Thinkbox) to modify the code because when vray sketchup 3.6 was released, it had that nasty BRDF DLL bug in it, which chaos group will take approximately 3 years to fix, so this was the to prevent ALL jobs from failing (which was the result at the time)
I think mepps approach was good but may have been too much of a blanket catch. I think we need to be more specific here.
Can you change that whole block to look like this:
def CheckExitCode( self, exitCode ):
# If V-Ray failed to load a known benign DLL, it will have an exit code other than 0. (ie. 3)
if exitCode == 3:
if self.failedLoadingDLL:
return
if exitCode != 0:
self.FailRender( "V-Ray returned non-zero error code: %s. Check the render log." % exitCode )
Sounds good. I’m wondering if we should merge this into Deadline proper or not… Avoiding any exit code check if you’re using V-Ray seems like a bad idea.
Well, after about a week testing and this does seem to work. In fact, it has caught a couple false positives like we had before and sent those back to render on another node, so I think the change is good and working (at least in my limited testing)
Hey edwin, just wanted to see if this was still slated for full release? I updated to 10.11 when it came out, and only the other week did I realize that this rolled back my vray plugin (after a few failed jobs). So it was not in 10.11 (NBD to add in manually), and I don’t think I saw it in the release notes for 10.12, but wanted to confirm it was still on the docket for release.