Skip to content

Commit

Permalink
Move instantiate_tables to wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
pjsier committed Oct 8, 2023
1 parent aa9ce8b commit c8e9c0e
Showing 1 changed file with 18 additions and 12 deletions.
30 changes: 18 additions & 12 deletions martin/src/pg/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ use log::warn;
use serde::{Deserialize, Serialize};
use std::time::Duration;
use tilejson::TileJSON;
use tokio::time::timeout;

use crate::config::{copy_unrecognized_config, UnrecognizedValues};
use crate::pg::config_function::FuncInfoSources;
Expand Down Expand Up @@ -114,24 +113,31 @@ impl PgConfig {

pub async fn resolve(&mut self, id_resolver: IdResolver) -> crate::Result<Sources> {
let pg = PgBuilder::new(self, id_resolver).await?;

let instantiate_tables = pg.instantiate_tables();
pin_mut!(instantiate_tables);
if timeout(Duration::from_secs(5), &mut instantiate_tables)
.await
.is_err()
{
warn!("PostgreSQL table discovery is taking too long. Make sure your table geo columns have a GIS index, or use --disabling-bounds.");
}

let ((mut tables, tbl_info), (funcs, func_info)) =
try_join(instantiate_tables, pg.instantiate_functions()).await?;
try_join(Self::instantiate_tables(&pg), pg.instantiate_functions()).await?;

self.tables = Some(tbl_info);
self.functions = Some(func_info);
tables.extend(funcs);
Ok(tables)
}

async fn instantiate_tables(pg: &PgBuilder) -> Result<(Sources, TableInfoSources)> {
let instantiate_tables = pg.instantiate_tables();
pin_mut!(instantiate_tables);

let timeout_future = tokio::time::sleep(Duration::from_secs(5));

tokio::select! {
result = &mut instantiate_tables => {
result
}
() = timeout_future => {
warn!("PostgreSQL table discovery is taking too long. Make sure your table geo columns have a GIS index, or use --disabling-bounds.");
instantiate_tables.await
}
}
}
}

#[cfg(test)]
Expand Down

0 comments on commit c8e9c0e

Please sign in to comment.