From 9f3e8f65fd6f9bbe2c3a0d10e86c1a1554003a84 Mon Sep 17 00:00:00 2001 From: tilacog Date: Wed, 23 Nov 2022 20:33:53 -0300 Subject: [PATCH 1/6] store/postgres: run locale check after migrations --- store/postgres/src/connection_pool.rs | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/store/postgres/src/connection_pool.rs b/store/postgres/src/connection_pool.rs index 55a77ec3f23..33321f16bb8 100644 --- a/store/postgres/src/connection_pool.rs +++ b/store/postgres/src/connection_pool.rs @@ -980,18 +980,6 @@ impl PoolInner { let conn = self.get().map_err(|_| StoreError::DatabaseUnavailable)?; let start = Instant::now(); - if let Err(msg) = catalog::Locale::load(&conn)?.suitable() { - if &self.shard == &*PRIMARY_SHARD && primary::is_empty(&conn)? { - die( - &pool.logger, - "Database does not use C locale. \ - Please check the graph-node documentation for how to set up the database locale", - &msg, - ); - } else { - warn!(pool.logger, "{}.\nPlease check the graph-node documentation for how to set up the database locale", msg); - } - } advisory_lock::lock_migration(&conn) .unwrap_or_else(|err| die(&pool.logger, "failed to get migration lock", &err)); @@ -1024,6 +1012,20 @@ impl PoolInner { }); result.unwrap_or_else(|err| die(&pool.logger, "migrations failed", &err)); debug!(&pool.logger, "Setup finished"; "setup_time_s" => start.elapsed().as_secs()); + + if let Err(msg) = catalog::Locale::load(&conn)?.suitable() { + if &self.shard == &*PRIMARY_SHARD && primary::is_empty(&conn)? { + die( + &pool.logger, + "Database does not use C locale. \ + Please check the graph-node documentation for how to set up the database locale", + &msg, + ); + } else { + warn!(pool.logger, "{}.\nPlease check the graph-node documentation for how to set up the database locale", msg); + } + } + Ok(()) } From 3ca714f83f221519931f208eab124bc1cf56adde Mon Sep 17 00:00:00 2001 From: tilacog Date: Wed, 23 Nov 2022 21:44:22 -0300 Subject: [PATCH 2/6] store/postgres: place succes log message after locale check --- store/postgres/src/connection_pool.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/store/postgres/src/connection_pool.rs b/store/postgres/src/connection_pool.rs index 33321f16bb8..f688db12418 100644 --- a/store/postgres/src/connection_pool.rs +++ b/store/postgres/src/connection_pool.rs @@ -1011,8 +1011,8 @@ impl PoolInner { die(&pool.logger, "failed to release migration lock", &err); }); result.unwrap_or_else(|err| die(&pool.logger, "migrations failed", &err)); - debug!(&pool.logger, "Setup finished"; "setup_time_s" => start.elapsed().as_secs()); + // Locale check if let Err(msg) = catalog::Locale::load(&conn)?.suitable() { if &self.shard == &*PRIMARY_SHARD && primary::is_empty(&conn)? { die( @@ -1026,6 +1026,7 @@ impl PoolInner { } } + debug!(&pool.logger, "Setup finished"; "setup_time_s" => start.elapsed().as_secs()); Ok(()) } From 801810ba75719c035ab8a230175ad6fb4a9f91d8 Mon Sep 17 00:00:00 2001 From: Adam Fuller Date: Wed, 9 Nov 2022 09:44:59 +0000 Subject: [PATCH 3/6] Update docker-compose.yml --- docker/docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 5448bcd0a7d..96c0e685d68 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -44,5 +44,6 @@ services: # , maybe as a # workaround for https://github.com/docker/for-mac/issues/6270? PGDATA: "/var/lib/postgresql/data" + POSTGRES_INITDB_ARGS: "--locale=C" volumes: - ./data/postgres:/var/lib/postgresql/data From 49b037dc8a60efcb9027c099040b32107bbc394a Mon Sep 17 00:00:00 2001 From: Adam Fuller Date: Wed, 9 Nov 2022 10:08:43 +0000 Subject: [PATCH 4/6] Update docker-compose.yml --- docker/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 96c0e685d68..742de12649d 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -44,6 +44,6 @@ services: # , maybe as a # workaround for https://github.com/docker/for-mac/issues/6270? PGDATA: "/var/lib/postgresql/data" - POSTGRES_INITDB_ARGS: "--locale=C" + POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C" volumes: - ./data/postgres:/var/lib/postgresql/data From 5b2546c703567ad132a83cb0f93fdbf7ff96d588 Mon Sep 17 00:00:00 2001 From: Filippo Costa Date: Thu, 24 Nov 2022 16:08:23 +0100 Subject: [PATCH 5/6] ci: fix Postgres' locale in CI --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 272e93808b0..148ba0df491 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,7 @@ jobs: env: POSTGRES_PASSWORD: postgres POSTGRES_DB: graph_node_test + POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C" options: >- --health-cmd pg_isready --health-interval 10s @@ -63,6 +64,7 @@ jobs: env: POSTGRES_PASSWORD: postgres POSTGRES_DB: graph_node_test + POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C" options: >- --health-cmd pg_isready --health-interval 10s From a1d4946b9daab97720d77e070ddd2f9ec0d32878 Mon Sep 17 00:00:00 2001 From: Filippo Costa Date: Thu, 24 Nov 2022 18:00:00 +0100 Subject: [PATCH 6/6] integration-tests: createdb with C locale --- tests/tests/common/docker.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/tests/common/docker.rs b/tests/tests/common/docker.rs index 76c1f73b7d0..612c67878de 100644 --- a/tests/tests/common/docker.rs +++ b/tests/tests/common/docker.rs @@ -240,7 +240,7 @@ impl DockerTestClient { // 1. Create Exec let config = exec::CreateExecOptions { - cmd: Some(vec!["createdb", &database_name]), + cmd: Some(vec!["createdb", "-E", "UTF8", "--locale=C", &database_name]), user: Some("postgres"), attach_stdout: Some(true), ..Default::default()