inlife / nexrender

📹 Data-driven render automation for After Effects

Home Page:https://www.nexrender.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Windows process AfterFX.exe is not killed when no logging is reported for 60 seconds.

Tillaert opened this issue · comments

Describe the bug
Windows process AfterFX.exe is not killed when no logging is reported for 60 seconds. Node process exits.

Information about environment
Windows Server 2019.
Remaining process:


Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
AfterFX.com                   2560 Services                   1  4,764,060 K

Expected behavior
The AfterFX.exe is killed.

Additional info

Any ideas on how to kill a specific AfterFX process related to that particular worker?

Assuming we have lets say 4 workers running in parallel, the problem is that we don't want to accidentally kill a process related to one of the "healthy" workers that are busy on rendering actual videos.

I have no idea. The way we run is, that we have one runner per environment, but that environment doesn't finish, because a process is still running.

I can kill the environment, after a timeout, however, NexRender's logging timeout cannot be disabled (I now set it to Number.MAX_SAFE_INTEGER). If that timeout kicks in, it returns a value (through an exception) which stops the external time-out mechanism.

Due to the nature of AfterEffects, this problem might not be solvable. It would help if the maxUpdateTimeout can be set to zero, disabling the timer (similar to maxRenderTimeout )

Thanks for the info. I'll think of possible solutions.

I wonder, what is the way you separate the environments? This approach sounds very interesting.

I run aftereffects in a VM, using nexrender to configure the job, and when all the processes are done, the VM is destroyed. The dangling process causes the VM not to finish. I could investigate killing the VM from the host, once NexRender has finished.

Maybe on Windows we can use something like #996
To kill aerender and all related to aerender child process (like AfterFX.exe )

After running some tests on Windows 11 + Node 20 LTS + AE 2023 , it looks like instance.kill('SIGINT') only terminates the aerender.exe process and leaves AfterFX.exe process spawned by it, still running

@Tillaert Using VM sounds like an interesting solution, especially for more reliable concurrent processing. Could you please provide a detailed of your solution? Very appreciate!!