How an in-process scheduler turned one nightly job into N duplicate writes, and why I moved scheduling out of the app entirely. I was looking at staging data when I found two of something that should only ever exist once: two identical records for the same entity, same start date, created seconds apart. Not corrupted, not half-written. Just two, where there should have been one. The job that creates those records runs once a night. So why did it run twice? Because we run more than one ...