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

Remove Harmful Exists Check from BlobStoreFormat #41898

Merged
merged 1 commit into from
May 7, 2019

Conversation

original-brownbear
Copy link
Member

@original-brownbear original-brownbear commented May 7, 2019

  • First off, this exists check is somewhat pointless in that it checks
    for the existence of a blob that contains a UUID in its name so we don't
    expect collisions here ever. Just checking for no name collision is
    completely sufficient.
    • Since this check was the only user of the blob store format method I removed that now dead method
  • More importantly though, this check introduces an issue on S3 because
    we will run it against a non existing snap-{uuid}.dat blob
  • Closes [CI] RepositoryS3ClientYamlTestSuiteIT.test failed to restore snapshot #41882

* First off, this exists check is somewhat pointless in that it checks
for the existence of a blob that contains a UUID in its name so we don't
expect collisions here ever. Just checking for no name collision is
completely sufficient.
* More importantly though, this check introduces an issue on S3 because
we will run it against a non existing snap-{uuid}.dat blob!
  * This leads to the fact that subsequent reads of this blob after it
was written can still return a 404 because AWS S3 only guarantees first
read after write consistency. If a read of a key is made before a write
is made this guarantee goes out the window. (see
https://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel
for more)
* Closes elastic#41882
@original-brownbear original-brownbear added >bug :Distributed Coordination/Snapshot/Restore Anything directly related to the `_snapshot/*` APIs v8.0.0 v7.2.0 labels May 7, 2019
@elasticmachine
Copy link
Collaborator

Pinging @elastic/es-distributed

original-brownbear added a commit to original-brownbear/elasticsearch that referenced this pull request May 7, 2019
@original-brownbear
Copy link
Member Author

I pushed f8df217 to the eventually consistent mock blobstore PR #40893 that actually reproduces the issue here.

Copy link
Contributor

@ywelsch ywelsch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. This should also go back to 6.x?

@original-brownbear
Copy link
Member Author

@ywelsch

This should also go back to 6.x?

Yea I'd say so. I'll add labels accordingly.

@original-brownbear original-brownbear merged commit 2e40881 into elastic:master May 7, 2019
@original-brownbear original-brownbear deleted the 41882 branch May 7, 2019 16:18
jasontedor added a commit to jasontedor/elasticsearch that referenced this pull request May 7, 2019
* elastic/master: (50 commits)
  Cleanup versioned deprecations in analysis (elastic#41560)
  Allow unknown task time in QueueResizingEsTPE (elastic#41810)
  SQL: Remove CircuitBreaker from parser (elastic#41835)
  [DOCS] Fix callouts for dataframe APIs (elastic#41904)
  Handle serialization exceptions during publication (elastic#41781)
  Correct spelling of MockLogAppender.PatternSeenEventExpectation (elastic#41893)
  Update TLS ciphers and protocols for JDK 11 (elastic#41808)
  Remove Harmful Exists Check from BlobStoreFormat (elastic#41898)
  Fix fractional seconds for strict_date_optional_time (elastic#41871)
  Remove op.name configuration setting (elastic#41445)
  Reject port ranges in `discovery.seed_hosts` (elastic#41404)
  [ML-DataFrame] migrate to PageParams for get and stats, move PageParams into core (elastic#41851)
  Reenable RareClusterStateIT Mapping Propagation Tests (elastic#41884)
  [DOCS] Rewrite `exists` query docs (elastic#41868)
  Revert "Mute MinimumMasterNodesIT.testThreeNodesNoMasterBlock()"
  [DOCS] Fix typo referring to multi search API
  Provide names for all artifact repositories (elastic#41857)
  Move InternalAggregations to Writeable (elastic#41841)
  Fix compilation after incorrect merge
  Unmute TestClustersPluginIT.testMultiNode (elastic#41340)
  ...
@jakelandis
Copy link
Contributor

@original-brownbear - I am manually removing the v6.8.0 and v7.1.0 labels to keep this PR out of the release notes.

gurkankaymak pushed a commit to gurkankaymak/elasticsearch that referenced this pull request May 27, 2019
* First off, this exists check is somewhat pointless in that it checks
for the existence of a blob that contains a UUID in its name so we don't
expect collisions here ever. Just checking for no name collision is
completely sufficient.
   * Since this check was the only user of the blob store format method I removed that now dead method
* More importantly though, this check introduces an issue on S3 because
we will run it against a non existing snap-{uuid}.dat blob
  * This leads to the fact that subsequent reads of this blob after it
was written can still return a 404 because AWS S3 only guarantees first
read after write consistency. If a read of a key is made before a write
is made this guarantee goes out the window. (see
https://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel
for more)
* Closes elastic#41882
mkleen added a commit to crate/crate that referenced this pull request May 28, 2020
@original-brownbear original-brownbear restored the 41882 branch August 6, 2020 18:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
>bug :Distributed Coordination/Snapshot/Restore Anything directly related to the `_snapshot/*` APIs v7.2.0 v8.0.0-alpha1
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[CI] RepositoryS3ClientYamlTestSuiteIT.test failed to restore snapshot
4 participants