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

Merge branch_9x into fs/branch_9x #169

Closed
wants to merge 247 commits into from

Conversation

patsonluk
Copy link
Collaborator

@patsonluk patsonluk commented Nov 23, 2023

Closing this

Using #170 instead, as this PR merge beyond the merge-base of 9x and 9.4, which could complicate our future work.

Attempt to periodically update our fs/branch_9x to be in-sync with branch_9x from apache

Highlights

Http2SolrClient

In the process of resolving conflicts for Http2SolrClient, added the asyncListener to trigger onStart of request.

However, this resulted as some pretty weird method signature becomes weird (need to add extra param at the end at here and here. Do we really need asyncListener to listen onBegin anymore?

CircuitBreaker

Our existing fs/branch_9x seems to have older changes on CircuitBreakerManager which is deprecated and restrucuted in the latest branch_9x. Taking changes from fs/branch_9_3 (newer changes on the CircuitBreaker directly) instead

Node level cache

Since our fs version CacheConfig.newInstance(core) takes a core as the param, the newly added node level cache call CacheConfig.newInstance() in CoreContainer is flagged as missing arg.

Based on the code in CacheConfig#newInstance, it should be able to handle null org (ie node level cache should not expect a core anyway)

Reuse DocValues iter in SolrDocumentFetcher

The current fs/branch_9x version seems to be missing the updates in fs/branch_9_3 of #144 and #146

Cherry picked #144 and #146 from fs/branch_9_3 to fs/branch_9_x, this was necessary as similar changes are also in branch_9x, which the merge had some conflicts.

Lucene version

Lucene reference has been updated from 9.7.0 to 9.8.0.

Lucene fs/branch_9_8

We do not yet have such branch, followed steps in https://www.notion.so/OSS-Solr-Development-Guide-41a77cf7bc7246d0bf56177e6986c174?pvs=4#7dc4bc1c52ad40c5ad33d77aba46789b (but replaced with lucene) to create a new fs/branch_9_8 branch for fullstory lucene

Gradle version conflict

Solr branch 9_x now uses gradle 8.4.0, however Lucene is still using gradle 7.6.0. Manually updated Lucene to use 8.4.0. Lucene builds fine when using ./gradew build on it with 8.4.0

For completeness, also created branch_9_8 in our repo

Outstanding issue

Commits in fs/branch_9_3 that are not in fs/branch_9x

Below is the list of commits (local to FS) that appear in fs/branch_9_3 but not fs/branch_9x, we might want to consider including them later on in fs/branch_9x if applicable:

Build issue

There's current build issue with ./gradlew build . In order to build , we need to skip several tasks ./gradlew build -x :solr:documentation:collectLuceneJavadocs -x :solr:solr-ref-guide:buildLocalSite -x :solr:solr-ref-guide:checkSiteLinks -x :checkUnusedConstraints -x :verifyLocks -x licenses. There's still one test case failure, see next section

This might be okay as I see our build checks also skip those tasks (???) need to double-confirm

Unit test case NPE on RealTimeGetComponent

With test of
./gradlew :solr:core:test --tests "org.apache.solr.cloud.FullSolrCloudDistribCmdsTest.testRTGCompositeRouterWithRouterField" -Ptests.jvms=5 "-Ptests.jvmargs=-XX:TieredStopAtLevel=1 -XX:+UseParallelGC -XX:ActiveProcessorCount=1 -XX:ReservedCodeCacheSize=120m" -Ptests.seed=1EC92724168C5FD -Ptests.file.encoding=ISO-8859-1

It failed with

  2> 74653 ERROR (qtp2033335124-56-null-17) [n:127.0.0.1:57457_solr c:composite_collection_with_routerfield_1 s:shard1 r:core_node6 x:composite_collection_with_routerfield_1_shard1_replica_n2 t:null-17] o.a.s.s.HttpSolrCall 500 Exception
  2>           => java.lang.NullPointerException
  2>    at org.apache.solr.handler.component.RealTimeGetComponent.createSubRequests(RealTimeGetComponent.java:1058)
  2> java.lang.NullPointerException: null
  2>    at org.apache.solr.handler.component.RealTimeGetComponent.createSubRequests(RealTimeGetComponent.java:1058) ~[main/:?]

Take note that this is a FullSolrCloudDistribCmdsTest.testRTGCompositeRouterWithRouterField is a new test method recently introduced.

rafalh and others added 30 commits July 24, 2023 09:50
emphasize the command to execute
* solr core - fix typos

* solr core - fix typos

* solr core - fix typos

* run ./gradlew tidy

* Update solr/core/src/java/org/apache/solr/core/backup/repository/BackupRepositoryFactory.java

same capitalization

* a few typos.

* add CHANGES entry

* revert "add CHANGES entry"

This reverts commit 07533d6.

* add CHANGES entry

---------

Co-authored-by: Marcus <[email protected]>
(cherry picked from commit 810783d)
No v2 equivalent existed prior to this commit.  The new v2 API is
`POST /api/cores/cName/backups`.

---------

Co-authored-by: Jason Gerlowski <[email protected]>
…astructure. (apache#1786)

Postlogs tool only works on Linux, and was it's own implementation of a command line tool, with different patterns then the other tools.   Migrate over to "bin/solr postlogs" and it now works like other CLI tools, including working on Windows.
…ses.. (apache#1805)

Classes through solr/core and solr/solrj depended on methods defined in the SimplePostTool, a auxillary class that isn't really "part" of the core Solr offering.  Relocate those methods to the common Utils.java class.
…#1634)

We now support the Post tool on windows by reusing the SolrCLI infrastructure, instead of having a separate post.cmd. This commit does NOT remove the post.jar compilation, or the bin/post shell script.  It does update the Ref Guide to refer to bin/solr post.   In the future we will want to come to a resolution on the post.jar, and maybe rename bin/solr post to something else like bin/solr indexer?   We have very basic bats and unit test now.
Not needed.
Refactoring. No real back-compatibility concern; too internal for a JIRA.
Prior to this commit, v2 APIs had no clean way to access any solrconfig.xml
configuration for their associated "requestHandler".  This commit introduces
an interface, APIConfigProvider, which allows us to inject this configuration
to v2 API classes at call time in a "strongly-typed" way.
…ZkUpdateProcessor (apache#1484)

When SolrCloud shard leaders change while indexing updates arrive, Solr could fail and return
  a HTTP 503 status. Switched to 510 so that CloudSolrClient will auto-retry it and probably succeed.
No v2 equivalent existed prior to this commit.  The new V2 API is
`POST /api/cores/cName/restore {...}`.

---------

Co-authored-by: Jason Gerlowski <[email protected]>
…p2SolrClient (apache#1789)

SOLR-16265 reduce memory usage of ContentWriter based requests in Http2SolrClient

(cherry picked from commit 9b1aba2)
…e starts with "1", "t" or "T" (apache#1816)

* StrUtils.parseBoolean() can accept a CharSequence

---------

Co-authored-by: Rahul Goswami <[email protected]>
…g of repository.json mimetype

Github is a common place to store the repository.json file used by Solr Packages.  While the file is .json, the mimetype from Github is text/plain, so this fixes the client being used to load the repository.json to accept text/plain as well as application/json mimetypes.
…oLower (apache#1837) (apache#1844)

* SOLR-16928: Add missing unit tests for RegexFileFilter and StrUtils.toLower

* SOLR-16928: Add license to RegexFileFilterTest

Co-authored-by: Jonathon Henderson <[email protected]>
HoustonPutman and others added 28 commits October 30, 2023 14:07
This provides a fix for...

SOLR-17045: DenseVectorField w/ vectorDimension > 1024 now work automatically with _default configset, due to implicit use of SchemaCodecFactory.

(cherry picked from commit 96f0f65)
(cherry picked from commit d2fa842)
…istenerFactory (apache#2041)

* Move Jetty HttpClient tracing down into InstrumentedHttpListenerFactory from other places, thus covering more scenarios.
* Add Apache HttpClient tracing via InstrumentedHttpRequestExecutor.
* None of this affects SolrJ because these "Instrumented" things are only in solr-core.
* Reinstate Solr ExecutorService instrumentation, i.e. propagation to other threads in Solr.  That was in 9x and briefly was torn out in main.

Co-authored-by: Alex Deparvu <[email protected]>
Co-authored-by: David Smiley <[email protected]>
This commit changes the v2 "swapcore" API to be more in line
with the REST-ful design we're targeting for Solr's v2 APIs.

Following these changes, the v2 API now appears as:
  `POST /api/cores/coreName/swap {...}`

Although not shown above, the 'swap' command specifier
has been removed from the request body.

This commit also converts the API to the new JAX-RS framework.

---------

Co-authored-by: iamsanjay <[email protected]>
Co-authored-by: Jason Gerlowski <[email protected]>
This commit changes the v2 "renamecore" API to be more in line
with the REST-ful design we're targeting for Solr's v2 APIs.

Following these changes, the v2 API now appears as:
  1POST /api/cores/coreName/rename {...}`

(Although not shown above, the 'rename' command specifier
no longer appears in the request body.)

This commit also converts the API to the new JAX-RS framework.

---------

Co-authored-by: iamsanjay <[email protected]>
Co-authored-by: Jason Gerlowski <[email protected]>
apache#2076)

* 1. Changed getAllReplicasOnNode to just return a copy of `allReplicas` field, which keeps track of all replicas. Instead of computing a new list every time.
2. Added a getAllReplicaCount method to avoid creating new list of replicas if only the count is required

* ./gradlew tidy

* minor refactoring
@patsonluk patsonluk marked this pull request as draft November 27, 2023 20:56
@patsonluk patsonluk closed this Nov 28, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.