Hello,
Looks like the workflow to submit new render jobs via the Composite 2013 plugin is broken, when using the Deadline 6 Beta Monitor interface (v6.0.0.50509 R) under Windows 7 Professional. Any render jobs submitted via this plugin will fail with a fatal error.
Here are the steps to reproduce:
-
In the Deadline Monitor UI, open the widget for a new Composite submission via the menu: Submit -> CompositeSubmission
-
Fill out the fields and submit the new job to deadline. You will get a confirmation message as something like:
Deadline Monitor 6.0 [v6.0.0.50509 R]
Submitting to Repository: \deadline\blah
Submission Contains the Following:
- Auxiliary File #1 ("[PluginPathHere]/composite_plugin_info.job")
- Auxiliary File #2 ("[ProjectPathHere]/abc.txproject")
- Auxiliary File #3 ("[CompositionPathHere]/xyz.txcomposition")
Result=Success
JobID=51420596dddf740f14d325cb
The job was submitted successfully.
- Under the Job Monitor tab, you will see a recurring error for the first frame as the following:
=======================================================
Error
Error in CheckExitCode: Renderer returned non-zero error code, 3. Check the log for more information.
at Deadline.Plugins.ScriptPlugin.RenderTasks(String taskId, Int32 startFrame, Int32 endFrame, String& outMessage, AbortLevel& abortLevel)
=======================================================
Type
RenderPluginException
=======================================================
Stack Trace
at Deadline.Plugins.Plugin.RenderTask(String taskId, Int32 startFrame, Int32 endFrame)
at Deadline.Slaves.SlaveRenderThread.a(TaskLogWriter A_0)
=======================================================
Full Log
0: Task timeout is disabled.
0: Loaded job: test_composite (51420596dddf740f14d325cb)
0: INFO: Executing plugin script [PathToSlaveWorkstation]\plugins\Composite.py
0: INFO: About: Autodesk Composite Plugin for Deadline
0: INFO: The current environment will be used for rendering
0: Plugin rendering frame(s): 1
0: INFO: Stdout Handling Enabled: True
0: INFO: Popup Handling Enabled: True
0: INFO: Using Process Tree: True
0: INFO: Hiding DOS Window: True
0: INFO: Creating New Console: False
0: INFO: Render Executable: “C:[PathToComposite]\txrender.exe”
0: INFO: Render Argument: -p “[PathToSlaveWorkstation]\jobsData\abc.txproject” -c “[PathToSlaveWorkstation]\jobsData\abc.txproject” -v “SomeCompositionVersionHere.txcomposition” -s 1 -e 100 -userfilepath “[PathToSlaveWorkstation]\jobsData\xyz.txcomposition”
0: INFO: Startup Directory: “[PathToCompositeStartupDirectory]”
0: INFO: Process Priority: BelowNormal
0: INFO: Process Affinity: default
0: INFO: Process is now running
0: INFO: Process exit code: 3
From the log above, the arguments given to the Composite txrender.exe command are not being set correctly. From the txrender.exe documentation:
txrender Usage:
-p,-project : Project path.
-v,-version : Name of version to render.
-userfilepath : User file path. (default: C:/blah/Preferences.txuser)
-c,-composition : Opens the specified composition.
I have traced the source of this error to the following file in the Deadline repository:
\plugins\Composite\Composite.py: (lines 47 - 63)
def RenderArgument( self ):
auxiliaryFilenames = self.GetAuxiliaryFilenames()
# Common arguments
projectFile = self.GetDataFilename()
arguments = " -p \"" + projectFile + "\""
arguments += " -c \"" + auxiliaryFilenames[0] + "\""
arguments += " -v \"" + self.GetPluginInfoEntry( "CompositionVersion" ) + "\""
arguments += " -s " + str(self.GetStartFrame())
arguments += " -e " + str((self.GetEndFrame() + 1))
# If a users ini file was given use that
if len(auxiliaryFilenames) > 1:
userfile = auxiliaryFilenames[1]
arguments += " -userfilepath \"" + userfile + "\""
return arguments
Apparently the index used to reference the “auxiliaryFilenames” collection is offset by 1. The following updated code will assemble the correct arguments for the Composite txrender.exe command:
def RenderArgument( self ):
auxiliaryFilenames = self.GetAuxiliaryFilenames()
# Common arguments
projectFile = self.GetDataFilename()
arguments = " -p \"" + projectFile + "\""
arguments += " -c \"" + auxiliaryFilenames[1] + "\""
arguments += " -v \"" + self.GetPluginInfoEntry( "CompositionVersion" ) + "\""
arguments += " -s " + str(self.GetStartFrame())
arguments += " -e " + str((self.GetEndFrame() + 1))
# If a users ini file was given use that
if len(auxiliaryFilenames) > 2:
userfile = auxiliaryFilenames[2]
arguments += " -userfilepath \"" + userfile + "\""
return arguments
Re-submitting the job in the Monitor UI will now result in a successful render.
Cheers,
Parmjit V.
Software Developer