Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tests: stabilize test_sharding_split_compaction #8318

Merged
merged 4 commits into from
Jul 10, 2024
Merged

Conversation

jcsp
Copy link
Contributor

@jcsp jcsp commented Jul 8, 2024

Problem

This test incorrectly assumed that a post-split compaction would only drop content. This was easily destabilized by any changes to image generation rules.

In this, and other tests that explicitly create image layers (e.g. latest test_pg_regress & test_isolation), there is also a bug in compaction with force-image-layers, where it will fail trying to create a duplicate image layer.

Summary of changes

  • Before split, do a full image layer generation pass, to guarantee that post-split compaction should only drop data, never create it.
  • Fix the force_image_layer_creation mode of compaction that we use from tests like this: previously it would try and generate image layers even if one already existed with the same layer key, which caused compaction to fail.

Checklist before requesting a review

  • I have performed a self-review of my code.
  • If it is a core feature, I have added thorough tests.
  • Do we need to implement analytics? if so did you add the relevant metrics to the dashboard?
  • If this PR requires public announcement, mark it with /release-notes label and add several sentences in this section.

Checklist before merging

  • Do not forget to reformat commit message to not include the above checklist

@jcsp jcsp added c/storage/pageserver Component: storage: pageserver a/test Area: related to testing a/tech_debt Area: related to tech debt labels Jul 8, 2024
Copy link

github-actions bot commented Jul 8, 2024

3042 tests run: 2927 passed, 0 failed, 115 skipped (full report)


Flaky tests (4)

Postgres 16

  • test_ondemand_wal_download_in_replication_slot_funcs: release
  • test_pg_regress[None]: debug

Postgres 15

  • test_peer_recovery: debug

Postgres 14

  • test_isolation[None]: debug

Code coverage* (full report)

  • functions: 32.6% (6938 of 21302 functions)
  • lines: 50.0% (54549 of 109206 lines)

* collected from Rust tests only


The comment gets automatically updated with the latest test results
e8c1c87 at 2024-07-10T09:40:12.887Z :recycle:

@jcsp jcsp force-pushed the jcsp/split-compaction-flake branch from 895733b to 5e89a86 Compare July 9, 2024 14:46
@jcsp jcsp marked this pull request as ready for review July 9, 2024 17:44
@jcsp jcsp requested a review from a team as a code owner July 9, 2024 17:44
@jcsp jcsp requested a review from skyzh July 9, 2024 17:45
@jcsp jcsp enabled auto-merge (squash) July 9, 2024 20:42
@jcsp jcsp merged commit e89ec55 into main Jul 10, 2024
69 checks passed
@jcsp jcsp deleted the jcsp/split-compaction-flake branch July 10, 2024 13:14
skyzh pushed a commit that referenced this pull request Jul 15, 2024
## Problem

This test incorrectly assumed that a post-split compaction would only
drop content. This was easily destabilized by any changes to image
generation rules.

## Summary of changes

- Before split, do a full image layer generation pass, to guarantee that
post-split compaction should only drop data, never create it.
- Fix the force_image_layer_creation mode of compaction that we use from
tests like this: previously it would try and generate image layers even
if one already existed with the same layer key, which caused compaction
to fail.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a/tech_debt Area: related to tech debt a/test Area: related to testing c/storage/pageserver Component: storage: pageserver
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants