I've been digging into this more. I don't know if it's actually Semantic causing it. I can get the error to happen fairly consistently if I edit a page. Sometimes it triggers immediately. Sometimes I need to go to a different page. Sometimes I need to go to a different page and then come back.
I threw a bunch of debugging messages into JobQueueGroup.php and got some interesting results. As far as I understand it, this is what's happening:
* MediaWiki::restInPeace() calls JobQueueGroup::pushLazyJobs().
* JobQueueGroup::pushLazyJobs() (a static function) is supposed to take all the lazy jobs in any JobQueueGroup instance's lazy job buffer and push them to the job queue. In this case, it finds that there are no existing instances of JobQueueGroup, and returns without doing anything.
* MediaWiki::restInPeace(), now confident that any buffered lazy jobs are in the job queue, calls MediaWiki::triggerJobs() to handle any jobs in the queue.
* Via a long chain of calls, MediaWiki:triggerJobs() ends up putting a HTMLCacheUpdateJob in the lazy job buffer. Since there's no existing JobQueueGroup singleton, one is created.
* MediaWiki::restInPeace() has no idea that a new lazy job could have been buffered at this point. It cleans up and returns.
* The singleton instance of JobQueueGroup is destroyed.
* Because there's a job sitting in the JobQueueGroup's lazy buffer, the JobQueueGroup throws the error message and the job is lost.