AWS Thinkbox Discussion Forums

Bug Report for Houdini Submitter

There is a bug with the Houdini submitter when submitting a job from a fetch node that references a USD Render ROP which might have a LOP Fetch connected to it. Trying to submit the job gives the following error:

  File "//10.0.1.98/DeadlineRepository10.3.0.9/submission/Houdini/Main\SubmitDeadlineRop.py", line 164, in _recursive_PrepareNodesForSubmission
    fetchRop = self._getFetchedNode(curNode)
  File "//10.0.1.98/DeadlineRepository10.3.0.9/submission/Houdini/Main\SubmitDeadlineRop.py", line 260, in _getFetchedNode
    fetchedPath = curNode.parm("source").eval()
AttributeError: 'NoneType' object has no attribute 'eval'

It appears that the submitter is checking for a fetch node with its NodeType.name() which for both the ROP Fetch and LOP Fetch is “fetch”

And the function that it is failing at is attempting to evaluate the “source” parameter in the LOP fetch and failing because a LOP Fetch does not have a “source” param.

    #Line 256 of SubmitDeadlineRop.py
    @staticmethod
    def _getFetchedNode(curNode):

        # In addition to the normal inputs fetch nodes point to an additional node which we can treat like other input nodes
        fetchedPath = curNode.parm("source").eval() # <------ .parm("source") returns None on a LOP fetch
        fetchedRop = curNode.node(fetchedPath)
        return fetchedRop

In my case I fixed it by encasing the .parm() method within a try block and returning None upon an exception:

    @staticmethod
    def _getFetchedNode(curNode):

        # In addition to the normal inputs fetch nodes point to an additional node which we can treat like other input nodes
        try:
            fetchedPath = curNode.parm("source").eval()
        except:
            return None
        fetchedRop = curNode.node(fetchedPath)
        return fetchedRop
1 Like

Based on your description, I think the right implementation would be at the caller. Even earlier, isFetch could return false if the node is a Lop fetch. In any case, this shouldn’t take the fetch rop branch at all.

But good that you solved your issue.

Also works.

isFetch = ( curNode.type().name() == "fetch" )

into

isFetch = ( curNode.type().name() == "fetch" and curNode.type().category().label() == "Outputs")
Privacy | Site terms | Cookie preferences