mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-24 11:49:51 +00:00
# Which Problems Are Solved
When Postgres was not ready when the API was started, the API failed
immediately.
This made task orchestration hard, especially in a platform agnostic
way:
- The current health check in the Nx target `@zitadel/api:prod` uses the
timeout command, which is not installed on all platforms and behaves
unpredictably
- The current health check in the Nx target `@zitadel/api:prod` requires
the DB to have been started using `@zitadel/zitadel:db`
# How the Problems Are Solved
- Additional configuration option `Database.Postgres.AwaitInitialConn`
is added and defaults to *0m* for backwards compatibility.
- If a duration is configured, the API retries to ping the database
until it succeeds
- The API sleeps for a second between each ping.
- It emits an info-level log with the error on each try.
- When the configured duration times out before the ping is successful,
the error is returned and the command exits with a failure code.
- When the ping succeeds within the configured duration, the API goes on
with the init, setup or start phase.
# Additional Context
- Relates to internally reported problems with the current DB health
check command
[here](https://zitadel.slack.com/archives/C07EUL5H83A/p1759915009839269?thread_ts=1759912259.410789&cid=C07EUL5H83A)
and
[here](https://zitadel.slack.com/archives/C07EUL5H83A/p1759918324246249?thread_ts=1759912259.410789&cid=C07EUL5H83A).
(cherry picked from commit 7ba6870baf)
61 lines
1.6 KiB
YAML
61 lines
1.6 KiB
YAML
Log:
|
|
Level: info
|
|
|
|
ExternalSecure: false
|
|
|
|
Database:
|
|
postgres:
|
|
# This makes the e2e config reusable with an out-of-docker zitadel process and an /etc/hosts entry
|
|
database: zitadel
|
|
AwaitInitialConn: 5m
|
|
MaxOpenConns: 15
|
|
MaxIdleConns: 10
|
|
Database: zitadel
|
|
User:
|
|
Username: zitadel
|
|
Password: zitadel
|
|
SSL:
|
|
Mode: disable
|
|
Admin:
|
|
Username: postgres
|
|
Password: postgres
|
|
SSL:
|
|
Mode: disable
|
|
|
|
TLS:
|
|
Enabled: false
|
|
|
|
FirstInstance:
|
|
Org:
|
|
Human:
|
|
PasswordChangeRequired: false
|
|
|
|
Console:
|
|
InstanceManagementURL: "https://example.com/instances/{{.InstanceID}}"
|
|
|
|
Projections:
|
|
Customizations:
|
|
NotificationsQuotas:
|
|
RequeueEvery: 1s
|
|
|
|
Quotas:
|
|
Access:
|
|
Enabled: true
|
|
Debounce:
|
|
MinFrequency: 0s
|
|
MaxBulkSize: 0
|
|
ExhaustedCookieKey: "zitadel.quota.limiting"
|
|
ExhaustedCookieMaxAge: "600s"
|
|
|
|
DefaultInstance:
|
|
LoginPolicy:
|
|
MfaInitSkipLifetime: "0"
|
|
Features:
|
|
LoginV2:
|
|
Required: false
|
|
|
|
SystemAPIUsers:
|
|
- cypress:
|
|
KeyData: "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF6aStGRlNKTDdmNXl3NEtUd3pnTQpQMzRlUEd5Y20vTStrVDBNN1Y0Q2d4NVYzRWFESXZUUUtUTGZCYUVCNDV6YjlMdGpJWHpEdzByWFJvUzJoTzZ0CmgrQ1lRQ3ozS0N2aDA5QzBJenhaaUIySVMzSC9hVCs1Qng5RUZZK3ZuQWtaamNjYnlHNVlOUnZtdE9sbnZJZUkKSDdxWjB0RXdrUGZGNUdFWk5QSlB0bXkzVUdWN2lvZmRWUVMxeFJqNzMrYU13NXJ2SDREOElkeWlBQzNWZWtJYgpwdDBWajBTVVgzRHdLdG9nMzM3QnpUaVBrM2FYUkYwc2JGaFFvcWRKUkk4TnFnWmpDd2pxOXlmSTV0eXhZc3duCitKR3pIR2RIdlczaWRPRGxtd0V0NUsycGFzaVJJV0syT0dmcSt3MEVjbHRRSGFidXFFUGdabG1oQ2tSZE5maXgKQndJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg=="
|
|
|