I've been struggling to figure this one out. Currently, if any job runs longer than 30 min, it will restart processing with the same job id and not show that an error occurred. (which from the job standpoint there was no error). After this first restart of the job, it seems to be able to continue for as long as necessary (i've tested up to 6 hours).
I even tried with the simplest example:
public void TestSkipExecution(PerformContext context)
I see a similar issue at https://github.com/HangfireIO/Hangfire/issues/514 but was resolved.