
Houdini to Deadline submission bug analyze

What happened?
If you submit your karma ROP to deadline and happen to have some Fetch nodes (inevidablly) in your LOPs network, you will get a bunch of errors like this:
1 | File “Z:/repository/submission/Houdini/Main\SubmitDeadlineRop.py”, line 208, in _getInputNodes |
That means deadline refused to accept data from Houdini. And the error indicated that the bug locates at the submitter python file.
Where is the bug?
Let’s take a look at the source code.
1 | if not bypassed: |
This is where the error happens. The submitter trys to get the nodes in Fetch node. According to the annotations, it wants to know what kind of node the Fetch node grabs. However something out of expectation happens in the class function getFtechNode().
1 |
|
Here is where the bug start. It trys to get the “source” of the Fetch node, but failed to get anything. So we can see the error saying:
1 | ‘NoneType’ object has no attribute ‘eval’ |
How to fix it?
Deadline user yongsoon provided his solution in Mar 7, 2024, by adding 2 lines of code in the getFtechedNode() function.
yongsoon’s bug report
1 |
|
By returning a None but not force the submitter to trace the source of the Fetch node to avoid the error.
And there is another way to solve it.
Why it happens?
The root reason is that the Deadline is developed before Karma comes up to the stage, and the code serves for ROPs nodes. It works well on ROPs Fetch, but the LOPs Fetch has a different attribute name, that’s why curNode.parm(“source”).eval() will throw an error, for the name of the upper stream source is different.
And that’s why we can return None. For deadline submitter only care about what happens in ROPs, but not LOPs.
Further deeper, another user mois.moshev mentions that if realy needs to fix the logic, we should make change in the func isFetch(), or even more earlier, but not fix it where it is about to crash.
1 | isFetch = ( curNode.type().name() == "fetch" ) |
LOPs Fetch and ROPs Fetch are both called “fetch” and that leads to the issue.
After I checked some documents, here is a more elegant patch.
1 | isFetch = ( curNode.type().name() == "fetch" and curNode.type().category().label() == "Outputs") |
Rambling
This bug actually has been mentioned in 2020, (the fetch bug) but nobody solved it. Deadline has a very slow updating rate, we would never know when would they release their next version or if they would fix this problem.




