firebase / firebase-tools

The Firebase Command Line Tools
MIT License
3.98k stars 918 forks source link

Deploy with `minInstances` throws an error for framework deployment #7042

Open Thaigun opened 3 months ago

Thaigun commented 3 months ago

[REQUIRED] Environment info

firebase-tools: 13.7.1

Platform: Ubuntu

[REQUIRED] Test case

Adding this configuration in firebase.json to you Firebase hosted Next.js project causes some inconveniences:

"frameworksBackend": {
    "minInstances": 1
}

I think it adds, hidden from the developer, something like this to the deployment configuration (https://firebase.google.com/docs/hosting/full-config#rewrite-cloud-run-container) :

"hosting": {
 // ...

 // Directs all requests from the page `/helloworld` to trigger and run a `helloworld` container
 "rewrites": [ {
   "source": "/helloworld",
   "run": {
     "serviceId": "helloworld",  // "service name" (from when you deployed the container image)
     "pinTag": true
   }
 } ]
}

Related items: #6484 and #6684

[REQUIRED] Steps to reproduce

  1. Make a new Firebase hosting Next.js project, for example with firebase init hosting
  2. Add the aforementioned minInstances setting to your hosting configuration.
  3. Deploy

[REQUIRED] Expected behavior

Successful deploys with no errors. Alternatively, a warning stating that pinTag was not set if that's what happens. Maybe remove pinTag: true from wherever it's set or allow setting pinTag: false in the frameworks configuration.

[REQUIRED] Actual behavior

The deploy script prints the following error:

Error: Function ssrhelloworld has minInstances set and is in a rewrite pinTags=true. These features are not currently compatible with each other..

However, when viewing the Function and associated Cloud Run, minInstances seem to be set and the deploy is successful. A tag is not associated with the revision. Here's a screenshot from the page of the associated Cloud Run:

Thaigun commented 3 months ago

I learnt some more about what happens. While a new revision is created, traffic actually doesn't route there as far as I can tell. I found out by my deleting the previous revision (which did not have minInstances) which immediately broke our site.

Anyway; would be nice to be able to deploy a site that does not suffer from cold starts.

jasan-s commented 2 months ago

so what is recommended never set minInstances or set pingTags to false ?

clementrsu commented 2 months ago

I have the same issue. Not sure what to do...

dualjack commented 1 month ago

Same issue here. What do I do now?

image

YusufTezel commented 1 month ago

Any update on this ? maybe a workaround

Thaigun commented 1 month ago

We ended up migrating the deployment to Cloud Run from Firebase.