I was constantly getting an error “This Apex class has batch or future jobs pending or in progress” whenever I was saving Apex class written for batch Apex. This was happening in the developer org where we develop a test managed package for the AppExchange product. There was no way I can throw out this org and start with a new one.
For debugging started with following steps:
- Check Schedule Jobs – No schedule jobs (If any are running and related to your class somehow you can just delete the schedule job)
- Check Apex jobs – No Apex is job is running or in Queued state. (If are running you could just click “Abort”)
- Google – Found some known issue and checked workarounds which were of nouse.
As nothing worked logged a case through Salesforce Partner portal as job needed to be deleted from the backend. But case got categorized as a developer support case. Not having the premium support it Case got closed 😐
Then started research –
- Tried deleting all running schedule jobs through Apex in case any is stuck in the background and not visible on UI.
No Luck!! 🙁
- Making query on the AsyncApexJob object –
SELECT Id, Status, JobItemsProcessed, TotalJobItems, ParentJobId, NumberOfErrors FROM AsyncApexJob Where Status =
'Queued'et voila!! returns the job stuck in Queued status which was not visible through UI. I thought my job is over I will just copy Id from the query result and execute “System.abortJob(jobid);” But that didn’t work. It needs a ParentJobId which was missing from this entry. – No Luck 🙁
- Then came across a tiny line in the Salesforce Article. If you want to abort a job using Job Id use API version 32.0 or earlier. Login to workbench using v32.0 and from “Execute anonymous” execute System.abortjob(). This time it worked… Finally!!! 🙂