solr
solr copied to clipboard
SOLR-17631: Upgrade main to Lucene 10.x
Upgrade main to Lucene 10.x
Right now, I've fixed all compilation issues with core and test modules. Other modules still don't compile. On the tests front, I've fixed a few tests. There are the tests that still fail:
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.update.processor.PreAnalyzedUpdateProcessorTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.TestRandomDVFaceting.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.DistributedIntervalFacetingTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.analysis.TestReversedWildcardFilterFactory.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.TestGroupingSearch.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.TestJoin.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.analysis.PathHierarchyTokenizerFactoryTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.TestDistributedSearch.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.BasicFunctionalityTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.TestDistributedGrouping.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.TestRandomFaceting.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.cloud.BasicDistributedZkTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.cloud.BasicDistributedZk2Test.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.cloud.DocValuesNotIndexedTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.handler.TestSnapshotCoreBackup.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.handler.component.DistributedSpellCheckComponentTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.cloud.TestSegmentSorting.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.handler.component.DebugComponentTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.handler.component.DistributedFacetPivotLargeTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.handler.component.DistributedFacetPivotWhiteBoxTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.search.TestTrieFacet.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.core.TestCodecSupport.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.search.facet.TestCloudJSONFacetSKG.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.core.SOLR749Test.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.handler.designer.TestSchemaDesignerAPI.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.spelling.SpellCheckCollatorTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.uninverting.TestFieldCacheVsDocValues.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.update.SolrIndexConfigTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.handler.component.DistributedFacetPivotSmallTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.search.facet.TestCloudJSONFacetJoinDomain.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.handler.component.DistributedFacetPivotSmallAdvancedTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.request.TestIntervalFaceting.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.uninverting.TestFieldCacheSortRandom.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.schema.PreAnalyzedFieldTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.handler.component.QueryElevationComponentTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.handler.component.StatsComponentTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.search.TestComplexPhraseLeadingWildcard.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.search.TestMissingGroups.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.search.TestRealTimeGet.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.request.TestWriterPerf.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.search.facet.TestJsonFacetRefinement.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.request.SimpleFacetsTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.response.TestRetrieveFieldsOptimizer.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.schema.DocValuesMultiTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.handler.MoreLikeThisHandlerTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.search.LargeFieldTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.schema.TestUseDocValuesAsStored.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.handler.component.FacetPivotSmallTest.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.request.TestFaceting.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.search.TestDocValuesIteratorCache.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.search.TestQueryLimits.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.search.TestGraphTermsQParserPlugin.txt
./solr/core/build/test-results/test/outputs/OUTPUT-org.apache.solr.search.TestFiltering.txt
I dealt with the removal of SortedSetDocValues.NO_MORE_ORDS [0] inaccurately in the PR. Will fix now.
[0] - https://github.com/apache/lucene/pull/969
Now, here's the list of failing tests:
TestJoin
TestGroupingSearch
PathHierarchyTokenizerFactoryTest
BasicFunctionalityTest
TestDistributedGrouping
TestDistributedSearch
CloudExitableDirectoryReaderTest
TestSnapshotCoreBackup
DistributedSpellCheckComponentTest
TestSegmentSorting
DebugComponentTest
TestCloudJSONFacetSKG
SOLR749Test
SpellCheckCollatorTest
TestFieldCacheVsDocValues
TestIntervalFaceting
PreAnalyzedFieldTest
TestCloudJSONFacetJoinDomain
TestComplexPhraseLeadingWildcard
TestMissingGroups
QueryElevationComponentTest
SimpleFacetsTest
TestJsonFacetRefinement
LargeFieldTest
TestUninvertingReader
TestQueryLimits
TestFiltering
TestGraphTermsQParserPlugin
TestCloudJSONFacetSKGEquiv
TestTermsQParserPlugin
TestJsonFacets
PreAnalyzedUpdateProcessorTest
List of failing tests now:
TestGroupingSearch
TestJoin
PathHierarchyTokenizerFactoryTest
BasicFunctionalityTest
TestDistributedGrouping
TestSnapshotCoreBackup
DistributedSpellCheckComponentTest
TestSegmentSorting
SOLR749Test
TestFieldCacheVsDocValues
TestIntervalFaceting
PreAnalyzedFieldTest
TestComplexPhraseLeadingWildcard
QueryElevationComponentTest
LargeFieldTest
TestQueryLimits
TestGraphTermsQParserPlugin
TestTermsQParserPlugin
TestFiltering
TestFieldCache
PreAnalyzedUpdateProcessorTest
TestUninvertingReader
@chatman review feedback waiting :)
Looking forward to this landing. I was just looking at upgrading OpenNLP and seeing that it requires Lucene 10...
Alright, I've merged in the latest main and tackled a few test failures. Here are the remaining failures as a check-box list that we can update as we progress:
- [ ] org.apache.solr.TestDistributedGrouping
- [ ] org.apache.solr.TestGroupingSearch
- [x] org.apache.solr.TestJoin
- [ ] org.apache.solr.analysis.PathHierarchyTokenizerFactoryTest
- [ ] org.apache.solr.cloud.TestPullReplicaErrorHandling (likely an existing flaky issue)
- [ ] org.apache.solr.handler.component.DistributedSpellCheckComponentTest
- [ ] org.apache.solr.handler.component.QueryElevationComponentTest
- [ ] org.apache.solr.ltr.feature.TestFeatureLogging
- [ ] org.apache.solr.schema.PreAnalyzedFieldTest
- [ ] org.apache.solr.search.TestComplexPhraseLeadingWildcard
- [ ] org.apache.solr.search.TestFiltering
- [x] org.apache.solr.search.TestGraphTermsQParserPlugin
- [ ] org.apache.solr.search.TestQueryLimits
- [x] org.apache.solr.search.TestTermsQParserPlugin
- [ ] org.apache.solr.uninverting.TestFieldCache
- [ ] org.apache.solr.uninverting.TestFieldCacheVsDocValues
- [x] org.apache.solr.uninverting.TestUninvertingReader
- [ ] org.apache.solr.update.processor.PreAnalyzedUpdateProcessorTest
PreAnalyzedUpdateProcessorTest and PreAnalyzedFieldTest are failing because they both rely on some quirky behavior in our PreAnalyzedField class that is now disabled by Lucene's Field API starting in 10.0. Specifically: having a custom value and a TokenStream on the same field. This was explicitly prevented by https://github.com/apache/lucene/pull/12053 (see the comment here), and results in exceptions of the form:
java.lang.IllegalArgumentException: cannot change value type from String to TokenStream
at org.apache.lucene.document.Field.setTokenStream(Field.java:406) ~[lucene-core-10.1.0.jar:10.1.0 884954006de769dc43b811267230d625886e6515 - 2024-12-17 16:15:44]
at org.apache.solr.schema.PreAnalyzedField.fromString(PreAnalyzedField.java:260) ~[main/:?]
at org.apache.solr.schema.PreAnalyzedField.createField(PreAnalyzedField.java:128) ~[main/:?]
Maybe someone can find a way around this change in Lucene, but given the obscurity of the URP in question, I wonder whether this might make it a reasonable candidate for removal. Curious what everyone thinks...
Ran out of time to move this forward, so others should feel free to pick this up without fear of duplicating work, etc.
Just ran the tests on this branch and saw these failures:
TestSnapshotCoreBackup
TestFiltering
PreAnalyzedUpdateProcessorTest
PathHierarchyTokenizerFactoryTest
DistributedSpellCheckComponentTest
TestFieldCacheSortRandom
PreAnalyzedFieldTest
TestGroupingSearch
TestQueryLimits
TestFieldCacheVsDocValues
TestDistributedGrouping
TestComplexPhraseLeadingWildcard
TestRandomDVFaceting
TestFieldCache
QueryElevationComponentTest
Fyi @antogruz and I are going to help on this PR. We'll first review and then propose new commits to fix tests.
@HoustonPutman @antonmry I've updated to Lucene 10.2.1 based on @dsmiley's suggestion. However, now I see some compiler errors for LTRScoringQuery.java, which I suppose was not there a while ago. Not sure if I did something inadvertently to introduce those errors? FYI @cpoerschke.
Hello. Has anyone planned to resume work on this anytime soon? Planning to help, but I don't want to step on anybody's toes.
Hello, also would like to help pitch in. My guess is the best thing we should do to parallelize/coordinate is to pick one of the remaining failing tests and announce that here?
The grouping implementation was only using filter queries for search ignoring the main query entirely. This caused function queries like {!func}foo2_i to be ignored during grouping, resulting in all groups receiving a score of 1.0 from MatchAllDocsQuery instead of proper function query scores.
This broke group ordering when Sort.RELEVANCE was used (the default), as groups were not ordered by their maximum scores as expected.
The fix uses QueryUtils.combineQueryAndFilter() to properly combine the main query (for scoring) with filter queries (for filtering), matching the behavior of normal Solr search operations. This ensures function queries and other scoring queries work correctly with grouping.
Hence, these are now fixed: TestFiltering, TestGroupingSearch and TestDistributedGrouping.
Now, the tests that are remaining are:
org.apache.solr.analysis.PathHierarchyTokenizerFactoryTest
org.apache.solr.TestRandomDVFaceting
org.apache.solr.handler.TestSnapshotCoreBackup
org.apache.solr.search.TestComplexPhraseLeadingWildcard
org.apache.solr.schema.PreAnalyzedFieldTest
org.apache.solr.search.TestQueryLimits
org.apache.solr.uninverting.TestFieldCacheVsDocValues
org.apache.solr.uninverting.TestFieldCache
org.apache.solr.update.processor.PreAnalyzedUpdateProcessorTest
~I was so focused on Solr core test failures that I totally forgot about the rest. Now that I have a handle on the core tests (I'll push the changes here shortly), I discovered the following failures:~
~./solr/solr-ref-guide/build/test-results/test/outputs/OUTPUT-UsingPingRefGuideExamplesTest.txt ./solr/solr-ref-guide/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.ref_guide_examples.UsingSolrJRefGuideExamplesTest.txt ./solr/solr-ref-guide/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.ref_guide_examples.IndexingNestedDocuments.txt ./solr/solr-ref-guide/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.ref_guide_examples.JsonRequestApiTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.SolrExampleBinaryTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.embedded.SolrExampleEmbeddedTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.embedded.SolrExampleStreamingTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.impl.ConcurrentUpdateHttp2SolrClientTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.impl.HttpJdkSolrClientTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.SolrExampleBinaryHttp2Test.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.embedded.SolrExampleStreamingHttp2Test.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.impl.BasicHttpSolrClientTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.request.json.JsonQueryRequestFacetingIntegrationTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.GetByIdTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.SolrExampleXMLTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.impl.ConcurrentUpdateHttp2SolrClientMultiCollectionTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrClientTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.TestSolrJErrorHandling.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.impl.HttpSolrClientSSLAuthConPoolTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.embedded.LargeVolumeJettyTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.embedded.LargeVolumeEmbeddedTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.response.TermsResponseTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.embedded.SolrExampleStreamingBinaryHttp2Test.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.embedded.SolrExampleStreamingBinaryTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrClientMultiCollectionTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.impl.HttpSolrClientConPoolTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.response.TestSuggesterResponse.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.SolrExampleCborTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.TestBatchUpdate.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.embedded.LargeVolumeBinaryJettyTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.embedded.SolrExampleJettyTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.embedded.SolrExampleXMLHttp2Test.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.impl.Http2SolrClientTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.request.json.DirectJsonQueryRequestFacetingIntegrationTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.request.json.JsonQueryRequestIntegrationTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.response.NoOpResponseParserTest.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.response.TestSpellCheckResponse.txt ./solr/solrj/build/test-results/test/outputs/OUTPUT-org.apache.solr.client.solrj.request.json.DirectJsonQueryRequestFacetingEmbeddedTest.txt~
Ah, please ignore this. All these failures were because of my botched attempts at removing PreAnalyzedField in my working branch.
I have rebased all the changes on current main, tried to compose them into relatively separate changes instead of lumping them into a single commit (squash) during the actual merge of this PR. However, still, the first commit contains majority of the changes, and then targeted fixes post that. All tests pass.
- FYI @dsmiley @risdenk I had a torrid time dealing with the SOLR-5707 change, but the tests pass after hours and hours of various experiments and digging around. Please feel free to redo the changes. https://github.com/apache/solr/pull/3053/commits/a31b9973f19e3b50352f1263c31bcf0071a03a3e
- FYI @aruggero, I couldn't fix a test for LTR that you introduced recently. I've @Ignored it and you might need to redo it. Apologies. https://github.com/apache/solr/pull/3053/commits/efeee56466371561cef811b3223b9b40d11f489e. Opened https://issues.apache.org/jira/browse/SOLR-17840 for tracking this.
Solr Script Tests / Run Solr Script Tests (pull_request)Started Aug 7, 2025 — This check has started...
https://github.com/apache/solr/actions/runs/16809084447/job/47609370778?pr=3053
This check seems to be hung, even though I see no errors. All other checks have passed. I'm inclined to ignore it for now, fix it later in case there is something wrong with this branch after it has been merged to main.
Thank you to everyone for help!
I think I deleted some .lockfiles inadvertently. I'm working on fixing it.
Hi Ishan, Is the test you are talking about the: ltr_expensiveFeatureRescoring_shouldTimeOutAndReturnPartialResults?
Thanks so much Ishan & others! I mean that super sincerely...
But I've got to say, it's premature to merge a PR without either first seeking and getting another approval or to state your intention to merge in 48 hours. This isn't a triival PR (of course). I don't want other committers (esp. new ones) or contributors to think this is normal. It's not. The same thing happened with the multiThreaded PR, which didn't turn out well, as you know.
Is the test you are talking about the: ltr_expensiveFeatureRescoring_shouldTimeOutAndReturnPartialResults?
@aruggero yes. Apologies, since that was added by @alessandrobenedetti and I wrongly tagged you.
But I've got to say, it's premature to merge a PR without either first seeking and getting another approval or to state your intention to merge in 48 hours. This isn't a triival PR (of course). I don't want other committers (esp. new ones) or contributors to think this is normal. It's not. The same thing happened with the multiThreaded PR, which didn't turn out well, as you know.
Apache Solr still follows CTR policy [0]. If anyone has an objection, I'll revert my commits. This is the traditional process. This is not a trivial PR (of course), and I can't keep up with all the changes that keep happening on main.
When there were failures on this branch, it was my problem (and Christine's and Jason's too). You can scroll up and review the comments. Now, after this merge, all problems out of this merge is a collective problem (which is good, IMHO).
The same thing happened with the multiThreaded PR, which didn't turn out well, as you know.
If you want to blame me for something, I can as well blame others for the sorry state of affairs this project is currently in. This is not healthy. I'm back to Solr development to make things better, not blame others for past issues.
Edit: FYI, here's my comment on the JIRA, relevant to this dicussion: https://issues.apache.org/jira/browse/SOLR-17631?focusedCommentId=18012635&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-18012635
[0] - https://infra.apache.org/new-committers-guide.html#the-committers-way
The same thing happened with the multiThreaded PR, which didn't turn out well, as you know.
I've opened up an issue to fix it: https://issues.apache.org/jira/browse/SOLR-17841 Lets take the blame game there, or maybe fix it there.
But I've got to say, it's premature to merge a PR without either first seeking and getting another approval or to state your intention to merge in 48 hours. This isn't a triival PR (of course). I don't want other committers (esp. new ones) or contributors to think this is normal. It's not. The same thing happened with the multiThreaded PR, which didn't turn out well, as you know.
To add to what I've already mentioned: please understand that it is better to leverage community hardware (ASF and Uwe's Jenkins) to vet this thoroughly than rely on me running it again and again on my servers. I'm not paid to do any of this, I'm volunteering my efforts, my time and my computational resources for doing this.
The feature freeze, as announced by @anshumg is only 3 weeks away, and sooner this is merged, better it is for everyone. Not to mention the issues that are blocked on this upgrade..
I'm only "blaming" you for not following a best practice (twice now) on big/important PRs. Nothing more. If neither broke things I wouldn't be happy but probably wouldn't have said anything.
It's tempting to say this was already reviewed, which is somewhat true (people looked at it and offered to help) but that's different than an explicit approval. Reviewing a change (before merge) is an industry standard best practice, and it is is such for good reason -- it leads to better quality software and reduces the chance of breaking the build (which annoys the dev community). Cleanup/fix commits are permanent annoyance (we're not going to force push a rebase of main to fix); should be minimized. CTR allows us to use our judgement on when to merge exactly, but that doesn't mean we (as professional software engineers that strive for quality software) don't agree with peer review before merging. It means we trust you to consider the factors and merge anyway if you feel its warranted. I don't think Anshum's proposed feature freeze date creates true urgency here but if you disagree then announce your plan to commit in 1 day. It's common for interested people to delay giving a PR a look until hearing that it's ready.
I'm only "blaming" you for not following a best practice (twice now) on big/important PRs. Nothing more. If neither broke things I wouldn't be happy but probably wouldn't have said anything.
Yeah, cry me a river, while I fix stuff. I follow Apache's CTR policy based on my best judgement, and I don't have to argue about it.
I don't think Anshum's proposed feature freeze date creates true urgency here but if you disagree then announce your plan to commit in 1 day.
Looking at the project's current state of affairs, I can see why there's no urgency ever (except when it comes to blaming others for fixing it).