1
votes

We have a Cloud Function set up which listens to a Cloud Storage bucket for changes. We noticed this morning that for a couple of hours it didn't fire (we have a file uploaded to that bucket every hour, so it should run approx every hour). Then, around 8:18am it fired several times, "catching up" on the fires it missed all at once. To illustrate:

{Normal runs} 4:50am - 1.csv uploaded to GCS bucket 4:50am - Cloud function tirggers on 1.csv 5:50am - 2.csv uploaded to GCS bucket 5:50am - Cloud function triggers on 2.csv {This is where things get weird} 6:50am - 3.csv uploaded to GCS bucket 7:51am - 4.csv uploaded to GCS bucket 8:18am - Cloud function triggers on 3.csv 8:18am - Cloud function triggers on 4.csv {Back to normal} 8:51am - 5.csv uploaded to GCS bucket 8:51am - Cloud function triggers on 5.csv

This is the first time we've noticed this kind of behaviour. GCP status page indicates no outage for Cloud Functions, though the service is still in beta.

Has anyone encountered such intermittent reliability? If this happens regularly we will have to reconsider using it as a part of our architecture.

I should note that the code in our cloud function is quite simple. There is a console.log right at the beginning which we are using to track when it ran (and for what file). No errors occurred within the past 2 weeks.

1

1 Answers

1
votes

From the GCS docs, there's no delivery promise.

Object Change Notification will attempt to deliver notifications to your application in a reliable way. However, be aware that notifications can be delayed indefinitely, and timeliness is not guaranteed.

You might be more reliable performance wiring up your cloud function to GCS Cloud Pub/Sub Notifications using Cloud Pub/Sub triggers; however, Cloud Pub/Sub Notifications don't have a delivery SLA either.

It looks like if you require a notification within a certain time, there's no guarantee, but it will probably work most of the time.