Abdelkrim
Abdelkrim

Reputation: 2158

Google Appengine runs Cron tasks even if they are no cron.yaml file defined

I start receiving errors from the CRON service even if I have not a single cron.yaml file defined.

The cron task runs every 4 hours.

I really don't know where to look at in order to correct such behaviour. Please tell me what kind of information is needed to correct the error.

Cron jobs

First Cron error

Cron Job : /admin/push/feedbackservice/process - Query APNS Feedback service and remove inactive devices

Schedule/Last Run/Last Status (All times are UTC) : every 4 hours (UTC) 2014/06/10 07:00:23 on time Failed

Second Cron error

Cron job: /admin/push/notifications/cleanup - Remove no longer needed records of processed notifications

Schedule/Last Run/Last Status (All times are UTC) : every day 04:45 (America/New_York) - 2014/06/09 04:45:01 on time Failed

Console log

2014-06-10 09:00:24.064 /admin/push/feedbackservice/process 404 626ms 0kb AppEngine-Google; (+http://code.google.com/appengine) module=default version=1 0.1.0.1 - - [10/Jun/2014:00:00:24 -0700] "GET /admin/push/feedbackservice/process HTTP/1.1" 404 113 - "AppEngine-Google; (+http://code.google.com/appengine)" "xxx-dev.appspot.com" ms=627 cpu_ms=353 cpm_usd=0.000013 queue_name=__cron task_name=471b6c0016980883f8225c35b96 loading_request=1 app_engine_release=1.9.5 instance=00c61b17c3c8be02ef95578ba43 I 2014-06-10 09:00:24.063

This request caused a new process to be started for your application, and thus caused your application code to be loaded for the first time. This request may thus take longer and use more CPU than a typical request for your application.

Upvotes: 1

Views: 712

Answers (1)

MMazzon
MMazzon

Reputation: 394

The tip from @Greg above solved that problem for me.

Note the full sequence of events:

  1. A past version of the application included a cron.yaml file that ran every hour

  2. In a successive version, I removed the cron.yaml file, thinking that was enough, but then I discovered that the cron jobs were still running!

  3. Uploading an EMPTY cron.yaml file didn't change things either

  4. Uploading a cron.yaml file with only "cron:" in it did it -- the cron jobs just stopped.

From the above I reckon that the way things work is this: when a cron.yaml file is found it is parsed, and if the syntax is correct, its cron jobs are loaded in the app server. And apparently, just removing the cron.yaml file from a successive version, or loading an empty one (i.e. un-parseable, bad syntax) doesn't remove the cron jobs. The only way to remove the cron jobs is to load a new, PARSEABLE cron.yaml file, i.e. with the "cron:" line, but with no actual jobs after that.

And the proof of the pudding is that after you do that, you can now remove cron.yaml from successive versions, and those old cron jobs will not come back any more.

Upvotes: 1

Related Questions