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

SOLR-17541: Deprecate CloudHttp2SolrClient.Builder#withHttpClient (Solr 9.9) #2920

Closed
wants to merge 2,086 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
2086 commits
Select commit Hold shift + click to select a range
e50df5b
SOLR-17195: Add 'minPrefixLength' soft limit (#2499)
gerlowskija Jul 9, 2024
006e3a8
SOLR-17346: Synchronise stopwords from snowball with those in lucene …
alastair Jul 11, 2024
43d8ce3
SOLR-16198: Introduce tabbed blocks again (#2550)
malliaridis Jul 15, 2024
a82c2c6
ref doc format fix (#2555)
QFREEE Jul 15, 2024
cf74b16
[ref guide] Fix description of field backupName for backup (#2554)
QFREEE Jul 15, 2024
d684934
Review org.apache.solr.client.solrj.io.stream and responding to some …
epugh Jul 16, 2024
338fbda
SOLR-17160: Core admin async ID status, 10k limit and time expire (#2…
psalagnac Jul 15, 2024
574cfc2
Update dependency com.fasterxml.jackson:jackson-bom to v2.17.2 (#2560)
solrbot Jul 16, 2024
e91ed4b
Update org.eclipse.jetty*:* to v10.0.22 (#2468)
solrbot Jul 16, 2024
8bdf162
Update org.apache.curator:* to v5.7.0 (#2182)
solrbot Jul 16, 2024
83d625a
Update org.slf4j:* to v2.0.13 (#2406)
solrbot Jul 16, 2024
eeecffb
Update io.netty:* to v4.1.111.Final (#2413)
solrbot Jul 16, 2024
ca947a0
Update io.grpc:grpc-* to v1.65.1 (#2314)
solrbot Jul 17, 2024
47ea942
Update dependency org.apache.commons:commons-configuration2 to v2.11.…
solrbot Jul 17, 2024
1a36df8
SOLR-10255 Add support for docValues to solr.BinaryField (#2536)
serba Jul 17, 2024
548d74f
Update dependency io.opentelemetry:opentelemetry-bom to v1.40.0 (#234…
janhoy Jul 17, 2024
2f638ca
Update dependency commons-codec:commons-codec to v1.17.1 (#2568)
solrbot Jul 17, 2024
a8c4a90
SOLR-10654: Metrics: New wt=prometheus option (#2405)
mlbiscoc Jul 9, 2024
728f8b5
SOLR-10654: PrometheusResponseWriter test tweaks
hossman Jul 12, 2024
b951813
Update dependency org.jctools:jctools-core to v4.0.5 (#2131)
solrbot Jul 17, 2024
7737f51
Update software.amazon.awssdk:* to v2.26.19 (#2056)
solrbot Jul 17, 2024
4e2903d
Update dependency com.google.cloud:google-cloud-bom to v0.224.0 (#2053)
solrbot Jul 18, 2024
61c229f
Update dependency org.apache.hadoop.thirdparty:hadoop-shaded-guava to…
solrbot Jul 18, 2024
6f86f2b
Update org.apache.calcite to 1.37.0 (#2140)
solrbot Jul 18, 2024
704b0b3
Update dependency org.bouncycastle:bcpkix-jdk18on to v1.78.1 (#2434)
solrbot Jul 18, 2024
e6505d8
SOLR-16824: BACKPORT Adopt Linux Command line tool pattern of -- for …
epugh Jul 19, 2024
a405b3b
SOLR-17367 - org.apache.solr.cli.PostTool is ignoring -params option …
bogdanstoik Jul 19, 2024
31981f2
SOLR-17367 Unbreak the build caused by bad backport (#2574)
janhoy Jul 19, 2024
2f3d1da
SOLR-17357 Improve default --help formatting for CLI Tools (branch_9x…
janhoy Jul 19, 2024
0296dd9
Update dependency org.apache.commons:commons-lang3 to v3.15.0 (#2572)
solrbot Jul 19, 2024
f9c8b59
Update io.dropwizard.metrics:* to v4.2.26 (#2520)
solrbot Jul 19, 2024
2b97202
Update to match SolrCLI.printToolHelp formatting rules (#2573)
epugh Jul 20, 2024
42eedde
update to support current usage formatting
epugh Jul 21, 2024
9596226
Eliminate linux/window tabs for bin/solr post. (#2579)
epugh Jul 22, 2024
c9da608
SOLR-17340: /admin/info/system optimization by caching BeanInfo (#2538)
psalagnac Jul 22, 2024
2963462
minor: don't create an unused thread (#2514)
psalagnac Jul 22, 2024
3cab6f2
SOLR-17369: Fix "flags" usage in FunctionQParser that caused some iss…
hossman Jul 22, 2024
63914cb
Update dependency com.carrotsearch:hppc to v0.10.0 (#2512)
solrbot Jul 23, 2024
581888a
SOLR-13350: multi-threaded search: (undocumented) opt-out ability (#2…
cpoerschke Jul 23, 2024
cfec121
SOLR-13350: multi-threaded search: replace cached with fixed threadpo…
cpoerschke Jul 23, 2024
8b3d5b0
SOLR-13350: multi-threaded search: default to 'available processors' …
cpoerschke Jul 24, 2024
d39e938
SOLR-15831: Refactor bin/solr and bin/solr.cmd to delegate args parsi…
epugh Jul 24, 2024
e0862c8
backporting SOLR-15831
epugh Jul 24, 2024
330349d
SOLR-15831: Tidy after backport to branch_9x
HoustonPutman Jul 26, 2024
6c21ccf
SOLR-10808: SchemaVersion 1.7 - DocValues default to true (#2017)
HoustonPutman Jul 26, 2024
3e39408
SOLR-17322: Make RankQuery.getTopDocsCollector use covariant generic …
stephen-woods Jul 29, 2024
e93a542
SOLR-17337: Show proper distributed stage id (#2594)
cpoerschke Jul 29, 2024
5993993
Refactor: Move Collection Properties backend out of ZkStateReader (#2…
aparnasuresh85 Jul 29, 2024
edcd5fe
SOLR-12963: Default uninvertible=false in schema version 1.7 (#2601)
HoustonPutman Jul 29, 2024
99cc107
SOLR-12963: Fix EnumFieldTest.testEnumSort
HoustonPutman Jul 29, 2024
e042ba8
SOLR-13350, SOLR-17298: multi-threaded search: revert TestFiltering.j…
cpoerschke Jul 30, 2024
6557117
Produce test report for integration tests (#2600)
gerlowskija Jul 30, 2024
5baa12c
SOLR-17368: TestPrometheusResponseWriter redesign (#2586)
mlbiscoc Jul 31, 2024
15d79eb
SOLR-17298 backport from main.
gus-asf Aug 1, 2024
c8801f9
SOLR-16996: Update Solr Exporter for Prometheus cli to use commons-cl…
malliaridis Aug 2, 2024
a5b4842
add missing change entry
epugh Aug 2, 2024
c52345b
SOLR-10808: Enable docValues by default on specific fields (#2606)
HoustonPutman Aug 2, 2024
aff0d4d
SOLR-16824: Replace deprecated single-dash arguments (#2577) (#2614)
epugh Aug 2, 2024
5fc16da
SOLR-17276: Prometheus Exporter: scrape metrics at fixed rate (#2442)
rafalh Aug 3, 2024
ca6a71e
SOLR-17368: Fix TestPrometheusResponseWriter by clearing registries (…
mlbiscoc Aug 3, 2024
9053194
SOLR-14985: CloudSolrClient with Solr URLs wasn't caching state (#2571)
aparnasuresh85 Aug 1, 2024
7e2b154
Add next minor version 9.8.0
anshumg Aug 6, 2024
18c6480
SOLR-12963: Fix test failures do to uninvertible change
HoustonPutman Aug 6, 2024
69f1809
SOLR-17102: Replaced VersionBucket array with locks on-demand (#2548)
dsmiley Aug 7, 2024
ecc04c8
chore(deps): update io.netty:* to v4.1.112.final (#2592)
solrbot Aug 7, 2024
5bd5fc3
SOLR-17245 Download KEYS from downloads server (#2623)
janhoy Aug 7, 2024
c281289
SOLR-17253 Release wizard suggests wrong minor version for jira (#2622)
janhoy Aug 7, 2024
a5903b1
SOLR-10654: PrometheusResponseWriter Content Type was wrong (#2616)
mlbiscoc Aug 8, 2024
6b88470
SOLR-10654: Rename SolrPrometheusExporter to SolrPrometheusFormatter …
mlbiscoc Aug 8, 2024
249ee8e
SOLR-17394: Check response status in IndexFetcher (#2621)
gerlowskija Aug 8, 2024
914d619
SOLR-17391: Fixed thread pool misconfiguration regression (#2619)
psalagnac Aug 8, 2024
83b4d38
SOLR-17396: Reduce thread contention in ZkStateReader.getCollectionPr…
aparnasuresh85 Aug 8, 2024
b57763e
SOLR-17269, SOLR-17386: Fixed SyntheticSolrCore reload issue (#2607)
patsonluk Aug 9, 2024
961c314
SOLR-17381: Make CLUSTERSTATUS configurable (#2599)
aparnasuresh85 Aug 9, 2024
0fb166e
SOLR-16996: remove no-longer-applicable solr/licenses/argparse4j-* fi…
cpoerschke Aug 7, 2024
6e16199
SOLR-16824: Backport single dash arguments migration (#2618)
malliaridis Aug 10, 2024
eaf02b3
SOLR-17397: Fix SkipExistingDocumentsProcessor to handle child docume…
timatbw Aug 13, 2024
ece3e83
SolrJ: CloudSolrClient, HTTP StateProvider: Use EnvUtils to customize…
aparnasuresh85 Aug 13, 2024
84d1fbc
SOLR-13350, SOLR-17298: use multiThreaded=false default; document mul…
cpoerschke Aug 6, 2024
d3c8f74
SOLR-17298 verify that graph, join and rerank queries are unaffected …
gus-asf Aug 15, 2024
84cb81f
Update dependency commons-cli:commons-cli to v1.9.0 (#2650)
solrbot Aug 16, 2024
27eb1fe
TestExportWriter fix, loosen order constraint (#2615)
dsmiley Aug 16, 2024
d56d5c6
SOLR-17223 Remove hardcoded java version in renderJavadoc task (#2387)
janhoy Aug 20, 2024
559daaf
SOLR-17408: COLSTATUS shouldn't talk to replicas if not needed (#2645)
mariemat Aug 22, 2024
a3f0d80
Reviewing streaming code and making small clean ups. (#2558)
epugh Aug 22, 2024
9bd991f
[branch_9x] SOLR-17321: Remove Deprecated URL ctors in Preparation f…
iamsanjay Aug 22, 2024
66a16d1
SOLR-17180: Deprecate snapshotscli.sh in favour of bin/solr sub comma…
epugh Aug 22, 2024
27c90df
Review SolrJ code for typos (#2656)
epugh Aug 23, 2024
2761018
Lint checking after backport of PR#2656
epugh Aug 23, 2024
fed2f14
[Branch_9x] Bump up gradle analyze dependency to 1.10.0 (#2660)
iamsanjay Aug 23, 2024
475bded
SOLR-17399: Replace the use of the deprecated java.util.Locale constr…
iamsanjay Aug 23, 2024
a57bbfc
SOLR-17417: Remove unecessary code in PKIAuthPlugin and HttpSolrCall
HoustonPutman Aug 23, 2024
534d598
Build: Migrate from Gradle Enterprise Gradle Plugin to Develocity Gra…
clayburn Aug 26, 2024
5296295
HttpShardHandler: Fix extension hook (#2661)
dsmiley Aug 26, 2024
c316c7f
SOLR-3913: Optimize the commit/optimize cycle in the PostTool (#2667)
epugh Aug 27, 2024
c3eaa19
SOLR-12429: Prevent symbolic links from being uploaded as part of a c…
epugh Aug 27, 2024
cb103b4
SOLR-17418: Streamline configSet code
HoustonPutman Aug 26, 2024
90eeda2
SOLR-17421: Make sure overseer drops leadership after QUIT failure (#…
psalagnac Aug 28, 2024
56b9271
Enabling test-retry-gradle-plugin (#2665)
iamsanjay Aug 28, 2024
024d237
SOLR-17142: Fix Gradle build sometimes gives spurious "unreferenced l…
uschindler Aug 28, 2024
f0398d5
SOLR-17423: Remove -h as short option for --host, and use --host. (#2…
epugh Aug 29, 2024
4e333cd
Review Solr Streaming code for typos (#2657)
epugh Aug 29, 2024
b4689c3
Don't reference the old post.sh script in docs, use the bin/solr post…
epugh Aug 30, 2024
bc7b821
use long form, -h now means --help, not --host (#2683)
epugh Aug 30, 2024
32be6b5
SOLR-17427: Fix url building in cli (#2678)
HoustonPutman Aug 30, 2024
e76bb11
SOLR-17429, SOLR-17338: Use stderr for SolrCLI deprecation logs (#2679)
HoustonPutman Aug 30, 2024
cc1661b
SOLR-17434: Jetty relativeRedirectAllowed=true (#2673)
dsmiley Sep 3, 2024
f57fded
Add extra if in pseudocode fetch all docs (#2691)
lbercken Sep 4, 2024
ff9f6ac
SOLR-17416: Fixed ExportHandler bug that silently suppressed errors a…
hossman Sep 4, 2024
1c29911
remove use of deprecated SolrIndexSearcher.search variant (#2662)
cpoerschke Sep 6, 2024
daf0738
SOLR-16295: Modernize and standardize project description (#2692)
gerlowskija Sep 6, 2024
245956c
SOLR-17419: Introduce ParallelHttpShardHandler (#2681)
gerlowskija Sep 6, 2024
df34cef
SOLR-17044: Expose api "version" on SolrRequest objects (#2456)
gerlowskija Sep 6, 2024
7923292
Revert "Add extra if in pseudocode fetch all docs (#2691)"
epugh Sep 7, 2024
e903714
Lint cleanups in PostToolTest (#2668)
epugh Sep 7, 2024
4537c16
SOLR-3696: LBSolrClient use ObjectReleaseTracker (#2695)
dsmiley Sep 7, 2024
5f47f67
DOAP changes for release 9.7.0
anshumg Sep 9, 2024
1080dd1
SOLR-11318: Introduce unit testing for AssertTool (#2699)
epugh Sep 10, 2024
d2047c2
remove deprecated SolrParams methods (#2700)
cpoerschke Sep 11, 2024
4f834d6
SOLR-17382: remove -a and use full name for addlopts --additional-opt…
epugh Sep 10, 2024
58283d2
SOLR-16254: Clarify when a create needs to be run on the same server …
epugh Sep 11, 2024
97d7d42
SOLR-17439 Fix missing documentation for finding out non-standard PID…
rmueller83 Sep 12, 2024
69b2b02
SOLR-17431: Deprecate -p parameter where it doesn't refer to a port. …
epugh Sep 12, 2024
3583b1c
Doc fixes to match on bin/solr post works in 9.7 (#2713)
epugh Sep 17, 2024
42e3822
help the next person (#2711)
epugh Sep 17, 2024
cacb29e
SOLR-17457: Fix support for --max-wait-secs for bin/solr.cmd (#2717)
malliaridis Sep 18, 2024
72ad7b8
SOLR-17453: Drop CloudUtil.waitForState() in favor of common waitForS…
psalagnac Sep 20, 2024
7351f84
Remove invalid usage of "scheme" option in bin/solr config (#2722)
malliaridis Sep 24, 2024
a97d9df
Add bugfix version 8.11.4
HoustonPutman Sep 25, 2024
24bd803
SOLR-17448: Audit usage of ExecutorService#submit (#2707)
AndreyBozhko Sep 27, 2024
f531eee
SOLR-17441: MetricUtils: Skip Unreadable Properties (#2694)
heythm Sep 27, 2024
f66ebfd
SOLR-17454: Remove debugging error message (#2720)
ahankinson Sep 27, 2024
94a7447
SOLR-17065: Absorb the Cross DC project (#2062)
HoustonPutman Sep 27, 2024
3d40134
SOLR-6962: bin/solr stop/start/restart should complain about missing …
epugh Sep 28, 2024
d53fa22
SOLR-17359: Move Zk Arg parsing into Java Code (#2593)
epugh Aug 14, 2024
35ae5f7
Backport PR#2710 and SOLR-6962 and SOLR-17359
epugh Sep 28, 2024
ddf87b9
SOLR-17442: Resolve -v flag conflict (version, value, verbose) (#2721)
epugh Sep 28, 2024
1af4ee8
Finish backport of SOLR-17442
epugh Sep 28, 2024
8fdded4
Ensure both backcompat version command and --version flag work (#2727)
epugh Sep 29, 2024
2ec00e5
Add RDF entry for 8.11.4
HoustonPutman Sep 30, 2024
bce9c90
SOLR-17065: Fix Locale issues with Kafka tests
HoustonPutman Oct 1, 2024
ee0eb52
PackageToolTest uses wrong "--params" instead of "--param" in test
epugh Oct 1, 2024
3d76ccd
SOLR-17464: Fixed Http2SolrClient bug in that 'requestAsync' triggere…
jdyer1 Oct 3, 2024
81bb332
SOLR-17256: Introduce SolrRequest.setBasePath alternative (#2714)
gerlowskija Oct 4, 2024
16e26fb
SOLR-17442: Fix a errant deprecation of --debug and properly look up …
epugh Oct 1, 2024
1476a2e
SOLR-17469: CLI: Resolve -f flag conflicts (#2740)
epugh Oct 5, 2024
1acfaca
SOLR-17249 Edit .asf.yaml on main branch (#2624)
janhoy Oct 7, 2024
a883061
SOLR-16503: New home for default http2 client (#2689)
iamsanjay Oct 8, 2024
b1a6b8d
SOLR-17150: Create MemAllowedLimit (#2708) (#2749)
sigram Oct 8, 2024
9a7eca8
SOLR-17470: CLI resolve -s (#2743)
epugh Oct 8, 2024
69256c3
Fix backport of SOLR-17470
epugh Oct 8, 2024
9d4d35a
Fix breaking test in 9x only
epugh Oct 8, 2024
49838aa
Update to mention bin/solr (#2752)
epugh Oct 8, 2024
d14982e
SOLR-17482: Change long form of -r to --recursive (#2746)
epugh Oct 8, 2024
9a2b3f1
Backport fix
epugh Oct 8, 2024
9ef97f9
SOLR-17480: Use --data-home everywhere (#2747)
epugh Oct 8, 2024
eab7812
SOLR-17479: Deprecate the single letter options (#2748)
epugh Oct 9, 2024
3877d92
Updates from backport SOLR-17479
epugh Oct 9, 2024
05eefcb
SOLR-17481: Resolve use of -n flag in CLI commands (#2745)
epugh Oct 10, 2024
8f3f20a
ref guide: remove policy reference (#2755)
QFREEE Oct 11, 2024
c428d47
SOLR-17488: CLI: Resolve -d conflicts (#2754)
epugh Oct 11, 2024
504d703
SOLR-17466: Inform 9x users about upcoming change to solrcloud defaul…
epugh Oct 11, 2024
0456d58
fix xref references (#2757)
epugh Oct 11, 2024
8d07c73
SOLR-17414: multiThreaded search: don't throw RejectedExecutionExcept…
dsmiley Oct 14, 2024
de3db3a
Parse long format for auth command (#2760)
epugh Oct 15, 2024
992b68e
Update dependency com.fasterxml.jackson:jackson-bom to v2.18.0 (#2769)
solrbot Oct 16, 2024
6dbd8d1
SOLR-17158 Terminate distributed processing faster when query limit i…
gus-asf Oct 16, 2024
ce4edd2
SOLR-17489: CLI: Deprecate variations on solr urls options (#2756)
epugh Oct 17, 2024
b7daf74
Support backport of SOLR-17489
epugh Oct 17, 2024
3d741db
Fix tests to pass in branch_9x
epugh Oct 17, 2024
6f5e9d3
SOLR-17494: Document deprecation status of language specific writer t…
epugh Oct 18, 2024
81d7662
SOLR-17468: Put SolrCloud docs first in Ref Guide (#2730)
epugh Oct 19, 2024
77e2ca8
SOLR-17489 Fix bad backport to 9x
janhoy Oct 20, 2024
d6b9a2b
SOLR-17468: Fix Windows start script for default / cloud mode (#2784)
malliaridis Oct 22, 2024
bae6239
Apply fix for special hostContext (#2787)
malliaridis Oct 23, 2024
7892085
SOLR-17467: Fix Windows start script on 9x and optimize deprecation m…
malliaridis Oct 23, 2024
0a59362
SOLR-17450 StatusTool with pure Java code (backport 9x) (#2785)
janhoy Oct 23, 2024
1a95011
Update org.apache.hadoop:* to v3.4.0 (#2380) (#2776)
janhoy Oct 23, 2024
5a77226
Switched from HTTP1 to HTTP2 in SolrClientCloudManager (#2751)
iamsanjay Oct 24, 2024
7fb52e9
Update org.glassfish.hk2*:* to v3.1.1 (#2268)
solrbot Oct 26, 2024
dbba621
Update org.glassfish.jersey*:* to v3.1.9 (#2396)
solrbot Oct 26, 2024
6db5cf7
SOLR-17511: Deprecate -i CLI usages (#2794)
epugh Oct 28, 2024
f4150f7
SOLR-17511: Deprecate -i CLI usages (#2794)
epugh Oct 28, 2024
a15e6f4
SOLR-17413: ulog replay should copy SolrQueryRequest (#2765)
gerlowskija Oct 28, 2024
8cabcde
Fix StatusTool related issues on Windows (#2798)
malliaridis Oct 28, 2024
b170de5
Track changes for the whole slew of CLI commands under one umbrella J…
epugh Oct 29, 2024
e97a9b5
SOLR-17528: Match PackageTool use of -y (#2813)
epugh Oct 29, 2024
237e4ca
SOLR-17529: Clean up error message for 9x. (#2814)
epugh Oct 29, 2024
d00f965
SOLR-17526: Deprecate --out in favour of --verbose. (#2812)
epugh Oct 29, 2024
00b3ce4
Align with linux (#2817)
epugh Oct 29, 2024
cae9f7c
SOLR-17515: Always init Http2SolrClient authStore (#2802)
gerlowskija Oct 29, 2024
93ac7d4
SOLR-17485 Remove CheckLoggingConfiguration; unnecessary (#2763)
dsmiley Oct 30, 2024
fbcf6b3
SOLR-11191: SolrIndexSplitter: Routing child docs by _root_ when avai…
zkendall Oct 30, 2024
e9e0341
SOLR-16976: Remove log4j-jul jar and use Slf4j bridge for JUL (#2703)
szhou1998 Oct 30, 2024
5565eba
Fix release wizard to remove from Solr space before attempting Lucene…
anshumg Oct 30, 2024
4a562dc
Fix SolrJmxReporterTest#testClosedCore (#2797)
iamsanjay Oct 30, 2024
40b039c
SOLR-17383: Fix support for deprecated options in 9x (#2819)
malliaridis Oct 30, 2024
b0ceb05
SOLR-11191: fix SplitShardTest.testWithChildDocuments
dsmiley Oct 31, 2024
9a9d922
SOLR-17448 SOLR-17497: IndexFetcher, catch exception instead of bubbl…
iamsanjay Oct 31, 2024
713d7bd
SOLR-17530: Metrics: fix Prometheus response writer for TLOG & PULL r…
mlbiscoc Nov 2, 2024
64c3316
SOLR-17534: Add ClusterState.getCollectionNames (#2826)
dsmiley Nov 4, 2024
919bc99
SOLR-17456: TransactionLog ctor integrity (#2762)
dsmiley Nov 4, 2024
337c3d6
SOLR-17390: EmbeddedSolrServer now considers the ResponseParser (#2774)
dsmiley Nov 4, 2024
2ff209a
Update org.hamcrest:* to v3 (major) (#2845)
malliaridis Nov 5, 2024
34780b2
SOLR-17538: CloudHttp2SolrClient needs a custom ClusterStateProvider …
iamsanjay Nov 5, 2024
2a39d20
SOLR-17256: Remove usages of deprecated SolrRequest.setBasePath (#2811)
gerlowskija Nov 5, 2024
a40a041
SOLR-17545: Upgrade to Gradle 8.10 (#2848)
HoustonPutman Nov 5, 2024
8089cf8
chore(deps): update dependency com.github.spotbugs:spotbugs-annotatio…
solrbot Nov 6, 2024
8ee2fe2
SOLR-17453: Leverage waitForState() instead of busy waiting (#2737)
psalagnac Nov 7, 2024
9023e70
SOLR-17483: Backport cleanup zk-related logic in bin/solr.cmd (#2823)
malliaridis Nov 9, 2024
a9dbf0b
chore(deps): update io.netty:* to v4.1.114.final (#2702)
solrbot Nov 9, 2024
f1d8144
SOLR-17543: Input validation in FSConfigSetService
gerlowskija Nov 11, 2024
e04dfd3
SOLR-17151 backport to 9x (#2859) - check cpu limits between components
gus-asf Nov 12, 2024
968aac2
SOLR-16825: Migrate v2 API definitions to 'api' module, pt 8 (#2833)
gerlowskija Nov 12, 2024
73e8260
Backport: Update com.google.errorprone:* to 2.31.0 (#2862) (#2863)
malliaridis Nov 15, 2024
cb93f63
SOLR-17490: Check for existence of perl executable and skip if it doe…
epugh Nov 16, 2024
4ff3596
SOLR-17535 ClusterState.collectionStream() in lieu of getCollectionSt…
dsmiley Nov 8, 2024
db13f28
SOLR-17535: Deprecate ClusterState.forEachCollection (#2854)
dsmiley Nov 12, 2024
70ad3d8
SOLR-17535: Migrate ClusterState.getCollectionsMap callers to Stream …
dsmiley Nov 13, 2024
d65e437
SOLR-17504: CoreContainer calls UpdateHandler.commit. (#2786)
bruno-roustant Nov 19, 2024
6545499
SOLR-16825: Migrate v2 API definitions to 'api' module, pt 9 (#2870)
gerlowskija Nov 21, 2024
e5b2b43
SOLR-16390: Tweak v2 clusterprop APIs to be more REST-ful (#2788)
cugarte Nov 21, 2024
119b986
Fix: Avoid NPE if snapshotMgr failed during core init (#2879)
AndreyBozhko Nov 21, 2024
532bd9d
SOLR-17478: Fix (test only) bug in ZkTestServer
hossman Nov 21, 2024
98bf049
SOLR-17556: Examples should run with the standard & recommended Solr …
epugh Nov 22, 2024
c85c3be
Support backport of SOLR-17556
epugh Nov 22, 2024
0cf4183
SOLR-16470: Create v2 replication "fetch file" API (#2734)
mlbiscoc Nov 22, 2024
f22a40e
SOLR-17569: fix flaky test TestLBHttpSolrClient (9.x) / LBHttp2SolrCl…
jdyer1 Nov 26, 2024
2e46e0f
Ref-guide - JWT: Use correct claim name in example config comments (#…
jasminjohal-els Nov 28, 2024
8ad8b59
SOLR-17575: Fixed broken backwards compatibility with the legacy "lan…
azagniotov Nov 28, 2024
025c7a7
SOLR-17352: Backport removal of deprecated options for auth command (…
malliaridis Dec 1, 2024
91f1e95
SOLR-17577: Remove dead system property (#2888)
epugh Dec 2, 2024
3b094fa
SOLR-17574: Move host allow list cache to AllowListUrlChecker. (#2892)
bruno-roustant Dec 4, 2024
f492e24
SOLR-16781: Disable <lib/> by default on 9.x (#2894)
gerlowskija Dec 4, 2024
0a6eac4
SOLR-17586 Print zkcli.sh deprecation msg to stderr (9x) (#2896)
janhoy Dec 7, 2024
a9e7506
SOLR-17381: Fix CloudSolrClient.getClusterState when HTTP CSP (not ZK…
aparnasuresh85 Dec 9, 2024
5395ede
Add next minor version 9.9.0
anshumg Dec 9, 2024
364c0af
SOLR-14680: Deprecating org.apache.solr.cluster.api, includes NamedLi…
dsmiley Dec 10, 2024
e732aa8
SOLR-17561: Deprecations in ClusterState, DocCollection, Replica (#2898)
dsmiley Dec 10, 2024
34cae92
SOLR-16390: fix flaky test ClusterPropsAPITest.testClusterPropertyOps…
psalagnac Dec 10, 2024
36ab960
SOLR-17578: Remove ZkController internal core supplier. (#2891)
psalagnac Dec 11, 2024
2c546fe
SOLR-17583: Bring back documentation for Adding Custom Expressions (#…
cfeldmann Dec 12, 2024
923a612
CLI: Suppress printing out of password to console when using auth com…
malliaridis Dec 12, 2024
7716dc9
CHANGES.txt: SOLR-17592 and SOLR-17290
dsmiley Dec 13, 2024
7fd3b55
SOLR-15625 Improve documentation for the benchmark module. (#406)
markrmiller Dec 13, 2024
51275fd
SOLR-17579: Refactoring suggested by IDE in ReplicationHandler and te…
epugh Dec 14, 2024
642216c
Reformat comment better (#2910)
epugh Dec 17, 2024
9440ec1
SOLR-17595: Backport "Fix Solr examples for Windows" (#2911)
malliaridis Dec 18, 2024
ab66877
Clarify comment since examples do not use a special directory (#2908)
epugh Dec 18, 2024
b3e45f7
Deprecate CloudHttp2SolrClient.Builder#withHttpClient
jdyer1 Dec 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
SOLR-17160: Core admin async ID status, 10k limit and time expire (#2304
)

Core Admin "async" request status tracking is no longer capped at 100; it's 10k.
Statuses are now removed 5 minutes after the read of a completed/failed status.
Helps collection async backup/restore and other operations scale to 100+ shards.

Co-authored-by: David Smiley <dsmiley@salesforce.com>
(cherry picked from commit d3b4c2e)
psalagnac authored and dsmiley committed Jul 16, 2024
commit 338fbdacbecaba76741fe5f8b755e2374f88d8a0
4 changes: 4 additions & 0 deletions solr/CHANGES.txt
Original file line number Diff line number Diff line change
@@ -48,6 +48,10 @@ Improvements

* SOLR-16198: Introduce tabbed sections again in the Ref Guide. (Christos Malliaridis via Eric Pugh)

* SOLR-17160: Core Admin "async" request status tracking is no longer capped at 100; it's 10k.
Statuses are now removed 5 minutes after the read of a completed/failed status. Helps collection
async backup/restore and other operations scale to 100+ shards. (Pierre Salagnac, David Smiley)

Optimizations
---------------------
* SOLR-17257: Both Minimize Cores and the Affinity replica placement strategies would over-gather
153 changes: 109 additions & 44 deletions solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
Original file line number Diff line number Diff line change
@@ -21,20 +21,23 @@
import static org.apache.solr.security.PermissionNameProvider.Name.CORE_EDIT_PERM;
import static org.apache.solr.security.PermissionNameProvider.Name.CORE_READ_PERM;

import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.Expiry;
import com.github.benmanes.caffeine.cache.Ticker;
import java.io.File;
import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
import org.apache.solr.api.AnnotatedApi;
import org.apache.solr.api.Api;
import org.apache.solr.api.JerseyResource;
@@ -47,6 +50,7 @@
import org.apache.solr.common.params.CoreAdminParams;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.EnvUtils;
import org.apache.solr.common.util.ExecutorUtil;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SolrNamedThreadFactory;
@@ -427,11 +431,19 @@ default boolean isExpensive() {
}

public static class CoreAdminAsyncTracker {
private static final int MAX_TRACKED_REQUESTS = 100;
/**
* Max number of requests we track in the Caffeine cache. This limit is super high on purpose,
* we're not supposed to hit it. This is just a protection to grow in memory too much when
* receiving an abusive number of admin requests.
*/
private static final int MAX_TRACKED_REQUESTS =
EnvUtils.getPropertyAsInteger("solr.admin.async.max", 10_000);

public static final String RUNNING = "running";
public static final String COMPLETED = "completed";
public static final String FAILED = "failed";
public final Map<String, Map<String, TaskObject>> requestStatusMap;

private final Cache<String, TaskObject> requestStatusCache; // key by ID

// Executor for all standard tasks (the ones that are not flagged as expensive)
// We always keep 50 live threads
@@ -440,33 +452,59 @@ public static class CoreAdminAsyncTracker {
50, new SolrNamedThreadFactory("parallelCoreAdminAPIBaseExecutor"));

// Executor for expensive tasks
// We keep the number number of max threads very low to have throttling for expensive tasks
// We keep the number of max threads very low to have throttling for expensive tasks
private ExecutorService expensiveExecutor =
ExecutorUtil.newMDCAwareCachedThreadPool(
5,
Integer.MAX_VALUE,
new SolrNamedThreadFactory("parallelCoreAdminAPIExpensiveExecutor"));

public CoreAdminAsyncTracker() {
HashMap<String, Map<String, TaskObject>> map = new HashMap<>(3, 1.0f);
map.put(RUNNING, Collections.synchronizedMap(new LinkedHashMap<>()));
map.put(COMPLETED, Collections.synchronizedMap(new LinkedHashMap<>()));
map.put(FAILED, Collections.synchronizedMap(new LinkedHashMap<>()));
requestStatusMap = Collections.unmodifiableMap(map);
this(
Ticker.systemTicker(),
TimeUnit.MINUTES.toNanos(
EnvUtils.getPropertyAsLong("solr.admin.async.timeout.minutes", 60L)),
TimeUnit.MINUTES.toNanos(
EnvUtils.getPropertyAsLong("solr.admin.async.timeout.completed.minutes", 5L)));
}

/**
* @param runningTimeoutNanos The time-to-keep for tasks in the RUNNING state.
* @param completedTimeoutNanos The time-to-keep for tasks in the COMPLETED or FAILED state
* after the status was polled.
*/
CoreAdminAsyncTracker(Ticker ticker, long runningTimeoutNanos, long completedTimeoutNanos) {

TaskExpiry expiry = new TaskExpiry(runningTimeoutNanos, completedTimeoutNanos);
requestStatusCache =
Caffeine.newBuilder()
.ticker(ticker)
.maximumSize(MAX_TRACKED_REQUESTS)
.expireAfter(expiry)
.build();
}

public void shutdown() {
ExecutorUtil.shutdownAndAwaitTermination(standardExecutor);
ExecutorUtil.shutdownAndAwaitTermination(expensiveExecutor);
}

public Map<String, TaskObject> getRequestStatusMap(String key) {
return requestStatusMap.get(key);
public TaskObject getAsyncRequestForStatus(String key) {
TaskObject task = requestStatusCache.getIfPresent(key);

if (task != null && !RUNNING.equals(task.status) && !task.polledAfterCompletion) {
task.polledAfterCompletion = true;
// At the first time we retrieve the status of a completed request, do a second lookup in
// the cache. This is necessary to update the TTL of this request in the cache.
// Unfortunately, we can't force the expiration time to be refreshed without a lookup.
requestStatusCache.getIfPresent(key);
}

return task;
}

public void submitAsyncTask(TaskObject taskObject) throws SolrException {
ensureTaskIdNotInUse(taskObject.taskId);
addTask(RUNNING, taskObject);
addTask(taskObject);

Runnable command =
() -> {
@@ -497,42 +535,26 @@ public void submitAsyncTask(TaskObject taskObject) throws SolrException {
}
}

/** Helper method to add a task to a tracking type. */
private void addTask(String type, TaskObject o, boolean limit) {
synchronized (getRequestStatusMap(type)) {
if (limit && getRequestStatusMap(type).size() == MAX_TRACKED_REQUESTS) {
String key = getRequestStatusMap(type).entrySet().iterator().next().getKey();
getRequestStatusMap(type).remove(key);
}
addTask(type, o);
}
}

private void addTask(String type, TaskObject o) {
synchronized (getRequestStatusMap(type)) {
getRequestStatusMap(type).put(o.taskId, o);
}
}

/** Helper method to remove a task from a tracking map. */
private void removeTask(String map, String taskId) {
synchronized (getRequestStatusMap(map)) {
getRequestStatusMap(map).remove(taskId);
}
}

private void ensureTaskIdNotInUse(String taskId) throws SolrException {
if (getRequestStatusMap(RUNNING).containsKey(taskId)
|| getRequestStatusMap(COMPLETED).containsKey(taskId)
|| getRequestStatusMap(FAILED).containsKey(taskId)) {
private void addTask(TaskObject taskObject) {
// Ensure task ID is not already in use
TaskObject taskInCache =
requestStatusCache.get(
taskObject.taskId,
n -> {
taskObject.status = RUNNING;
return taskObject;
});

// If we get a different task instance, it means one was already in the cache with the
// same name. Just reject the new one.
if (taskInCache != taskObject) {
throw new SolrException(
ErrorCode.BAD_REQUEST, "Duplicate request with the same requestid found.");
}
}

private void finishTask(TaskObject taskObject, boolean successful) {
removeTask(RUNNING, taskObject.taskId);
addTask(successful ? COMPLETED : FAILED, taskObject, true);
taskObject.status = successful ? COMPLETED : FAILED;
}

/**
@@ -546,6 +568,13 @@ public static class TaskObject {
final Callable<SolrQueryResponse> task;
public String rspInfo;
public Object operationRspInfo;
private volatile String status;

/**
* Flag set to true once the task is complete (can be in error) and the status was polled
* already once. Once set, the time we keep the task status is shortened.
*/
private volatile boolean polledAfterCompletion;

public TaskObject(
String taskId, String action, boolean expensive, Callable<SolrQueryResponse> task) {
@@ -574,6 +603,42 @@ public Object getOperationRspObject() {
public void setOperationRspObject(SolrQueryResponse rspObject) {
this.operationRspInfo = rspObject.getResponse();
}

public String getStatus() {
return status;
}
}

/**
* Expiration policy for Caffeine cache. Depending on whether the status of a completed task was
* already retrieved, we return {@link #runningTimeoutNanos} or {@link #completedTimeoutNanos}.
*/
private static class TaskExpiry implements Expiry<String, TaskObject> {

private final long runningTimeoutNanos;
private final long completedTimeoutNanos;

private TaskExpiry(long runningTimeoutNanos, long completedTimeoutNanos) {
this.runningTimeoutNanos = runningTimeoutNanos;
this.completedTimeoutNanos = completedTimeoutNanos;
}

@Override
public long expireAfterCreate(String key, TaskObject task, long currentTime) {
return runningTimeoutNanos;
}

@Override
public long expireAfterUpdate(
String key, TaskObject task, long currentTime, long currentDuration) {
return task.polledAfterCompletion ? completedTimeoutNanos : runningTimeoutNanos;
}

@Override
public long expireAfterRead(
String key, TaskObject task, long currentTime, long currentDuration) {
return task.polledAfterCompletion ? completedTimeoutNanos : runningTimeoutNanos;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -18,14 +18,14 @@

import static org.apache.solr.handler.admin.CoreAdminHandler.CoreAdminAsyncTracker.COMPLETED;
import static org.apache.solr.handler.admin.CoreAdminHandler.CoreAdminAsyncTracker.FAILED;
import static org.apache.solr.handler.admin.CoreAdminHandler.CoreAdminAsyncTracker.RUNNING;

import jakarta.inject.Inject;
import org.apache.solr.client.api.endpoint.GetNodeCommandStatusApi;
import org.apache.solr.client.api.model.GetNodeCommandStatusResponse;
import org.apache.solr.common.params.CoreAdminParams;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.handler.admin.CoreAdminHandler;
import org.apache.solr.handler.admin.CoreAdminHandler.CoreAdminAsyncTracker.TaskObject;
import org.apache.solr.jersey.PermissionName;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
@@ -51,25 +51,24 @@ public GetNodeCommandStatus(
public GetNodeCommandStatusResponse getCommandStatus(String requestId) {
ensureRequiredParameterProvided(CoreAdminParams.REQUESTID, requestId);
var requestStatusResponse = new GetNodeCommandStatusResponse();
if (coreAdminAsyncTracker.getRequestStatusMap(RUNNING).containsKey(requestId)) {
requestStatusResponse.status = RUNNING;
} else if (coreAdminAsyncTracker.getRequestStatusMap(COMPLETED).containsKey(requestId)) {
requestStatusResponse.status = COMPLETED;
requestStatusResponse.response =
coreAdminAsyncTracker.getRequestStatusMap(COMPLETED).get(requestId).getRspObject();
requestStatusResponse.response =
coreAdminAsyncTracker
.getRequestStatusMap(COMPLETED)
.get(requestId)
.getOperationRspObject();
} else if (coreAdminAsyncTracker.getRequestStatusMap(FAILED).containsKey(requestId)) {
requestStatusResponse.status = FAILED;
requestStatusResponse.response =
coreAdminAsyncTracker.getRequestStatusMap(FAILED).get(requestId).getRspObject();
} else {

TaskObject taskObject = coreAdminAsyncTracker.getAsyncRequestForStatus(requestId);
String status = taskObject != null ? taskObject.getStatus() : null;

if (status == null) {
requestStatusResponse.status = "notfound";
requestStatusResponse.msg = "No task found in running, completed or failed tasks";
} else {
requestStatusResponse.status = status;

if (status.equals(COMPLETED)) {
requestStatusResponse.response = taskObject.getRspObject();
requestStatusResponse.response = taskObject.getOperationRspObject();
} else if (status.equals(FAILED)) {
requestStatusResponse.response = taskObject.getRspObject();
}
}

return requestStatusResponse;
}
}
Original file line number Diff line number Diff line change
@@ -16,6 +16,8 @@
*/
package org.apache.solr.handler.admin;

import static org.apache.solr.handler.admin.CoreAdminHandler.CoreAdminAsyncTracker.COMPLETED;

import java.io.Reader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
@@ -24,7 +26,9 @@
import java.nio.file.StandardCopyOption;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.commons.io.file.PathUtils;
import org.apache.lucene.util.Constants;
import org.apache.solr.SolrTestCaseJ4;
@@ -44,6 +48,8 @@
import org.apache.solr.core.SolrCore;
import org.apache.solr.embedded.JettyConfig;
import org.apache.solr.embedded.JettySolrRunner;
import org.apache.solr.handler.admin.CoreAdminHandler.CoreAdminAsyncTracker;
import org.apache.solr.handler.admin.CoreAdminHandler.CoreAdminAsyncTracker.TaskObject;
import org.apache.solr.response.SolrQueryResponse;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -532,4 +538,64 @@ public void testNonexistentCoreReload() throws Exception {
e.getMessage());
admin.close();
}

@Test
public void testTrackedRequestExpiration() throws Exception {
// Create a tracker with controlled clock, relative to 0
AtomicLong clock = new AtomicLong(0L);
CoreAdminAsyncTracker asyncTracker = new CoreAdminAsyncTracker(clock::get, 100L, 10L);
try {
Set<TaskObject> tasks =
Set.of(
new TaskObject("id1", "ACTION", false, SolrQueryResponse::new),
new TaskObject("id2", "ACTION", false, SolrQueryResponse::new));

// Submit all tasks and wait for internal status to be COMPLETED
tasks.forEach(asyncTracker::submitAsyncTask);
while (!tasks.stream().allMatch(t -> COMPLETED.equals(t.getStatus()))) {
Thread.sleep(10L);
}

// Timeout for running tasks is 100n, so status can be retrieved after 20n.
// But timeout for complete tasks is 10n once we polled the status at least once, so status
// is not available anymore 20n later.
clock.set(20);
assertEquals(COMPLETED, asyncTracker.getAsyncRequestForStatus("id1").getStatus());
clock.set(40L);
assertNull(asyncTracker.getAsyncRequestForStatus("id1"));

// Move the clock after the running timeout.
// Status of second task is not available anymore, even if it wasn't retrieved yet
clock.set(110L);
assertNull(asyncTracker.getAsyncRequestForStatus("id2"));

} finally {
asyncTracker.shutdown();
}
}

/** Check we reject a task is the async ID already exists. */
@Test
public void testDuplicatedRequestId() {

// Different tasks but with same ID
TaskObject task1 = new TaskObject("id1", "ACTION", false, null);
TaskObject task2 = new TaskObject("id1", "ACTION", false, null);

CoreAdminAsyncTracker asyncTracker = new CoreAdminAsyncTracker();
try {
asyncTracker.submitAsyncTask(task1);
try {
asyncTracker.submitAsyncTask(task2);
fail("Task should have been rejected.");
} catch (SolrException e) {
assertEquals("Duplicate request with the same requestid found.", e.getMessage());
}

assertNotNull(task1.getStatus());
assertNull(task2.getStatus());
} finally {
asyncTracker.shutdown();
}
}
}
Original file line number Diff line number Diff line change
@@ -19,12 +19,12 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.util.Map;
import org.apache.solr.SolrTestCase;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.api.endpoint.GetNodeCommandStatusApi;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.handler.admin.CoreAdminHandler;
import org.apache.solr.handler.admin.CoreAdminHandler.CoreAdminAsyncTracker.TaskObject;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -33,7 +33,6 @@
public class GetNodeCommandStatusTest extends SolrTestCase {
private CoreContainer mockCoreContainer;
private CoreAdminHandler.CoreAdminAsyncTracker mockAsyncTracker;
private CoreAdminHandler.CoreAdminAsyncTracker.TaskObject taskObject;
private GetNodeCommandStatusApi requestNodeCommandApi;

@BeforeClass
@@ -45,7 +44,6 @@ public static void ensureWorkingMockito() {
public void setupMocks() {
mockCoreContainer = mock(CoreContainer.class);
mockAsyncTracker = mock(CoreAdminHandler.CoreAdminAsyncTracker.class);
taskObject = new CoreAdminHandler.CoreAdminAsyncTracker.TaskObject(null, null, false, null);
requestNodeCommandApi =
new GetNodeCommandStatus(mockCoreContainer, mockAsyncTracker, null, null);
}
@@ -89,6 +87,9 @@ public void testReturnsStatusOfFailedCommandId() {
}

private void whenTaskExistsWithStatus(String taskId, String status) {
when(mockAsyncTracker.getRequestStatusMap(status)).thenReturn(Map.of(taskId, taskObject));
TaskObject taskObject = mock(TaskObject.class);
when(taskObject.getStatus()).thenReturn(status);

when(mockAsyncTracker.getAsyncRequestForStatus(taskId)).thenReturn(taskObject);
}
}
14 changes: 14 additions & 0 deletions solr/solrj/src/java/org/apache/solr/common/util/EnvUtils.java
Original file line number Diff line number Diff line change
@@ -111,6 +111,20 @@ private static String camelCaseToDotSeparated(String key) {
}

/** Get property as integer */
public static Integer getPropertyAsInteger(String key) {
return getPropertyAsInteger(key, null);
}

/** Get property as integer, or default value */
public static Integer getPropertyAsInteger(String key, Integer defaultValue) {
String value = getProperty(key);
if (value == null) {
return defaultValue;
}
return Integer.parseInt(value);
}

/** Get property as long */
public static Long getPropertyAsLong(String key) {
return getPropertyAsLong(key, null);
}