System.AsyncException: Maximum callout depth has been reached

There is an Idea out there called Allow callouts from chained queueable Apex jobs. Here's the description, with some minor reformatting:

Allow callouts from chained queueable Apex jobs

Currently (Spring '15 release) callouts are not allowed from chained queueable jobs. The intial queable job will perform the web callout but any subsequent jobs that are chained from the first job will fail with the "System.AsyncException: Maximum callout depth has been reached." This severly limits the usefulness of chaining queueable Apex jobs for our use case for running asynchronous Apex code.

See the following links:

  • http://blog.enree.co/2014/11/salesforce-apex-queueable-interfaces.html
  • https://developer.salesforce.com/blogs/engineering/2014/10/new-apex-queueable-interface.html

Update

As of Spring '17, you can Make Web Service Callouts from Chained Queueable Jobs:

Apex now allows web service callouts from chained queueable jobs. Previously, a queueable job could make a web service callout, but additional chained jobs that made callouts would throw exceptions.


So, I figured out the issue. The Queueable class had Database.AllowCallouts set in one org, but not the other. I'm not sure why that has an impact, but removing it clears the issue.