mirror of
https://github.com/lingble/chatwoot.git
synced 2026-03-20 03:52:43 +00:00
By default, Rails does not set a timeout on database statements. For example, this will run for a full day, even if your ruby process goes away. But it's configurable in the database.yml with the statement_timeout variable.
Hence we are enforcing a 14s timeout by default. Migration commands inside chatwoot will run with a 10 minutes timeout. For specific cases like migrations, we can override this timeout using the environment variable POSTGRES_STATEMENT_TIMEOUT while starting a new rails console.
Test the timeouts from the rails console using.
```
ActiveRecord::Base.connection.execute("SELECT pg_sleep(15);")
```
ref: https://github.com/ankane/the-ultimate-guide-to-ruby-timeouts#postgresql
ref: https://til.hashrocket.com/posts/b44baf657d-railspg-statement-timeout-
29 lines
1.2 KiB
YAML
29 lines
1.2 KiB
YAML
default: &default
|
|
adapter: postgresql
|
|
encoding: unicode
|
|
host: <%= ENV.fetch('POSTGRES_HOST', 'localhost') %>
|
|
port: <%= ENV.fetch('POSTGRES_PORT', '5432') %>
|
|
# ref: https://github.com/mperham/sidekiq/issues/2985#issuecomment-531097962
|
|
pool: <%= Sidekiq.server? ? Sidekiq.options[:concurrency] : ENV.fetch('RAILS_MAX_THREADS', 5) %>
|
|
variables:
|
|
# we are setting this value to be close to the racktimeout value. we will iterate and reduce this value going forward
|
|
statement_timeout: <%= ENV["POSTGRES_STATEMENT_TIMEOUT"] || "14s" %>
|
|
|
|
development:
|
|
<<: *default
|
|
database: <%= ENV.fetch('POSTGRES_DATABASE', 'chatwoot_dev') %>
|
|
username: <%= ENV.fetch('POSTGRES_USERNAME', 'postgres') %>
|
|
password: <%= ENV.fetch('POSTGRES_PASSWORD', '') %>
|
|
|
|
test:
|
|
<<: *default
|
|
database: <%= ENV.fetch('POSTGRES_DATABASE', 'chatwoot_test') %>
|
|
username: <%= ENV.fetch('POSTGRES_USERNAME', 'postgres') %>
|
|
password: <%= ENV.fetch('POSTGRES_PASSWORD', '') %>
|
|
|
|
production:
|
|
<<: *default
|
|
database: <%= ENV.fetch('POSTGRES_DATABASE', 'chatwoot_production') %>
|
|
username: <%= ENV.fetch('POSTGRES_USERNAME', 'chatwoot_prod') %>
|
|
password: <%= ENV.fetch('POSTGRES_PASSWORD', 'chatwoot_prod') %>
|