mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-14 00:42:54 +00:00
tests: wait for uploads in test_secondary_downloads (#7220)
## Problem - https://github.com/neondatabase/neon/issues/6966 This test occasionally failed with some layers unexpectedly not present on the secondary pageserver. The issue in that failure is the attached pageserver uploading heatmaps that refer to not-yet-uploaded layers. ## Summary of changes After uploading heatmap, drain upload queue on attached pageserver, to guarantee that all the layers referenced in the haetmap are uploaded.
This commit is contained in:
@@ -11,6 +11,7 @@ from fixtures.pageserver.utils import (
|
||||
assert_prefix_empty,
|
||||
poll_for_remote_storage_iterations,
|
||||
tenant_delete_wait_completed,
|
||||
wait_for_upload_queue_empty,
|
||||
)
|
||||
from fixtures.remote_storage import LocalFsStorage, RemoteStorageKind, S3Storage
|
||||
from fixtures.types import TenantId, TimelineId
|
||||
@@ -472,6 +473,10 @@ def test_secondary_downloads(neon_env_builder: NeonEnvBuilder):
|
||||
log.info("Synchronizing after initial write...")
|
||||
ps_attached.http_client().tenant_heatmap_upload(tenant_id)
|
||||
|
||||
# Ensure that everything which appears in the heatmap is also present in S3: heatmap writers
|
||||
# are allowed to upload heatmaps that reference layers which are only enqueued for upload
|
||||
wait_for_upload_queue_empty(ps_attached.http_client(), tenant_id, timeline_id)
|
||||
|
||||
ps_secondary.http_client().tenant_secondary_download(tenant_id)
|
||||
|
||||
assert list_layers(ps_attached, tenant_id, timeline_id) == list_layers(
|
||||
@@ -484,6 +489,11 @@ def test_secondary_downloads(neon_env_builder: NeonEnvBuilder):
|
||||
workload.churn_rows(128, ps_attached.id)
|
||||
|
||||
ps_attached.http_client().tenant_heatmap_upload(tenant_id)
|
||||
|
||||
# Ensure that everything which appears in the heatmap is also present in S3: heatmap writers
|
||||
# are allowed to upload heatmaps that reference layers which are only enqueued for upload
|
||||
wait_for_upload_queue_empty(ps_attached.http_client(), tenant_id, timeline_id)
|
||||
|
||||
ps_secondary.http_client().tenant_secondary_download(tenant_id)
|
||||
|
||||
assert list_layers(ps_attached, tenant_id, timeline_id) == list_layers(
|
||||
|
||||
Reference in New Issue
Block a user