Changing nuke script after submission


#1

Hi there:

Sometimes compositors does not want to version as they are testing the changes and want to submit the same script with a new write location. But it seems that once we overwrite the existing script that was submitted in the farm - the existing script reads the new script and renders the changes and hence we get mixed bag of renders. Looking at the log as seen below - I was expecting the changes not to show up since the script get stored in a temp folder as seem in the log line …?
2019-09-26 16:26:18: 0: INFO: Argument: -V 2 --nukex -x -F 1501-1503 "/tmp/Thinkbox/Deadline7/slave/mk17/jobsData/5d8d1ecf1f67b328a17a05f0/thread0_temprHDxs0/bh_pregame_shot016_comp_v027.nk"

********log
2019-09-26 16:25:53: 0: Start Job timeout is disabled.

2019-09-26 16:25:53: 0: Task timeout is disabled.

2019-09-26 16:25:53: 0: Loaded job: bh_pregame_shot016_comp_v027.nk (5d8d1ecf1f67b328a17a05f0)

2019-09-26 16:25:53: 0: INFO: Executing plugin script /tmp/Thinkbox/Deadline7/slave/mk17/plugins/5d8d1ecf1f67b328a17a05f0/Nuke.py

2019-09-26 16:25:53: 0: INFO: About: Nuke Plugin for Deadline

2019-09-26 16:25:53: 0: INFO: The job’s environment will be merged with the current environment before rendering

2019-09-26 16:25:53: 0: INFO: Scrubbing the LD and DYLD LIBRARY paths

2019-09-26 16:25:53: 0: INFO: Prepping OFX cache

2019-09-26 16:25:53: 0: INFO: Checking Nuke temp path: /var/tmp/nuke-u1000

2019-09-26 16:25:53: 0: INFO: Path already exists

2019-09-26 16:25:53: 0: INFO: OFX cache prepped

2019-09-26 16:25:53: 0: Plugin rendering frame(s): 1501-1503

2019-09-26 16:26:18: 0: INFO: Stdout Redirection Enabled: True

2019-09-26 16:26:18: 0: INFO: Asynchronous Stdout Enabled: True

2019-09-26 16:26:18: 0: INFO: Stdout Handling Enabled: True

2019-09-26 16:26:18: 0: INFO: Popup Handling Enabled: True

2019-09-26 16:26:18: 0: INFO: QT Popup Handling Enabled: False

2019-09-26 16:26:18: 0: INFO: WindowsForms10.Window.8.app.* Popup Handling Enabled: False

2019-09-26 16:26:18: 0: INFO: Using Process Tree: True

2019-09-26 16:26:18: 0: INFO: Hiding DOS Window: True

2019-09-26 16:26:18: 0: INFO: Creating New Console: False

2019-09-26 16:26:18: 0: INFO: Running as user: marco

2019-09-26 16:26:18: 0: INFO: Executable: "/usr/local/Nuke9.0v8/Nuke9.0"

2019-09-26 16:26:18: 0: INFO: Rendering with NukeX

2019-09-26 16:26:18: 0: INFO: Argument: -V 2 --nukex -x -F 1501-1503 "/tmp/Thinkbox/Deadline7/slave/mk17/jobsData/5d8d1ecf1f67b328a17a05f0/thread0_temprHDxs0/bh_pregame_shot016_comp_v027.nk"

2019-09-26 16:26:18: 0: INFO: Startup Directory: "/usr/local/Nuke9.0v8"

2019-09-26 16:26:18: 0: INFO: Process Priority: BelowNor


#2

hi @biju_ramachandran,

the temp location, that the job is using, is created when the plugin launches, on that particular node, it is copied locally to the slave (worker).

A few ways you could do this:

submit the script as an auxillary file, that way deadline keeps a copy in the repo and uses that, cant remember off the top of my head how that works with nuke. @eamsler might have the better explanation.

pipeline it, wrap the nuke submission, so that it does an incremental save on submission, this could be done either on the artists behalf, so that the artist uses the new increment to keep working on and the previews increment is sent to the farm. We have overwritten nukes save functionality, so that when its running in a shot context, it always saves a new increment, you can never save over the top of previous changes.

Do it transparently, wrap the submitter, copy the file to a “render location”, and let the farm submission use the copy, that allows the artist to keep working and the farm to have an unchanged version.

I prefer option 2) , because if you ever need to rerender or revert to a particular version of a file, or match a render, you now have a apples to apples nk file that was used to create the nuke render…

hope that helps.
kym


#3

Thanks Kym - I have peen looking at the second option - To pipeline it, means to create you one in house python Deadline API. I was looking to create the following:-

  1. Create a python class - a general render class - that will take most common parameters for any rendering application.
  2. Instantiate this above class for each rendering application with any additional parameters that may be required to create a job job for Deadline.
  3. Write the jobfile to a folder and then submit this job file to the farm.

I was looking around for some information the internet that will help me start start to do the above mentione task. Please let me know if you have come across any documentation regarding it.?

Thanks and much appreciated.

/biju