From 1500f711f3b173344424c6d631bca554df72fb29 Mon Sep 17 00:00:00 2001 From: Joonas Koivunen Date: Thu, 17 Aug 2023 11:00:11 +0300 Subject: [PATCH] test: this test no longer makes sense, we dont replace --- test_runner/regress/test_ondemand_download.py | 60 +------------------ 1 file changed, 1 insertion(+), 59 deletions(-) diff --git a/test_runner/regress/test_ondemand_download.py b/test_runner/regress/test_ondemand_download.py index a4e86e0519..b2ba6dfc80 100644 --- a/test_runner/regress/test_ondemand_download.py +++ b/test_runner/regress/test_ondemand_download.py @@ -13,13 +13,12 @@ from fixtures.neon_fixtures import ( last_flush_lsn_upload, wait_for_last_flush_lsn, ) -from fixtures.pageserver.http import PageserverApiException, PageserverHttpClient +from fixtures.pageserver.http import PageserverHttpClient from fixtures.pageserver.utils import ( assert_tenant_state, wait_for_last_record_lsn, wait_for_upload, wait_for_upload_queue_empty, - wait_until_tenant_state, ) from fixtures.remote_storage import RemoteStorageKind, available_remote_storages from fixtures.types import Lsn @@ -658,62 +657,5 @@ def test_compaction_downloads_on_demand_with_image_creation( assert dict(kinds_after) == {"Delta": 4, "Image": 1} -@pytest.mark.parametrize("remote_storage_kind", [RemoteStorageKind.LOCAL_FS]) -def test_ondemand_download_failure_to_replace( - neon_env_builder: NeonEnvBuilder, remote_storage_kind: RemoteStorageKind -): - """ - Make sure that we fail on being unable to replace a RemoteLayer instead of for example livelocking. - - See: https://github.com/neondatabase/neon/issues/3533 - """ - - neon_env_builder.enable_remote_storage( - remote_storage_kind=remote_storage_kind, - test_name="test_ondemand_download_failure_to_replace", - ) - - # disable gc and compaction via default tenant config because config is lost while detaching - # so that compaction will not be the one to download the layer but the http handler is - neon_env_builder.pageserver_config_override = ( - """tenant_config={gc_period = "0s", compaction_period = "0s"}""" - ) - - env = neon_env_builder.init_start() - - tenant_id = env.initial_tenant - timeline_id = env.initial_timeline - assert timeline_id is not None - - pageserver_http = env.pageserver.http_client() - - # remove layers so that they will be redownloaded - pageserver_http.tenant_detach(tenant_id) - pageserver_http.tenant_attach(tenant_id) - - wait_until_tenant_state(pageserver_http, tenant_id, "Active", 5) - pageserver_http.configure_failpoints(("layermap-replace-notfound", "return")) - - # requesting details with non-incremental size should trigger a download of the only layer - # this will need to be adjusted if an index for logical sizes is ever implemented - with pytest.raises(PageserverApiException): - # PageserverApiException is expected because of the failpoint (timeline_detail building does something) - # ReadTimeout can happen on our busy CI, but it should not, because there is no more busylooping - # but should it be added back, we would wait for 15s here. - pageserver_http.timeline_detail(tenant_id, timeline_id, True, timeout=15) - - actual_message = ".* ERROR .*layermap-replace-notfound" - assert env.pageserver.log_contains(actual_message) is not None - env.pageserver.allowed_errors.append(actual_message) - - env.pageserver.allowed_errors.append( - ".* ERROR .*Error processing HTTP request: InternalServerError\\(get local timeline info" - ) - # this might get to run and attempt on-demand, but not always - env.pageserver.allowed_errors.append(".* ERROR .*Task 'initial size calculation'") - - # if the above returned, then we didn't have a livelock, and all is well - - def stringify(conf: Dict[str, Any]) -> Dict[str, str]: return dict(map(lambda x: (x[0], str(x[1])), conf.items()))