Skip to content

SOLR-18121: Rm 'rm-in-advance' fetcher codepath#4258

Open
gerlowskija wants to merge 3 commits intoapache:mainfrom
gerlowskija:SOLR-18121-remove-delete-in-advance-optimization
Open

SOLR-18121: Rm 'rm-in-advance' fetcher codepath#4258
gerlowskija wants to merge 3 commits intoapache:mainfrom
gerlowskija:SOLR-18121-remove-delete-in-advance-optimization

Conversation

@gerlowskija
Copy link
Copy Markdown
Contributor

https://issues.apache.org/jira/browse/SOLR-18121

Description

Prior to this commit, the IndexFetcher had support for an edge case where if a full-index-fetch was needed but the receiving host didn't have adequate disk space, then the IndexFetcher would delete the existing (out of date) copy of the index to free up space.

Unfortunately, this optimization/"feature" was never documented in the ref-guide, had very little test coverage, and contained a number of resource-leaks that appeared to trigger 100% of the time. While the feature might've worked when initially written, the rare-ness of the triggering condition and lack of tests had led to some severe bitrot over time.

Solution

This commit removes the code for this optimization altogether. It largely works by walking back the code introduced in the original change, 'b061947'.

Tests

No new tests; removal of existing test TestReplicationHandlerDiskOverFlow.

Checklist

Please review the following and check all that apply:

  • I have reviewed the guidelines for How to Contribute and my code conforms to the standards described there to the best of my ability.
  • I have created a Jira issue and added the issue ID to my pull request title.
  • I have given Solr maintainers access to contribute to my PR branch. (optional but recommended, not available for branches on forks living under an organisation)
  • I have developed this patch against the main branch.
  • I have run ./gradlew check.
  • I have added tests for my changes.
  • I have added documentation for the Reference Guide
  • I have added a changelog entry for my change

Prior to this commit, the IndexFetcher had support for an edge case
where if a full-index-fetch was needed but the receiving host didn't
have adequate disk space, then the IndexFetcher would delete the
existing (out of date) copy of the index to free up space.

Unfortunately, this optimization/"feature" was never documented in the
ref-guide, had very little test coverage, and contained a number of
resource-leaks that appeared to trigger 100% of the time.  While the
feature might've worked when initially written, the rare-ness of the
triggering condition and lack of tests had led to some severe bitrot
over time.

This commit removes this optimization, largely by walking back changes
in 'b061947' which added it initially.
@gerlowskija
Copy link
Copy Markdown
Contributor Author

Note to self that tests and check pass on this already.

Not sure whether this merits a changelog entry or not. In theory it's a removal that folks would care about if they were relying on it. But given that it was undocumented and (afaict) 100% broken, I don't think anyone could rely on it. So a changelog entry would largely just be noise.

Copy link
Copy Markdown
Contributor

@dsmiley dsmiley left a comment

Choose a reason for hiding this comment

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

Of course we should articulate that we removed this (broken) feature. No matter how broken, the flag for it was there and some people thought it worked. Yes a changelog, yes a note in major-changes-in....adoc

@gerlowskija
Copy link
Copy Markdown
Contributor Author

No matter how broken, the flag for it was there and some people thought it worked

What flag? There was never a feature-flag around this.

And what people thought this worked? The optimization was never documented, and flies against all of the advice we do have in our docs around maintaining the required disk overhead. Users would need to remember a 10 year old JIRA discussion to even have a hint that Solr attempted anything like this.

Are you sure your comment above went to the right PR @dsmiley ?

I have added a changelog entry for now, but if anything the experience has me leaning even more towards "no changelog". I've left it in case someone can word-smith a version that makes more sense. But otherwise it just feels awkward and contrived to have a changelog entry of "Removed thing that was both broken and undocumented".

Copy link
Copy Markdown
Contributor

@dsmiley dsmiley left a comment

Choose a reason for hiding this comment

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

+1 I'm happy with the changelog (and its wording) as sufficient; thanks.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Note: the comments need to be removed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants