cli: Database is not healthy
Describe the bug When trying to start supabase, it ends up giving ‘database is not healthy’. Similar issues are mentioned in https://github.com/supabase/cli/issues/1384 and https://github.com/supabase/cli/issues/1383
To Reproduce Steps to reproduce the behavior:
- Be on PopOS 22.04
- Install latest version of supabase cli (1.88.0) / beta version of cli (1.91.0)
- run supabase init and then supabase start
Expected behavior The local development environment works without any kind of error
Screenshots None
Desktop (please complete the following information):
- OS: PopOS 22.04
- Browser (if applicable) [e.g. chrome, safari]: Not applicable
- Version of CLI [e.g. v1.60.0]: 1.88.0 and 1.91.0
- Version of supabase-js (if applicable) [e.g. v2.22.0]: not applicable
- Version of Node.js (if applicable) [e.g. v16.20.0]: not applicable but it’s v18.16.0
Additional context Before logs, some more detail
docker --version
Docker version 24.0.5, build ced0996
Kernel: 6.4.6-76060406-generic
OS: Pop!_OS 22.04 LTS x86_64
Here are detailed logs
Try 1: Logs here -> https://pastebin.com/PhYHXCyY (due to github max body limit I am unable to send, but it’s log are same as the below ones)
Try 2 with @silentworks -> https://pastebin.com/17uZw2Vb (github max body limit issue) . This log is the most detailed out of all 4 try
Try 3 with @silentworks , disabled all the services in beta cli version
rmmini@pop-os:~/projects/test/test-supabase$ rm -rf supabase
mini@pop-os:~/projects/test/test-supabase$ npx supabase@beta init
Need to install the following packages:
supabase@1.91.0
Ok to proceed? (y) y
Generate VS Code workspace settings? [y/N]
Finished supabase init.
mini@pop-os:~/projects/test/test-supabase$ cat supabase/config.toml
# A string used to distinguish different Supabase projects on the same host. Defaults to the
# working directory name when running `supabase init`.
project_id = "test-supabase"
[api]
enabled = false
# Port to use for the API URL.
port = 54321
# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API
# endpoints. public and storage are always included.
schemas = ["public", "storage", "graphql_public"]
# Extra schemas to add to the search_path of every request. public is always included.
extra_search_path = ["public", "extensions"]
# The maximum number of rows returns from a view, table, or stored procedure. Limits payload size
# for accidental or malicious requests.
max_rows = 1000
[db]
# Port to use for the local database URL.
port = 54322
# Port used by db diff command to initialise the shadow database.
shadow_port = 54320
# The database major version to use. This has to be the same as your remote database's. Run `SHOW
# server_version;` on the remote database to check.
major_version = 15
[db.pooler]
enabled = false
port = 54329
pool_mode = "transaction"
default_pool_size = 20
max_client_conn = 100
[studio]
enabled = false
# Port to use for Supabase Studio.
port = 54323
# External URL of the API server that frontend connects to.
api_url = "http://localhost"
# Email testing server. Emails sent with the local dev setup are not actually sent - rather, they
# are monitored, and you can view the emails that would have been sent from the web interface.
[inbucket]
enabled = false
# Port to use for the email testing server web interface.
port = 54324
# Uncomment to expose additional ports for testing user applications that send emails.
# smtp_port = 54325
# pop3_port = 54326
[storage]
enabled = false
# The maximum file size allowed (e.g. "5MB", "500KB").
file_size_limit = "50MiB"
[auth]
enabled = false
# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used
# in emails.
site_url = "http://localhost:3000"
# A list of *exact* URLs that auth providers are permitted to redirect to post authentication.
additional_redirect_urls = ["https://localhost:3000"]
# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week).
jwt_expiry = 3600
# If disabled, the refresh token will never expire.
enable_refresh_token_rotation = false
# Allows refresh tokens to be reused after expiry, up to the specified interval in seconds.
# Requires enable_refresh_token_rotation = true.
refresh_token_reuse_interval = 10
# Allow/disallow new user signups to your project.
enable_signup = false
[auth.email]
# Allow/disallow new user signups via email to your project.
enable_signup = false
# If enabled, a user will be required to confirm any email change on both the old, and new email
# addresses. If disabled, only the new email is required to confirm.
double_confirm_changes = false
# If enabled, users need to confirm their email address before signing in.
enable_confirmations = false
# Uncomment to customize email template
# [auth.email.template.invite]
# subject = "You have been invited"
# content_path = "./supabase/templates/invite.html"
[auth.sms]
# Allow/disallow new user signups via SMS to your project.
enable_signup = false
# If enabled, users need to confirm their phone number before signing in.
enable_confirmations = false
# Configure one of the supported SMS providers: `twilio`, `twilio_verify`, `messagebird`, `textlocal`, `vonage`.
[auth.sms.twilio]
enabled = false
account_sid = ""
message_service_sid = ""
# DO NOT commit your Twilio auth token to git. Use environment variable substitution instead:
auth_token = "env(SUPABASE_AUTH_SMS_TWILIO_AUTH_TOKEN)"
# Use an external OAuth provider. The full list of providers are: `apple`, `azure`, `bitbucket`,
# `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin`, `notion`, `twitch`,
# `twitter`, `slack`, `spotify`, `workos`, `zoom`.
[auth.external.apple]
enabled = false
client_id = ""
# DO NOT commit your OAuth provider secret to git. Use environment variable substitution instead:
secret = "env(SUPABASE_AUTH_EXTERNAL_APPLE_SECRET)"
# Overrides the default auth redirectUrl.
redirect_uri = ""
# Overrides the default auth provider URL. Used to support self-hosted gitlab, single-tenant Azure,
# or any other third-party OIDC providers.
url = ""
[analytics]
enabled = false
port = 54327
vector_port = 54328
# Configure one of the supported backends: `postgres`, `bigquery`
backend = "postgres"
mini@pop-os:~/projects/test/test-supabase$ npx supabase@beta start
v1.11.1: Pulling from supabase/edge-runtime
52d2b7f179e3: Pull complete
bf4f7b8e8bb8: Pull complete
70255be12b95: Pull complete
ee241ec84ce1: Pull complete
Digest: sha256:d54581491ee217d9f8ed82e752c343003abedf0d6a1587fbde43746b3b18718c
Status: Downloaded newer image for public.ecr.aws/supabase/edge-runtime:v1.11.1
database is not healthy
Try rerunning the command with --debug to troubleshoot the error.
mini@pop-os:~/projects/test/test-supabase$
Try 4 with @silentworks , here I changed the port of database from 54322 to 54522
mini@pop-os:~/projects/test/test-supabase$ npx supabase@beta --version
1.91.0
mini@pop-os:~/projects/test/test-supabase$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
mini@pop-os:~/projects/test/test-supabase$ cat supabase/config.toml
# A string used to distinguish different Supabase projects on the same host. Defaults to the
# working directory name when running `supabase init`.
project_id = "test-supabase"
[api]
enabled = false
# Port to use for the API URL.
port = 54321
# Schemas to expose in your API. Tables, views and stored procedures in this schema will get API
# endpoints. public and storage are always included.
schemas = ["public", "storage", "graphql_public"]
# Extra schemas to add to the search_path of every request. public is always included.
extra_search_path = ["public", "extensions"]
# The maximum number of rows returns from a view, table, or stored procedure. Limits payload size
# for accidental or malicious requests.
max_rows = 1000
[db]
# Port to use for the local database URL.
port = 54522
# Port used by db diff command to initialise the shadow database.
shadow_port = 54320
# The database major version to use. This has to be the same as your remote database's. Run `SHOW
# server_version;` on the remote database to check.
major_version = 15
[db.pooler]
enabled = false
port = 54329
pool_mode = "transaction"
default_pool_size = 20
max_client_conn = 100
[studio]
enabled = false
# Port to use for Supabase Studio.
port = 54323
# External URL of the API server that frontend connects to.
api_url = "http://localhost"
# Email testing server. Emails sent with the local dev setup are not actually sent - rather, they
# are monitored, and you can view the emails that would have been sent from the web interface.
[inbucket]
enabled = false
# Port to use for the email testing server web interface.
port = 54324
# Uncomment to expose additional ports for testing user applications that send emails.
# smtp_port = 54325
# pop3_port = 54326
[storage]
enabled = false
# The maximum file size allowed (e.g. "5MB", "500KB").
file_size_limit = "50MiB"
[auth]
enabled = false
# The base URL of your website. Used as an allow-list for redirects and for constructing URLs used
# in emails.
site_url = "http://localhost:3000"
# A list of *exact* URLs that auth providers are permitted to redirect to post authentication.
additional_redirect_urls = ["https://localhost:3000"]
# How long tokens are valid for, in seconds. Defaults to 3600 (1 hour), maximum 604,800 (1 week).
jwt_expiry = 3600
# If disabled, the refresh token will never expire.
enable_refresh_token_rotation = false
# Allows refresh tokens to be reused after expiry, up to the specified interval in seconds.
# Requires enable_refresh_token_rotation = true.
refresh_token_reuse_interval = 10
# Allow/disallow new user signups to your project.
enable_signup = false
[auth.email]
# Allow/disallow new user signups via email to your project.
enable_signup = false
# If enabled, a user will be required to confirm any email change on both the old, and new email
# addresses. If disabled, only the new email is required to confirm.
double_confirm_changes = false
# If enabled, users need to confirm their email address before signing in.
enable_confirmations = false
# Uncomment to customize email template
# [auth.email.template.invite]
# subject = "You have been invited"
# content_path = "./supabase/templates/invite.html"
[auth.sms]
# Allow/disallow new user signups via SMS to your project.
enable_signup = false
# If enabled, users need to confirm their phone number before signing in.
enable_confirmations = false
# Configure one of the supported SMS providers: `twilio`, `twilio_verify`, `messagebird`, `textlocal`, `vonage`.
[auth.sms.twilio]
enabled = false
account_sid = ""
message_service_sid = ""
# DO NOT commit your Twilio auth token to git. Use environment variable substitution instead:
auth_token = "env(SUPABASE_AUTH_SMS_TWILIO_AUTH_TOKEN)"
# Use an external OAuth provider. The full list of providers are: `apple`, `azure`, `bitbucket`,
# `discord`, `facebook`, `github`, `gitlab`, `google`, `keycloak`, `linkedin`, `notion`, `twitch`,
# `twitter`, `slack`, `spotify`, `workos`, `zoom`.
[auth.external.apple]
enabled = false
client_id = ""
# DO NOT commit your OAuth provider secret to git. Use environment variable substitution instead:
secret = "env(SUPABASE_AUTH_EXTERNAL_APPLE_SECRET)"
# Overrides the default auth redirectUrl.
redirect_uri = ""
# Overrides the default auth provider URL. Used to support self-hosted gitlab, single-tenant Azure,
# or any other third-party OIDC providers.
url = ""
[analytics]
enabled = false
port = 54327
vector_port = 54328
# Configure one of the supported backends: `postgres`, `bigquery`
backend = "postgres"
mini@pop-os:~/projects/test/test-supabase$ npx supabase@beta start
database is not healthy
Try rerunning the command with --debug to troubleshoot the error.
mini@pop-os:~/projects/test/test-supabase$ npx supabase@beta start --debug
Supabase CLI 1.91.0
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Sent Header: Content-Length [321]
2023/08/23 22:37:42 Sent Header: Content-Type [application/json]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:42 Recv First Byte
2023/08/23 22:37:42 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:42 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:42 Sent Header: Content-Length [11482]
2023/08/23 22:37:42 Sent Header: Content-Type [application/json]
2023/08/23 22:37:42 Send Done
2023/08/23 22:37:44 Recv First Byte
2023/08/23 22:37:44 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:44 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:44 Sent Header: Content-Length [0]
2023/08/23 22:37:44 Sent Header: Content-Type [text/plain]
2023/08/23 22:37:44 Send Done
2023/08/23 22:37:46 Recv First Byte
2023/08/23 22:37:46 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:46 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:46 Send Done
2023/08/23 22:37:46 Recv First Byte
2023/08/23 22:37:47 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:47 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:47 Send Done
2023/08/23 22:37:47 Recv First Byte
2023/08/23 22:37:48 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:48 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:48 Send Done
2023/08/23 22:37:48 Recv First Byte
2023/08/23 22:37:49 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:49 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:49 Send Done
2023/08/23 22:37:49 Recv First Byte
2023/08/23 22:37:50 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:50 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:50 Send Done
2023/08/23 22:37:50 Recv First Byte
2023/08/23 22:37:51 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:51 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:51 Send Done
2023/08/23 22:37:51 Recv First Byte
2023/08/23 22:37:52 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:52 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:52 Send Done
2023/08/23 22:37:52 Recv First Byte
2023/08/23 22:37:53 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:53 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:53 Send Done
2023/08/23 22:37:53 Recv First Byte
2023/08/23 22:37:54 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:54 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:54 Send Done
2023/08/23 22:37:54 Recv First Byte
2023/08/23 22:37:55 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:55 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:55 Send Done
2023/08/23 22:37:55 Recv First Byte
2023/08/23 22:37:56 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:56 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:56 Send Done
2023/08/23 22:37:56 Recv First Byte
2023/08/23 22:37:57 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:57 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:57 Send Done
2023/08/23 22:37:57 Recv First Byte
2023/08/23 22:37:58 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:58 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:58 Send Done
2023/08/23 22:37:58 Recv First Byte
2023/08/23 22:37:59 Sent Header: Host [api.moby.localhost]
2023/08/23 22:37:59 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:37:59 Send Done
2023/08/23 22:37:59 Recv First Byte
2023/08/23 22:38:00 Sent Header: Host [api.moby.localhost]
2023/08/23 22:38:00 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:38:00 Send Done
2023/08/23 22:38:00 Recv First Byte
2023/08/23 22:38:01 Sent Header: Host [api.moby.localhost]
2023/08/23 22:38:01 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:38:01 Send Done
2023/08/23 22:38:01 Recv First Byte
2023/08/23 22:38:02 Sent Header: Host [api.moby.localhost]
2023/08/23 22:38:02 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:38:02 Send Done
2023/08/23 22:38:02 Recv First Byte
2023/08/23 22:38:03 Sent Header: Host [api.moby.localhost]
2023/08/23 22:38:03 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:38:03 Send Done
2023/08/23 22:38:03 Recv First Byte
2023/08/23 22:38:04 Sent Header: Host [api.moby.localhost]
2023/08/23 22:38:04 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:38:04 Send Done
2023/08/23 22:38:04 Recv First Byte
2023/08/23 22:38:05 Sent Header: Host [api.moby.localhost]
2023/08/23 22:38:05 Sent Header: User-Agent [Docker-Client/unknown-version (linux)]
2023/08/23 22:38:05 Send Done
2023/08/23 22:38:05 Recv First Byte
database is not healthy
mini@pop-os:~/projects/test/test-supabase$
Some more info I would like to add is that, i switched to github codespaces which come with docker preinstalled. I ran npm install, then npx supabase init, login , start stuff, and it worked perfectly fine.
About this issue
- Original URL
- State: closed
- Created 10 months ago
- Reactions: 1
- Comments: 36 (10 by maintainers)
Great to know! Our stable release happens every 2 weeks. The next one will be on 19 Sept.
Could you try starting the database only?
If that still errors, please also share the postgres container logs here. You can read it from docker desktop or a second terminal:
That looks like a new error indeed. I’ve created a separate issue to track it https://github.com/supabase/cli/issues/1526
Appreciate your help in getting the logs as it was useful. Let’s continue our discussion in the new thread.
@sweatybridge Did you find the issue ?
Yes i am on beta channel only, i have shared the logs and Postgres logs above. I will try again today in a bit
I’ve further increased timeout to 40s in cli beta release. Let me know if it works.
Also sorry for having go back and forth on this one because the timeout value is machine dependent. I also considered checking the available cpu to determine a timeout value dynamically, but I don’t want to make things too complicated for now.