diff --git a/compute_tools/src/compute.rs b/compute_tools/src/compute.rs index 373f05ab2f..d32c93f365 100644 --- a/compute_tools/src/compute.rs +++ b/compute_tools/src/compute.rs @@ -2,6 +2,7 @@ use std::collections::HashMap; use std::env; use std::fs; use std::io::BufRead; +use std::io::Write; use std::os::unix::fs::PermissionsExt; use std::path::Path; use std::process::{Command, Stdio}; @@ -14,6 +15,7 @@ use chrono::{DateTime, Utc}; use futures::future::join_all; use futures::stream::FuturesUnordered; use futures::StreamExt; +use notify::event; use postgres::{Client, NoTls}; use tokio; use tokio_postgres; @@ -644,9 +646,30 @@ impl ComputeNode { } else { vec![] }) + .stderr(Stdio::piped()) .spawn() .expect("cannot start postgres process"); + let stderr = pg.stderr.take().unwrap(); + std::thread::spawn(move || { + let reader = std::io::BufReader::new(stderr); + let mut last_lines = vec![]; + for line in reader.lines() { + if let Ok(line) = line { + if line.starts_with("2023-") { + // print all lines from the previous postgres instance + let combined = format!("PG:{}\n", last_lines.join("\u{200B}")); + let res = std::io::stderr().lock().write_all(combined.as_bytes()); + if let Err(e) = res { + error!("failed to write to stderr: {}", e); + } + last_lines.clear(); + } + last_lines.push(line); + } + } + }); + wait_for_postgres(&mut pg, pgdata_path)?; Ok(pg) diff --git a/test_runner/regress/test_normal_work.py b/test_runner/regress/test_normal_work.py index 50de99adb5..5fb4623b56 100644 --- a/test_runner/regress/test_normal_work.py +++ b/test_runner/regress/test_normal_work.py @@ -6,12 +6,14 @@ from fixtures.pageserver.http import PageserverHttpClient def check_tenant(env: NeonEnv, pageserver_http: PageserverHttpClient): tenant_id, timeline_id = env.neon_cli.create_tenant() - endpoint = env.endpoints.create_start("main", tenant_id=tenant_id) + endpoint = env.endpoints.create_start("main", tenant_id=tenant_id, config_lines=[ + "log_statement=all", + ],) # we rely upon autocommit after each statement res_1 = endpoint.safe_psql_many( queries=[ - "CREATE TABLE t(key int primary key, value text)", - "INSERT INTO t SELECT generate_series(1,100000), 'payload'", + "CREATE TABLE \nt(key int primary key, value text)", + "INSERT INTO \n\nt SELECT generate_series(1,100000), 'payload'", "SELECT sum(key) FROM t", ] )