Skip to content

[refactor](plugin) Remove FE cloud auto-download for JDBC drivers and Java UDF - #66596

Open
CalvinKirs wants to merge 2 commits into
apache:masterfrom
CalvinKirs:cloud_download
Open

[refactor](plugin) Remove FE cloud auto-download for JDBC drivers and Java UDF#66596
CalvinKirs wants to merge 2 commits into
apache:masterfrom
CalvinKirs:cloud_download

Conversation

@CalvinKirs

@CalvinKirs CalvinKirs commented Aug 10, 2026

Copy link
Copy Markdown
Member

What problem does this PR solve?

Related PR: #54304

Problem Summary:

Removes the FE cloud plugin auto-download feature.

In cloud mode, when a JDBC driver or a Java UDF was referenced by bare jar name, FE tried to fetch it from the cluster's object storage (plugins/jdbc_drivers/..., plugins/java_udf/...) instead of resolving it locally.

Two reasons to drop it:

  1. It has had no real users for a long time.
  2. The kernel should not be responsible for distributing peripheral plugins. Staging third-party jars (JDBC drivers, UDF jars) onto the nodes is a deployment / ops concern, and non-cloud deployments have always done it that way.

It was also broken in practice: the downloader built S3 properties without a scheme hint, so the filesystem SPI routed them to HdfsProperties and the download failed with a ClassCastException surfaced as Cannot download JDBC driver from cloud: ....

What is removed:

  • CloudPluginDownloader + its unit test
  • JdbcResource — the JDBC driver cloud-download branch
  • CreateFunctionCommand — the Java UDF cloud-download branch
  • regression-test/suites/plugin_p1/test_cloud_plugin_auto_download.groovy

FE-side plugin resolution is now purely local and identical in cloud and non-cloud mode.

The BE side is deliberately left untouched in this PR.

Release note

FE no longer auto-downloads JDBC drivers or Java UDF jars from object storage in cloud mode. Place the jar under $DORIS_HOME/plugins/jdbc_drivers/ or $DORIS_HOME/plugins/java_udf/ (or use a full URL such as file:// / http://), the same way non-cloud deployments already do. A missing JDBC driver is now reported as JDBC driver file does not exist: <name>.

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
    • No need to test or manual test. Explain why:
      • This is a refactor/code format and no logic has been changed.
      • Previous test can cover this change.
      • No code files have been changed.
      • Other reason: this removes a feature and its tests; the remaining local-resolution path is already covered by existing JDBC catalog and UDF tests.
  • Behavior changed:

    • No.
    • Yes. In cloud mode, a bare jar name is no longer fetched from object storage by FE; it must exist locally under the plugins directory.
  • Does this need documentation?

    • No.
    • Yes.

In cloud mode, when a JDBC catalog's `driver_url` was a bare jar name that
existed in neither the new nor the old default drivers directory, FE fell
back to pulling the jar from the meta-service object store via
CloudPluginDownloader.

The path has had no real users for a long time, and staging third-party
JDBC drivers is not something the kernel should own -- shipping the jar to
`$DORIS_HOME/plugins/jdbc_drivers/` is an ops/deployment concern, the same
as it is in non-cloud mode.

Drop the cloud branch so JDBC driver resolution is purely local and
identical in both modes. When the jar is absent, FE now reports the
existing `JDBC driver file does not exist: xxx` instead of a cloud
download failure.

CloudPluginDownloader itself is untouched: the Java UDF path still uses it.
@CalvinKirs

Copy link
Copy Markdown
Member Author

run buildall

@hello-stephen

Copy link
Copy Markdown
Contributor

FE Regression Coverage Report

Increment line coverage 0.00% (0/660) 🎉
Increment coverage report
Complete coverage report

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 28794 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit e26cc211262548348416c43f3793bdc619520636, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17699	3941	3959	3941
q2	2051	328	203	203
q3	10252	1364	799	799
q4	4681	464	344	344
q5	7508	848	545	545
q6	177	167	136	136
q7	738	806	580	580
q8	9572	1746	1625	1625
q9	5828	4007	3998	3998
q10	6800	1627	1348	1348
q11	497	370	320	320
q12	778	582	448	448
q13	18085	3241	2722	2722
q14	259	256	243	243
q15	q16	736	728	673	673
q17	1010	931	856	856
q18	6540	5599	5565	5565
q19	1181	1258	1096	1096
q20	831	715	638	638
q21	5765	2585	2421	2421
q22	428	348	293	293
Total cold run time: 101416 ms
Total hot run time: 28794 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	4273	4176	4165	4165
q2	282	316	209	209
q3	4479	4882	4366	4366
q4	2161	2250	1417	1417
q5	4163	4056	4096	4056
q6	226	171	128	128
q7	1657	1573	1402	1402
q8	2571	2152	2019	2019
q9	7301	7103	7139	7103
q10	4274	4287	3818	3818
q11	576	398	353	353
q12	704	747	495	495
q13	3117	3451	3018	3018
q14	283	292	266	266
q15	q16	732	708	632	632
q17	1295	1295	1298	1295
q18	12203	10987	11770	10987
q19	1175	1154	1132	1132
q20	2230	2213	1974	1974
q21	5567	4838	4706	4706
q22	519	446	397	397
Total cold run time: 59788 ms
Total hot run time: 53938 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 157977 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit e26cc211262548348416c43f3793bdc619520636, data reload: false

query5	4305	605	455	455
query6	456	220	196	196
query7	4884	560	350	350
query8	314	154	147	147
query9	8744	4034	3985	3985
query10	460	363	308	308
query11	5847	2211	2020	2020
query12	150	96	94	94
query13	1263	591	438	438
query14	6047	4245	3972	3972
query14_1	3777	3832	3799	3799
query15	208	196	174	174
query16	996	456	360	360
query17	907	676	530	530
query18	2415	444	320	320
query19	207	204	143	143
query20	102	101	103	101
query21	226	154	131	131
query22	12931	13054	12779	12779
query23	15795	15005	14669	14669
query23_1	14618	14677	14780	14677
query24	7637	1698	1228	1228
query24_1	1249	1238	1234	1234
query25	529	419	370	370
query26	1332	344	203	203
query27	2595	618	380	380
query28	4530	2075	1974	1974
query29	1060	598	462	462
query30	332	264	217	217
query31	1167	1113	1033	1033
query32	109	62	61	61
query33	528	303	231	231
query34	1189	1141	642	642
query35	738	744	630	630
query36	771	768	688	688
query37	156	107	90	90
query38	1837	1765	1694	1694
query39	824	818	813	813
query39_1	786	782	779	779
query40	253	161	141	141
query41	64	62	63	62
query42	93	92	93	92
query43	308	318	275	275
query44	1428	765	759	759
query45	189	174	163	163
query46	1088	1191	716	716
query47	1535	1505	1482	1482
query48	393	437	292	292
query49	585	408	299	299
query50	1072	456	332	332
query51	10449	10425	10510	10425
query52	92	87	72	72
query53	257	260	206	206
query54	277	232	213	213
query55	79	75	67	67
query56	307	310	293	293
query57	1029	1005	940	940
query58	275	260	249	249
query59	1533	1577	1395	1395
query60	367	287	268	268
query61	172	178	171	171
query62	396	320	270	270
query63	246	203	197	197
query64	3054	1175	986	986
query65	3849	3851	3793	3793
query66	1861	481	384	384
query67	20182	19850	19875	19850
query68	3040	1588	1027	1027
query69	406	293	264	264
query70	839	789	825	789
query71	374	315	305	305
query72	3013	2627	2307	2307
query73	881	772	438	438
query74	4638	4503	4277	4277
query75	2360	2326	1977	1977
query76	2340	1150	762	762
query77	334	361	267	267
query78	11164	11157	10594	10594
query79	1362	1179	778	778
query80	657	547	457	457
query81	445	325	284	284
query82	648	170	140	140
query83	410	323	300	300
query84	319	155	135	135
query85	920	620	524	524
query86	327	239	226	226
query87	1992	1963	1832	1832
query88	3724	2780	2768	2768
query89	387	320	292	292
query90	1937	199	190	190
query91	201	187	161	161
query92	66	60	58	58
query93	1672	1552	1036	1036
query94	547	354	315	315
query95	800	600	475	475
query96	1140	828	362	362
query97	2436	2449	2349	2349
query98	210	189	182	182
query99	738	731	605	605
Total cold run time: 244007 ms
Total hot run time: 157977 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 23.69 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit e26cc211262548348416c43f3793bdc619520636, data reload: false

query1	0.00	0.00	0.01
query2	0.09	0.04	0.04
query3	0.24	0.14	0.13
query4	1.61	0.14	0.14
query5	0.24	0.22	0.22
query6	1.15	0.81	0.80
query7	0.04	0.00	0.00
query8	0.05	0.04	0.04
query9	0.38	0.31	0.32
query10	0.58	0.59	0.54
query11	0.19	0.13	0.13
query12	0.17	0.14	0.14
query13	0.46	0.45	0.46
query14	1.00	0.98	0.99
query15	0.60	0.57	0.58
query16	0.30	0.34	0.32
query17	1.11	1.05	1.11
query18	0.22	0.20	0.20
query19	1.98	1.88	1.93
query20	0.02	0.01	0.02
query21	15.42	0.22	0.15
query22	4.95	0.06	0.06
query23	16.11	0.30	0.11
query24	2.89	0.41	0.33
query25	0.10	0.04	0.04
query26	0.73	0.20	0.15
query27	0.05	0.04	0.03
query28	3.49	0.81	0.36
query29	12.47	4.00	3.17
query30	0.28	0.15	0.16
query31	2.77	0.56	0.31
query32	3.23	0.58	0.49
query33	3.09	3.16	3.19
query34	15.52	3.93	3.27
query35	3.26	3.19	3.22
query36	0.57	0.42	0.44
query37	0.09	0.07	0.06
query38	0.06	0.04	0.04
query39	0.04	0.03	0.03
query40	0.17	0.16	0.13
query41	0.08	0.03	0.03
query42	0.04	0.03	0.03
query43	0.04	0.03	0.04
Total cold run time: 95.88 s
Total hot run time: 23.69 s

@CalvinKirs CalvinKirs changed the title [refactor](jdbc) Remove cloud auto-download for JDBC drivers [refactor](plugin) Remove cloud auto-download for JDBC drivers and Java UDF Aug 10, 2026
Follow-up to the JDBC-side removal in this branch: drop the remaining FE
cloud auto-download path.

Removed:
- CloudPluginDownloader and its unit test
- CreateFunctionCommand: the Java UDF cloud-download branch
- regression-test/suites/plugin_p1/test_cloud_plugin_auto_download.groovy

Rationale: this path has had no real users for a long time, and staging
third-party jars (JDBC drivers, UDF jars) onto the nodes is a deployment
/ ops concern, not something the kernel should own. FE-side plugin
resolution is now purely local and identical in cloud and non-cloud
mode: the file is looked up under
$DORIS_HOME/plugins/{jdbc_drivers,java_udf}/, and a missing JDBC driver
is reported as such instead of being fetched from object storage.

The BE side is left untouched.
@CalvinKirs CalvinKirs changed the title [refactor](plugin) Remove cloud auto-download for JDBC drivers and Java UDF [refactor](plugin) Remove FE cloud auto-download for JDBC drivers and Java UDF Aug 10, 2026
@CalvinKirs

Copy link
Copy Markdown
Member Author

run buildall

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