AWS Thinkbox Discussion Forums

Ignoring Specific Errors

Hello.

There is certain errors that come up on specific Deadline tasks. If I want to add an exception and ignore this specific error so that the job continues and doesn’t get marked as failed?

Thanks

Usually this means overriding the plugin file, which is in charge of capturing errors and deciding what to do with them.

The process of modifying a plugin file is pretty simple, though it will require occasional maintenance on your part when upgrading Deadline version, etc.

Which plugin are you referring to?

Hello Daniel. Thanks for your reply. In this case its the Nuke.py. At the moment the code is:

# Set the stdout handlers.
self.AddStdoutHandlerCallback( "READY FOR INPUT" ).HandleCallback +=  self.HandleReadyForInput
self.AddStdoutHandlerCallback( ".*ERROR:.*" ).HandleCallback += self.HandleError
self.AddStdoutHandlerCallback( ".*Error:.*" ).HandleCallback += self.HandleError
self.AddStdoutHandlerCallback( ".*Error :.*" ).HandleCallback += self.HandleError
self.AddStdoutHandlerCallback( "Eddy\\[ERROR\\]" ).HandleCallback += self.HandleError

Its good in that it captures any error. But need to add something that will make an execpetion for specific ones.

Thanks

Since as you correctly mentioned these are “catch-all” handlers, you will have to add extra logic to the actual function they call.


def HandleError( self ):
    if( not self.deadlinePlugin.GetBooleanPluginInfoEntryWithDefault( "ContinueOnError", False ) ):
        self.deadlinePlugin.FailRender( self.GetRegexMatch( 0 ) )
    else:
        self.deadlinePlugin.LogWarning( "Skipping error detection as 'Continue On Error' is enabled." )
 

As you can see, we also have all-or-nothing logic here that lets you either fail on all errors, or skip all errors. You will just have to add some extra if statements to check against known message tokens you don’t want to fail on, and only allow it to call FailRender() in all other cases.

Great. I’ll look to change that. Thanks for your help Bobo and Daniel.

I would definitely flip the existing if clause in there, then add your new checks:

def HandleError(self):
    errorMessage = self.GetRegexMatch(0)

    # Abort if we're continuing on errors
    if self.deadlinePlugin.GetBooleanPluginInfoEntryWithDefault('ContinueOnError', False):
        self.deadlinePlugin.LogWarning('Skipping error detection as `Continue On Error` is enabled.')
        return

    # Custom matching
    ignorePhrases = ['flux capacitor', 'banana bread']
    for phrase in ignorePhrases:
        if phrase in errorMessage.lower():
            self.deadlinePlugin.LogWarning('Ignoring error: `{}`'.format(errorMessage))
            return

    # (Default) Fail render
    self.deadlinePlugin.FailRender(errorMessage)
1 Like
Privacy | Site terms | Cookie preferences