Fix PostgreSQL readiness check timeout in bootstrap
All checks were successful
BotServer CI / build (push) Successful in 13m13s
All checks were successful
BotServer CI / build (push) Successful in 13m13s
- Use local pg_isready path when available (./botserver-stack/bin/tables/bin/pg_isready) - Fall back to system pg_isready if local binary not found - Prevents 30-second timeout during bootstrap when PostgreSQL is actually running - Applied to both readiness checks in start_all() method
This commit is contained in:
parent
07ff7a6297
commit
7da1442c91
3 changed files with 35 additions and 19 deletions
|
|
@ -7,7 +7,7 @@ on:
|
||||||
branches: ["main"]
|
branches: ["main"]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
CARGO_BUILD_JOBS: 2
|
CARGO_BUILD_JOBS: 5
|
||||||
CARGO_NET_RETRY: 10
|
CARGO_NET_RETRY: 10
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ declare -A container_limits=(
|
||||||
["*bot*"]="2048MB:25ms/100ms"
|
["*bot*"]="2048MB:25ms/100ms"
|
||||||
["*oppbot*"]="4096MB:50ms/100ms"
|
["*oppbot*"]="4096MB:50ms/100ms"
|
||||||
["*meeting*"]="4096MB:100ms/100ms"
|
["*meeting*"]="4096MB:100ms/100ms"
|
||||||
["*alm*"]="2048MB:50ms/100ms"
|
["*alm*"]="4048MB:200ms/100ms"
|
||||||
["*vault*"]="2048MB:50ms/100ms"
|
["*vault*"]="2048MB:50ms/100ms"
|
||||||
["*alm-ci*"]="8192MB:200ms/100ms" # CHANGED: 100ms → 200ms (HIGHEST PRIORITY)
|
["*alm-ci*"]="8192MB:200ms/100ms" # CHANGED: 100ms → 200ms (HIGHEST PRIORITY)
|
||||||
["*system*"]="4096MB:50ms/100ms"
|
["*system*"]="4096MB:50ms/100ms"
|
||||||
|
|
@ -45,7 +45,7 @@ declare -A container_priority=(
|
||||||
["*system*"]="5" # Normal priority
|
["*system*"]="5" # Normal priority
|
||||||
["*bot*"]="4" # Lower priority
|
["*bot*"]="4" # Lower priority
|
||||||
["*doc-editor*"]="4" # Lower priority
|
["*doc-editor*"]="4" # Lower priority
|
||||||
["*alm*"]="4" # Lower priority
|
["*alm*"]="10" # Lower priority
|
||||||
["*mailer*"]="3" # Lowest priority
|
["*mailer*"]="3" # Lowest priority
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -456,16 +456,24 @@ impl BootstrapManager {
|
||||||
match pm.start("tables") {
|
match pm.start("tables") {
|
||||||
Ok(_child) => {
|
Ok(_child) => {
|
||||||
let mut ready = false;
|
let mut ready = false;
|
||||||
|
let pg_isready_path = self.stack_dir("bin/tables/bin/pg_isready");
|
||||||
for attempt in 1..=30 {
|
for attempt in 1..=30 {
|
||||||
tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
|
tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
|
||||||
let status = SafeCommand::new("pg_isready")
|
let pg_isready_exists = pg_isready_path.exists();
|
||||||
.and_then(|c| {
|
let status = if pg_isready_exists {
|
||||||
c.args(&["-h", "localhost", "-p", "5432"])
|
safe_sh_command(&format!("{} -h localhost -p 5432", pg_isready_path.display()))
|
||||||
})
|
.map(|o| o.status.success())
|
||||||
.ok()
|
.unwrap_or(false)
|
||||||
.and_then(|cmd| cmd.execute().ok())
|
} else {
|
||||||
.map(|o| o.status.success())
|
SafeCommand::new("pg_isready")
|
||||||
.unwrap_or(false);
|
.and_then(|c| {
|
||||||
|
c.args(&["-h", "localhost", "-p", "5432"])
|
||||||
|
})
|
||||||
|
.ok()
|
||||||
|
.and_then(|cmd| cmd.execute().ok())
|
||||||
|
.map(|o| o.status.success())
|
||||||
|
.unwrap_or(false)
|
||||||
|
};
|
||||||
if status {
|
if status {
|
||||||
ready = true;
|
ready = true;
|
||||||
info!("PostgreSQL started and ready (attempt {})", attempt);
|
info!("PostgreSQL started and ready (attempt {})", attempt);
|
||||||
|
|
@ -502,16 +510,24 @@ impl BootstrapManager {
|
||||||
warn!("PostgreSQL might already be running: {}", e);
|
warn!("PostgreSQL might already be running: {}", e);
|
||||||
|
|
||||||
let mut ready = false;
|
let mut ready = false;
|
||||||
|
let pg_isready_path = self.stack_dir("bin/tables/bin/pg_isready");
|
||||||
for attempt in 1..=30 {
|
for attempt in 1..=30 {
|
||||||
tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
|
tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
|
||||||
let status = SafeCommand::new("pg_isready")
|
let pg_isready_exists = pg_isready_path.exists();
|
||||||
.and_then(|c| {
|
let status = if pg_isready_exists {
|
||||||
c.args(&["-h", "localhost", "-p", "5432"])
|
safe_sh_command(&format!("{} -h localhost -p 5432", pg_isready_path.display()))
|
||||||
})
|
.map(|o| o.status.success())
|
||||||
.ok()
|
.unwrap_or(false)
|
||||||
.and_then(|cmd| cmd.execute().ok())
|
} else {
|
||||||
.map(|o| o.status.success())
|
SafeCommand::new("pg_isready")
|
||||||
.unwrap_or(false);
|
.and_then(|c| {
|
||||||
|
c.args(&["-h", "localhost", "-p", "5432"])
|
||||||
|
})
|
||||||
|
.ok()
|
||||||
|
.and_then(|cmd| cmd.execute().ok())
|
||||||
|
.map(|o| o.status.success())
|
||||||
|
.unwrap_or(false)
|
||||||
|
};
|
||||||
if status {
|
if status {
|
||||||
ready = true;
|
ready = true;
|
||||||
info!("PostgreSQL is ready (attempt {})", attempt);
|
info!("PostgreSQL is ready (attempt {})", attempt);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue