Error code 204 - Cron job is deployed successfully but fails to run.
adam-hurwitz opened this issue · 6 comments
Expected
Defined Firebase Cloud Storage directory gs://my-project-name.appspot.com/ to be populated with all of the collections in the my-project-name's Firestore database when the deployed Cron job is ran on GCP with the implementation followed by the Schedule data exports documentation.
Observed
Cron job is deployed successfully, but fails to run. The logs are showing Error code 204.
Logs
2019-01-24 11:19:47.818 PST GET 500 0 B 998 ms AppEngine-Google; (+http://code.google.com/appengine) /cloud-firestore-export?outputUriPrefix=gs://[my-project-name].appspot.com/backups/ 0.1.0.1 - - [24/Jan/2019:11:19:47 -0800] "GET /cloud-firestore-export?outputUriPrefix=gs://[my-project-name].appspot.com/backups/ HTTP/1.1" 500 - - "AppEngine-Google; (+http://code.google.com/appengine)" "cloud-firestore-admin.[my-project-name].appspot.com" ms=998 cpu_ms=482 cpm_usd=0 loading_request=1 instance=00c61b117c5fba456c9edcc5f075ccacb339b96d0bc7a8e35beb60cd3fd50a149d4c2f296b app_engine_release=1.9.71 trace_id=65811179272fc9c721d10e6cab7cdf70
{
httpRequest: {
status: 500
}
insertId: "5c4a0fd4000c78b4e510bd7a"
labels: {
clone_id: "00c61b117c5fba456c9edcc5f075ccacb339b96d0bc7a8e35beb60cd3fd50a149d4c2f296b"
}
logName: "projects/[my-project-name]/logs/appengine.googleapis.com%2Frequest_log"
operation: {
first: true
id: "5c4a0fd300ff0c7e86eb62e71c0001737e636f696e76657273652d6d656469612d73746167696e670001323031393031323474313130333331000100"
last: true
producer: "appengine.googleapis.com/request_id"
}
protoPayload: {
@type: "type.googleapis.com/google.appengine.logging.v1.RequestLog"
appEngineRelease: "1.9.71"
appId: "s~[my-project-name]"
endTime: "2019-01-24T19:19:48.816961Z"
finished: true
first: true
host: "cloud-firestore-admin.[my-project-name].appspot.com"
httpVersion: "HTTP/1.1"
instanceId: "00c61b117c5fba456c9edcc5f075ccacb339b96d0bc7a8e35beb60cd3fd50a149d4c2f296b"
instanceIndex: -1
ip: "0.1.0.1"
latency: "0.998139s"
line: [
0: {
logMessage: "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."
severity: "INFO"
time: "2019-01-24T19:19:48.816504Z"
}
1: {
logMessage: "A problem was encountered with the process that handled this request, causing it to exit. This is likely to cause a new process to be used for the next request to your application. (Error code 204)"
severity: "ERROR"
time: "2019-01-24T19:19:48.816507Z"
}
]
megaCycles: "482"
method: "GET"
pendingTime: "0.010711670s"
requestId: "5c4a0fd300ff0c7e86eb62e71c0001737e636f696e76657273652d6d656469612d73746167696e670001323031393031323474313130333331000100"
resource: "/cloud-firestore-export?outputUriPrefix=gs://[my-project-name].appspot.com/backups/"
startTime: "2019-01-24T19:19:47.818822Z"
status: 500
taskName: "6c799fe7c1a404ec22117967738fcca9"
taskQueueName: "__cron"
traceId: "65811179272fc9c721d10e6cab7cdf70"
traceSampled: true
urlMapEntry: "auto"
userAgent: "AppEngine-Google; (+http://code.google.com/appengine)"
versionId: "20190124t110331"
wasLoadingRequest: true
}
receiveTimestamp: "2019-01-24T19:19:48.824360342Z"
resource: {
labels: {
module_id: "default"
project_id: "my-project-name"
version_id: "20190124t110331"
zone: "us17"
}
type: "gae_app"
}
severity: "ERROR"
timestamp: "2019-01-24T19:19:47.818822Z"
trace: "projects/[my-project-name]/traces/65811179272fc9c721d10e6cab7cdf70"
traceSampled: true
}
2019-01-24 11:19:48.816 PST
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.
2019-01-24 11:19:48.816 PST
A problem was encountered with the process that handled this request, causing it to exit. This is likely to cause a new process to be used for the next request to your application. (Error code 204)
Configuration
- Billing is enabled for both the GCP and Firebase project.
- A Firebase Storage bucket is currently created and in use to store mp3 and txt files under a directory named content with a new empty directory named backups created to store the results of the export Cron job.
- The following permissions have been enabled as recommended in the section Configure access permissions.
-
For the package.json the
name,version, anddescriptionattributes have been changed specific to the project. -
In the cron.yaml the
descriptionandurlattributes are customized. Forurlthe following has been attempted in order to export all collections:/cloud-firestore-export?outputUriPrefix=gs://[my-project-name].appspot.com/backups
Attempted Solutions
- Version code: Incrementing the version code on subsequent deploys.
cron.yamlurl:- Adding
/after directory:/cloud-firestore-export?outputUriPrefix=gs://[my-project-name].appspot.com/backups/ - Adding
collectionsquery but leaving it empty:/cloud-firestore-export?outputUriPrefix=gs://[my-project-name].appspot.com/backups&collections
- Adding
- IAM Permissions:
- Adding Cloud Datastore Import Export Admin permission to my user account my-name@domain.com since that is the email account associated to the project under
gcloud config configurations list. - Adding the Storage Admin to @appspot.gserviceaccount.com in addition to the Owner permission.
- Adding Cloud Datastore Import Export Admin permission to my user account my-name@domain.com since that is the email account associated to the project under
Update: I just re-implemented the Schedule data exports from scratch without changing the packcage.json name, version, or description or cron.yaml's description and the Cron runs successfully.
I'm attempting to isolate what element caused the Cron not to run in the initial implementation.
The issue is that the package.json version cannot be lower than 1.0.0. I was attempting to use 0.16.0. I'm sending a note to the documentation team as well as this should be included in the docs to save people time.
@AdamSHurwitz that's really interesting, how did you figure that out?
@samtstern For the first implementation yesterday morning I changed the packcage.json name, version, description and the cron.yaml's description and worked backwards to debug why the app was deploying but not running. After hours of tinkering around I decided to start from scratch and implement 100% based on the documentation and then customize each attribute in order to isolate that when the version was changed the running of the Cron Job broke.
This is something the team may want to investigate at as a P3 as it is non-blocking.
@AdamSHurwitz thanks for the very thorough investigation, I have filed this internally as bug 123426378
Awesome, thank you for filing @samtstern!



