Skip to content

Commit c278f60

Browse files
committed
store: Asyncify deployment::block_ptr
1 parent 86290ce commit c278f60

File tree

2 files changed

+21
-13
lines changed

2 files changed

+21
-13
lines changed

store/postgres/src/deployment.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ pub async fn transact_block(
451451
// Performance note: This costs us an extra DB query on every update. We used to put this in the
452452
// `where` clause of the `update` statement, but that caused Postgres to use bitmap scans instead
453453
// of a simple primary key lookup. So a separate query it is.
454-
let block_ptr = block_ptr(conn, &site)?;
454+
let block_ptr = block_ptr(conn, &site).await?;
455455
if let Some(block_ptr_from) = block_ptr {
456456
if block_ptr_from.number >= ptr.number {
457457
return Err(StoreError::DuplicateBlockProcessing(
@@ -528,7 +528,7 @@ pub async fn forward_block_ptr(
528528

529529
// No matching rows were found. This is an error. By the filter conditions, this can only be
530530
// due to a missing deployment (which `block_ptr` catches) or duplicate block processing.
531-
0 => match block_ptr(conn, &site)? {
531+
0 => match block_ptr(conn, &site).await? {
532532
Some(block_ptr_from) if block_ptr_from.number >= ptr.number => Err(
533533
StoreError::DuplicateBlockProcessing(site.deployment.clone(), ptr.number),
534534
),
@@ -603,7 +603,10 @@ pub async fn revert_block_ptr(
603603
}
604604
}
605605

606-
pub fn block_ptr(conn: &mut PgConnection, site: &Site) -> Result<Option<BlockPtr>, StoreError> {
606+
pub async fn block_ptr(
607+
conn: &mut PgConnection,
608+
site: &Site,
609+
) -> Result<Option<BlockPtr>, StoreError> {
607610
use head as h;
608611

609612
let (number, hash) = h::table

store/postgres/src/deployment_store.rs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -536,11 +536,11 @@ impl DeploymentStore {
536536
self.subgraph_info_with_conn(&mut conn, site).await
537537
}
538538

539-
fn block_ptr_with_conn(
539+
async fn block_ptr_with_conn(
540540
conn: &mut PgConnection,
541541
site: Arc<Site>,
542542
) -> Result<Option<BlockPtr>, StoreError> {
543-
deployment::block_ptr(conn, &site)
543+
deployment::block_ptr(conn, &site).await
544544
}
545545

546546
pub(crate) async fn deployment_details(
@@ -931,7 +931,9 @@ impl DeploymentStore {
931931
self.with_conn(async move |conn, cancel| {
932932
cancel.check_cancel()?;
933933

934-
Self::block_ptr_with_conn(conn, site).map_err(Into::into)
934+
Self::block_ptr_with_conn(conn, site)
935+
.await
936+
.map_err(Into::into)
935937
})
936938
.await
937939
}
@@ -982,10 +984,11 @@ impl DeploymentStore {
982984
let layout = store.layout(conn, site.cheap_clone()).await?;
983985

984986
let mut block_ptr = block.cheap_clone();
985-
let latest_block_ptr = match Self::block_ptr_with_conn(conn, site.cheap_clone())? {
986-
Some(inner) => inner,
987-
None => return Ok(None),
988-
};
987+
let latest_block_ptr =
988+
match Self::block_ptr_with_conn(conn, site.cheap_clone()).await? {
989+
Some(inner) => inner,
990+
None => return Ok(None),
991+
};
989992

990993
cancel.check_cancel()?;
991994

@@ -1379,7 +1382,7 @@ impl DeploymentStore {
13791382
) -> Result<(), StoreError> {
13801383
let mut conn = self.get_conn()?;
13811384

1382-
let block_ptr_from = Self::block_ptr_with_conn(&mut conn, site.cheap_clone())?;
1385+
let block_ptr_from = Self::block_ptr_with_conn(&mut conn, site.cheap_clone()).await?;
13831386

13841387
// Sanity check on block numbers
13851388
let from_number = block_ptr_from.map(|ptr| ptr.number);
@@ -1410,7 +1413,7 @@ impl DeploymentStore {
14101413
) -> Result<(), StoreError> {
14111414
let mut conn = self.get_conn()?;
14121415

1413-
let block_ptr_from = Self::block_ptr_with_conn(&mut conn, site.cheap_clone())?;
1416+
let block_ptr_from = Self::block_ptr_with_conn(&mut conn, site.cheap_clone()).await?;
14141417

14151418
// Sanity check on block numbers
14161419
let from_number = block_ptr_from.map(|ptr| ptr.number);
@@ -1442,7 +1445,9 @@ impl DeploymentStore {
14421445
) -> Result<(), StoreError> {
14431446
let mut conn = self.get_conn()?;
14441447
// Unwrap: If we are reverting then the block ptr is not `None`.
1445-
let deployment_head = Self::block_ptr_with_conn(&mut conn, site.cheap_clone())?.unwrap();
1448+
let deployment_head = Self::block_ptr_with_conn(&mut conn, site.cheap_clone())
1449+
.await?
1450+
.unwrap();
14461451

14471452
// Confidence check on revert to ensure we go backward only
14481453
if block_ptr_to.number >= deployment_head.number {

0 commit comments

Comments
 (0)