Skip to content

Conversation

@felixwluo
Copy link
Contributor

What problem does this PR solve?

Problem Summary:
error message:

2025-11-04 15:33:05,766 WARN (mysql-nio-pool-196|193) [StmtExecutor.executeByNereids():853] Nereids plan query failed:
select * from iceberg_catalog.bss.bss_customer limit 1
java.lang.RuntimeException: NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:591) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.getIcebergSchema(HMSExternalTable.java:554) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchema(HMSExternalTable.java:545) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchemaAndUpdateTime(HMSExternalTable.java:529) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchemaAndUpdateTime(HMSExternalTable.java:517) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalCatalog.getSchema(ExternalCatalog.java:595) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalSchemaCache.loadSchema(ExternalSchemaCache.java:81) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.ExternalSchemaCache.getSchemaValue(ExternalSchemaCache.java:94) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalSchemaCache.getSchemaValue(ExternalSchemaCache.java:90) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalTable.getFullSchema(ExternalTable.java:171) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalTable.getBaseSchema(ExternalTable.java:177) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.trees.plans.logical.LogicalCatalogRelation.computeOutput(LogicalCatalogRelation.java:103) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:186) ~[guava-33.2.1-jre.jar:?]
        at org.apache.doris.nereids.properties.LogicalProperties.getOutput(LogicalProperties.java:104) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.rules.analysis.BindRelation.lambda$build$0(BindRelation.java:123) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.pattern.PatternMatcher$1.transform(PatternMatcher.java:92) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteJob.rewrite(PlanTreeRewriteJob.java:57) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteBottomUpJob.rewriteThis(PlanTreeRewriteBottomUpJob.java:91) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteBottomUpJob.execute(PlanTreeRewriteBottomUpJob.java:75) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.scheduler.SimpleJobScheduler.executeJobPool(SimpleJobScheduler.java:44) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.RootPlanTreeRewriteJob.execute(RootPlanTreeRewriteJob.java:66) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.executor.AbstractBatchJobExecutor.execute(AbstractBatchJobExecutor.java:139) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.executor.Analyzer.analyze(Analyzer.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.lambda$analyze$4(NereidsPlanner.java:365) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.keepOrShowPlanProcess(NereidsPlanner.java:898) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.analyze(NereidsPlanner.java:365) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.planWithoutLock(NereidsPlanner.java:250) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.planWithLock(NereidsPlanner.java:224) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.plan(NereidsPlanner.java:145) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.executeByNereids(StmtExecutor.java:847) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:625) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.queryRetry(StmtExecutor.java:587) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:572) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.ConnectProcessor.executeQuery(ConnectProcessor.java:375) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:256) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.handleQuery(MysqlConnectProcessor.java:229) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.dispatch(MysqlConnectProcessor.java:258) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.processOnce(MysqlConnectProcessor.java:438) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: java.lang.RuntimeException: NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.loadTable(IcebergMetadataCache.java:117) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$new$1(IcebergMetadataCache.java:68) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.lambda$statsAware$0(LocalCache.java:139) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.getIcebergTable(IcebergMetadataCache.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTableInternal(IcebergUtils.java:570) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTable(IcebergUtils.java:549) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.lambda$getSchema$1(IcebergUtils.java:579) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:578) ~[doris-fe.jar:1.2-SNAPSHOT]
        ... 48 more
Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergMetadataOps.loadTable(IcebergMetadataOps.java:278) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$loadTable$2(IcebergMetadataCache.java:115) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.loadTable(IcebergMetadataCache.java:114) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$new$1(IcebergMetadataCache.java:68) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.lambda$statsAware$0(LocalCache.java:139) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.getIcebergTable(IcebergMetadataCache.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTableInternal(IcebergUtils.java:570) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTable(IcebergUtils.java:549) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.lambda$getSchema$1(IcebergUtils.java:579) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:578) ~[doris-fe.jar:1.2-SNAPSHOT]
        ... 48 more

Release note

None

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
  • Behavior changed:

    • No.
    • Yes.
  • Does this need documentation?

    • No.
    • Yes.

Check List (For Reviewer who merge this PR)

  • Confirm the release note
  • Confirm test cases
  • Confirm document
  • Add branch pick label

@hello-stephen
Copy link
Contributor

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?

@felixwluo felixwluo requested a review from morningman November 4, 2025 12:26
@felixwluo
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-DS: Total hot run time: 189306 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 4c6cf0aa5a4a016e01504217797135ac9d50ba37, data reload: false

query1	1071	396	390	390
query2	6572	1714	1711	1711
query3	6754	228	223	223
query4	26546	23733	23107	23107
query5	5517	615	454	454
query6	356	249	238	238
query7	4664	517	329	329
query8	320	272	247	247
query9	8745	2588	2608	2588
query10	550	354	294	294
query11	15518	15071	14826	14826
query12	178	117	117	117
query13	1711	574	454	454
query14	12360	9239	9300	9239
query15	220	190	169	169
query16	7792	744	561	561
query17	1627	839	634	634
query18	2147	443	356	356
query19	236	202	179	179
query20	141	149	138	138
query21	327	138	118	118
query22	4605	4827	4492	4492
query23	34578	34164	33669	33669
query24	8262	2533	2570	2533
query25	622	606	504	504
query26	1257	286	171	171
query27	2797	520	368	368
query28	4398	2248	2239	2239
query29	1060	733	538	538
query30	302	231	199	199
query31	921	857	789	789
query32	86	75	75	75
query33	595	412	369	369
query34	824	889	541	541
query35	807	850	752	752
query36	959	1003	913	913
query37	120	105	88	88
query38	3532	3583	3551	3551
query39	1490	1413	1407	1407
query40	220	127	123	123
query41	66	110	56	56
query42	124	109	108	108
query43	499	501	462	462
query44	1238	734	730	730
query45	183	175	172	172
query46	889	980	659	659
query47	1742	1790	1758	1758
query48	380	428	331	331
query49	769	507	412	412
query50	653	690	408	408
query51	3940	3964	3844	3844
query52	108	110	97	97
query53	231	259	194	194
query54	305	283	260	260
query55	84	85	81	81
query56	301	311	289	289
query57	1170	1211	1113	1113
query58	284	267	266	266
query59	2559	2625	2582	2582
query60	338	329	331	329
query61	191	160	150	150
query62	787	745	670	670
query63	226	192	195	192
query64	4396	1163	873	873
query65	4020	3957	3915	3915
query66	1045	485	337	337
query67	15163	15091	14971	14971
query68	8591	884	589	589
query69	528	322	287	287
query70	1321	1251	1301	1251
query71	508	340	317	317
query72	5969	4930	4990	4930
query73	688	601	360	360
query74	8886	9008	8842	8842
query75	4054	3399	2871	2871
query76	3876	1179	732	732
query77	801	411	320	320
query78	9585	9788	8813	8813
query79	1955	861	591	591
query80	624	556	505	505
query81	486	263	220	220
query82	496	161	126	126
query83	273	257	242	242
query84	257	116	91	91
query85	894	476	431	431
query86	358	302	304	302
query87	3793	3735	3669	3669
query88	3549	2237	2243	2237
query89	392	329	291	291
query90	2024	210	214	210
query91	159	163	134	134
query92	82	69	63	63
query93	1593	945	642	642
query94	688	456	342	342
query95	399	316	308	308
query96	485	556	282	282
query97	2919	2972	2876	2876
query98	249	215	213	213
query99	1620	1412	1267	1267
Total cold run time: 280580 ms
Total hot run time: 189306 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 27.39 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 4c6cf0aa5a4a016e01504217797135ac9d50ba37, data reload: false

query1	0.05	0.05	0.05
query2	0.09	0.05	0.05
query3	0.25	0.09	0.08
query4	1.60	0.11	0.11
query5	0.27	0.25	0.25
query6	1.20	0.65	0.65
query7	0.03	0.02	0.03
query8	0.06	0.04	0.04
query9	0.59	0.52	0.52
query10	0.58	0.60	0.58
query11	0.16	0.11	0.11
query12	0.15	0.12	0.12
query13	0.62	0.60	0.60
query14	0.99	1.00	1.01
query15	0.85	0.83	0.82
query16	0.40	0.39	0.41
query17	1.06	1.00	1.03
query18	0.22	0.20	0.20
query19	1.99	1.78	1.83
query20	0.02	0.01	0.01
query21	15.43	0.18	0.14
query22	5.06	0.08	0.04
query23	15.67	0.26	0.10
query24	3.36	1.13	0.29
query25	0.08	0.07	0.06
query26	0.15	0.13	0.14
query27	0.06	0.06	0.05
query28	4.06	1.12	0.94
query29	12.53	3.95	3.30
query30	0.29	0.14	0.11
query31	2.82	0.60	0.39
query32	3.22	0.56	0.47
query33	2.99	3.07	3.05
query34	15.85	5.22	4.56
query35	4.56	4.55	4.58
query36	0.69	0.51	0.48
query37	0.10	0.06	0.06
query38	0.06	0.04	0.04
query39	0.04	0.03	0.03
query40	0.16	0.14	0.15
query41	0.08	0.03	0.02
query42	0.04	0.03	0.03
query43	0.04	0.04	0.03
Total cold run time: 98.52 s
Total hot run time: 27.39 s

@hello-stephen
Copy link
Contributor

FE UT Coverage Report

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

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

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

morningman
morningman previously approved these changes Nov 5, 2025
lide-reed
lide-reed previously approved these changes Nov 5, 2025
Copy link
Contributor

@lide-reed lide-reed left a comment

Choose a reason for hiding this comment

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

LGTM

@github-actions github-actions bot added the approved Indicates a PR has been approved by one committer. label Nov 5, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Nov 5, 2025

PR approved by at least one committer and no changes requested.

@github-actions
Copy link
Contributor

github-actions bot commented Nov 5, 2025

PR approved by anyone and no changes requested.

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

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

Comment on lines 161 to 165
if (icebergMetadataOps != null) {
icebergMetadataOps.close();
}
}
Copy link
Member

@CalvinKirs CalvinKirs Nov 5, 2025

Choose a reason for hiding this comment

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

I don’t think this PR really fixes the issue.
super.resetToUninitialized(invalidCache) calls onClose(), which releases the resources, but it doesn’t set the object to null.
Since we check null to see if it’s initialized, you probably need to set it to null after closing it.

@felixwluo felixwluo dismissed stale reviews from lide-reed and morningman via ba00771 November 5, 2025 04:44
@felixwluo felixwluo force-pushed the fix-icebergcatalog-npe branch from 4c6cf0a to ba00771 Compare November 5, 2025 04:44
@felixwluo
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-DS: Total hot run time: 190203 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 a2b9f48dec9717464de57a2d5d4118e5ded1b5c2, data reload: false

query1	1082	398	387	387
query2	6549	1677	1688	1677
query3	6756	228	222	222
query4	26807	23485	23423	23423
query5	5738	665	518	518
query6	350	256	230	230
query7	4663	489	296	296
query8	300	257	246	246
query9	8737	2571	2601	2571
query10	556	324	275	275
query11	15655	15123	15104	15104
query12	196	119	112	112
query13	1675	539	453	453
query14	12448	9250	9121	9121
query15	231	189	174	174
query16	7738	670	505	505
query17	1612	765	700	700
query18	2177	459	369	369
query19	258	227	196	196
query20	141	146	146	146
query21	237	142	121	121
query22	4697	4676	4603	4603
query23	34950	33679	33950	33679
query24	8342	2505	2623	2505
query25	616	618	469	469
query26	1999	289	159	159
query27	2776	533	372	372
query28	4384	2251	2222	2222
query29	826	653	504	504
query30	325	252	207	207
query31	1012	883	797	797
query32	80	75	63	63
query33	658	374	332	332
query34	873	890	574	574
query35	835	908	788	788
query36	1004	1003	922	922
query37	130	107	86	86
query38	3529	3770	3644	3644
query39	1521	1480	1597	1480
query40	220	125	118	118
query41	57	57	57	57
query42	118	113	105	105
query43	476	487	482	482
query44	1224	744	731	731
query45	181	181	173	173
query46	884	987	635	635
query47	1741	1843	1746	1746
query48	392	420	325	325
query49	788	497	410	410
query50	631	667	420	420
query51	3857	3891	3920	3891
query52	116	117	98	98
query53	237	265	191	191
query54	307	316	271	271
query55	82	85	85	85
query56	321	301	298	298
query57	1176	1188	1120	1120
query58	285	273	270	270
query59	2565	2694	2521	2521
query60	367	333	318	318
query61	160	158	156	156
query62	778	723	669	669
query63	225	189	186	186
query64	4451	1155	847	847
query65	4013	3947	3977	3947
query66	1044	426	332	332
query67	15343	15286	14981	14981
query68	8492	863	595	595
query69	547	341	289	289
query70	1284	1245	1219	1219
query71	491	338	313	313
query72	5950	4980	5076	4980
query73	662	639	366	366
query74	8897	9135	8905	8905
query75	3539	3349	2871	2871
query76	3535	1131	734	734
query77	660	385	303	303
query78	9632	9489	8971	8971
query79	2934	788	594	594
query80	870	559	500	500
query81	530	264	226	226
query82	755	156	128	128
query83	262	259	249	249
query84	257	102	98	98
query85	903	491	435	435
query86	342	303	315	303
query87	3706	3751	3635	3635
query88	3902	2215	2253	2215
query89	389	320	292	292
query90	1961	211	211	211
query91	161	170	133	133
query92	80	66	63	63
query93	2687	966	636	636
query94	781	439	322	322
query95	401	320	306	306
query96	480	566	274	274
query97	2946	2964	2840	2840
query98	234	213	211	211
query99	1573	1432	1351	1351
Total cold run time: 284345 ms
Total hot run time: 190203 ms

@doris-robot
Copy link

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

query1	0.06	0.05	0.05
query2	0.09	0.05	0.04
query3	0.25	0.08	0.08
query4	1.61	0.12	0.12
query5	0.27	0.26	0.25
query6	1.17	0.64	0.64
query7	0.03	0.03	0.03
query8	0.05	0.04	0.04
query9	0.60	0.52	0.53
query10	0.59	0.58	0.58
query11	0.16	0.11	0.11
query12	0.15	0.12	0.13
query13	0.61	0.59	0.61
query14	1.01	1.00	1.01
query15	0.86	0.82	0.84
query16	0.39	0.43	0.39
query17	1.07	1.05	1.03
query18	0.22	0.20	0.20
query19	1.88	1.84	1.85
query20	0.02	0.01	0.01
query21	15.46	0.20	0.13
query22	4.93	0.07	0.05
query23	15.66	0.27	0.10
query24	2.81	0.49	0.74
query25	0.07	0.06	0.06
query26	0.14	0.13	0.14
query27	0.07	0.06	0.06
query28	4.49	1.17	0.94
query29	12.56	3.92	3.23
query30	0.29	0.14	0.11
query31	2.82	0.60	0.39
query32	3.23	0.56	0.48
query33	3.04	3.09	3.09
query34	15.87	5.21	4.52
query35	4.56	4.59	4.63
query36	0.66	0.50	0.50
query37	0.10	0.07	0.07
query38	0.06	0.04	0.04
query39	0.03	0.03	0.03
query40	0.19	0.14	0.13
query41	0.09	0.04	0.03
query42	0.04	0.03	0.04
query43	0.04	0.03	0.03
Total cold run time: 98.3 s
Total hot run time: 27.69 s

morningman
morningman previously approved these changes Nov 5, 2025
@hello-stephen
Copy link
Contributor

FE UT Coverage Report

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

lide-reed
lide-reed previously approved these changes Nov 5, 2025
Copy link
Contributor

@lide-reed lide-reed left a comment

Choose a reason for hiding this comment

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

LGTM

@felixwluo felixwluo dismissed stale reviews from lide-reed and morningman via 00f8c08 November 5, 2025 06:29
@felixwluo felixwluo force-pushed the fix-icebergcatalog-npe branch from a2b9f48 to 00f8c08 Compare November 5, 2025 06:29
Copy link
Contributor

@lide-reed lide-reed left a comment

Choose a reason for hiding this comment

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

LGTM

@morningman
Copy link
Contributor

run buildall

@doris-robot
Copy link

TPC-DS: Total hot run time: 190591 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 1904d4aed84371780f30ed1dcb2b778857b2ae50, data reload: false

query1	1044	418	395	395
query2	6579	1676	1682	1676
query3	6753	225	245	225
query4	26146	23805	23359	23359
query5	4583	641	465	465
query6	348	254	234	234
query7	4671	504	310	310
query8	307	267	258	258
query9	8716	2601	2613	2601
query10	477	346	289	289
query11	16025	15173	15133	15133
query12	177	121	112	112
query13	1700	579	460	460
query14	11301	9253	9356	9253
query15	201	191	176	176
query16	7688	693	488	488
query17	1250	783	642	642
query18	2066	480	385	385
query19	264	242	218	218
query20	135	128	134	128
query21	239	152	129	129
query22	4682	4743	4406	4406
query23	34996	33980	33893	33893
query24	8631	2502	2566	2502
query25	609	535	478	478
query26	1295	284	165	165
query27	2771	504	372	372
query28	5143	2333	2238	2238
query29	841	689	519	519
query30	311	233	191	191
query31	1004	847	753	753
query32	87	71	74	71
query33	625	410	339	339
query34	824	909	557	557
query35	866	888	806	806
query36	998	1097	916	916
query37	132	128	89	89
query38	3655	3690	3657	3657
query39	1540	1475	1471	1471
query40	222	139	124	124
query41	76	60	55	55
query42	125	110	113	110
query43	486	496	480	480
query44	1230	751	736	736
query45	182	180	175	175
query46	881	997	636	636
query47	1776	1794	1714	1714
query48	383	421	327	327
query49	772	517	426	426
query50	651	681	424	424
query51	3883	4065	3927	3927
query52	109	108	101	101
query53	241	271	197	197
query54	322	304	290	290
query55	86	85	86	85
query56	327	322	289	289
query57	1177	1189	1118	1118
query58	291	280	273	273
query59	2536	2660	2551	2551
query60	350	341	325	325
query61	161	159	158	158
query62	824	748	668	668
query63	226	197	198	197
query64	4438	1159	855	855
query65	4032	3942	3943	3942
query66	1102	432	336	336
query67	15344	15190	14994	14994
query68	8613	929	600	600
query69	504	321	300	300
query70	1350	1290	1250	1250
query71	522	337	308	308
query72	5852	5017	4930	4930
query73	691	576	363	363
query74	9090	9158	8950	8950
query75	4111	3412	2777	2777
query76	3790	1168	741	741
query77	809	409	314	314
query78	9575	9777	9033	9033
query79	2360	799	607	607
query80	695	566	514	514
query81	485	264	230	230
query82	424	162	129	129
query83	285	267	251	251
query84	294	108	100	100
query85	919	506	453	453
query86	342	300	284	284
query87	3780	3735	3702	3702
query88	3340	2281	2244	2244
query89	399	317	285	285
query90	1993	221	209	209
query91	159	162	137	137
query92	81	69	63	63
query93	1391	967	648	648
query94	702	441	346	346
query95	408	326	316	316
query96	485	566	278	278
query97	2942	2966	2869	2869
query98	238	214	208	208
query99	1469	1396	1280	1280
Total cold run time: 280011 ms
Total hot run time: 190591 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 27.43 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 1904d4aed84371780f30ed1dcb2b778857b2ae50, data reload: false

query1	0.05	0.05	0.05
query2	0.09	0.05	0.05
query3	0.25	0.08	0.08
query4	1.62	0.12	0.12
query5	0.27	0.26	0.25
query6	1.17	0.64	0.65
query7	0.03	0.03	0.02
query8	0.06	0.04	0.04
query9	0.60	0.51	0.51
query10	0.57	0.57	0.57
query11	0.15	0.11	0.12
query12	0.15	0.11	0.12
query13	0.62	0.61	0.60
query14	1.01	1.01	1.00
query15	0.85	0.84	0.84
query16	0.40	0.39	0.42
query17	1.09	1.00	1.02
query18	0.22	0.20	0.20
query19	1.91	1.79	1.79
query20	0.01	0.01	0.01
query21	15.43	0.20	0.13
query22	5.12	0.06	0.05
query23	15.68	0.26	0.11
query24	2.51	0.85	0.45
query25	0.08	0.05	0.06
query26	0.15	0.14	0.14
query27	0.07	0.05	0.05
query28	3.68	1.12	0.93
query29	12.60	3.91	3.20
query30	0.28	0.14	0.12
query31	2.81	0.60	0.38
query32	3.23	0.56	0.47
query33	3.07	3.01	3.02
query34	15.96	5.15	4.56
query35	4.60	4.55	4.57
query36	0.68	0.50	0.50
query37	0.10	0.07	0.06
query38	0.07	0.04	0.04
query39	0.03	0.03	0.03
query40	0.18	0.14	0.14
query41	0.07	0.03	0.02
query42	0.04	0.04	0.03
query43	0.04	0.04	0.03
Total cold run time: 97.6 s
Total hot run time: 27.43 s

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 75.00% (3/4) 🎉
Increment coverage report
Complete coverage report

@felixwluo
Copy link
Contributor Author

run p0

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 75.00% (3/4) 🎉
Increment coverage report
Complete coverage report

@felixwluo felixwluo requested a review from morningman November 7, 2025 02:53
@morningman morningman merged commit bb04d4d into apache:master Nov 7, 2025
30 of 31 checks passed
github-actions bot pushed a commit that referenced this pull request Nov 7, 2025
### What problem does this PR solve?

Problem Summary:
error message:
```
2025-11-04 15:33:05,766 WARN (mysql-nio-pool-196|193) [StmtExecutor.executeByNereids():853] Nereids plan query failed:
select * from iceberg_catalog.bss.bss_customer limit 1
java.lang.RuntimeException: NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:591) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.getIcebergSchema(HMSExternalTable.java:554) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchema(HMSExternalTable.java:545) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchemaAndUpdateTime(HMSExternalTable.java:529) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchemaAndUpdateTime(HMSExternalTable.java:517) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalCatalog.getSchema(ExternalCatalog.java:595) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalSchemaCache.loadSchema(ExternalSchemaCache.java:81) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.ExternalSchemaCache.getSchemaValue(ExternalSchemaCache.java:94) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalSchemaCache.getSchemaValue(ExternalSchemaCache.java:90) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalTable.getFullSchema(ExternalTable.java:171) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalTable.getBaseSchema(ExternalTable.java:177) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.trees.plans.logical.LogicalCatalogRelation.computeOutput(LogicalCatalogRelation.java:103) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:186) ~[guava-33.2.1-jre.jar:?]
        at org.apache.doris.nereids.properties.LogicalProperties.getOutput(LogicalProperties.java:104) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.rules.analysis.BindRelation.lambda$build$0(BindRelation.java:123) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.pattern.PatternMatcher$1.transform(PatternMatcher.java:92) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteJob.rewrite(PlanTreeRewriteJob.java:57) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteBottomUpJob.rewriteThis(PlanTreeRewriteBottomUpJob.java:91) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteBottomUpJob.execute(PlanTreeRewriteBottomUpJob.java:75) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.scheduler.SimpleJobScheduler.executeJobPool(SimpleJobScheduler.java:44) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.RootPlanTreeRewriteJob.execute(RootPlanTreeRewriteJob.java:66) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.executor.AbstractBatchJobExecutor.execute(AbstractBatchJobExecutor.java:139) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.executor.Analyzer.analyze(Analyzer.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.lambda$analyze$4(NereidsPlanner.java:365) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.keepOrShowPlanProcess(NereidsPlanner.java:898) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.analyze(NereidsPlanner.java:365) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.planWithoutLock(NereidsPlanner.java:250) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.planWithLock(NereidsPlanner.java:224) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.plan(NereidsPlanner.java:145) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.executeByNereids(StmtExecutor.java:847) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:625) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.queryRetry(StmtExecutor.java:587) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:572) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.ConnectProcessor.executeQuery(ConnectProcessor.java:375) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:256) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.handleQuery(MysqlConnectProcessor.java:229) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.dispatch(MysqlConnectProcessor.java:258) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.processOnce(MysqlConnectProcessor.java:438) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: java.lang.RuntimeException: NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.loadTable(IcebergMetadataCache.java:117) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$new$1(IcebergMetadataCache.java:68) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.lambda$statsAware$0(LocalCache.java:139) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.getIcebergTable(IcebergMetadataCache.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTableInternal(IcebergUtils.java:570) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTable(IcebergUtils.java:549) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.lambda$getSchema$1(IcebergUtils.java:579) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:578) ~[doris-fe.jar:1.2-SNAPSHOT]
        ... 48 more
Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergMetadataOps.loadTable(IcebergMetadataOps.java:278) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$loadTable$2(IcebergMetadataCache.java:115) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.loadTable(IcebergMetadataCache.java:114) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$new$1(IcebergMetadataCache.java:68) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.lambda$statsAware$0(LocalCache.java:139) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.getIcebergTable(IcebergMetadataCache.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTableInternal(IcebergUtils.java:570) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTable(IcebergUtils.java:549) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.lambda$getSchema$1(IcebergUtils.java:579) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:578) ~[doris-fe.jar:1.2-SNAPSHOT]
        ... 48 more
```
github-actions bot pushed a commit that referenced this pull request Nov 7, 2025
### What problem does this PR solve?

Problem Summary:
error message:
```
2025-11-04 15:33:05,766 WARN (mysql-nio-pool-196|193) [StmtExecutor.executeByNereids():853] Nereids plan query failed:
select * from iceberg_catalog.bss.bss_customer limit 1
java.lang.RuntimeException: NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:591) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.getIcebergSchema(HMSExternalTable.java:554) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchema(HMSExternalTable.java:545) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchemaAndUpdateTime(HMSExternalTable.java:529) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchemaAndUpdateTime(HMSExternalTable.java:517) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalCatalog.getSchema(ExternalCatalog.java:595) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalSchemaCache.loadSchema(ExternalSchemaCache.java:81) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.ExternalSchemaCache.getSchemaValue(ExternalSchemaCache.java:94) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalSchemaCache.getSchemaValue(ExternalSchemaCache.java:90) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalTable.getFullSchema(ExternalTable.java:171) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalTable.getBaseSchema(ExternalTable.java:177) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.trees.plans.logical.LogicalCatalogRelation.computeOutput(LogicalCatalogRelation.java:103) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:186) ~[guava-33.2.1-jre.jar:?]
        at org.apache.doris.nereids.properties.LogicalProperties.getOutput(LogicalProperties.java:104) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.rules.analysis.BindRelation.lambda$build$0(BindRelation.java:123) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.pattern.PatternMatcher$1.transform(PatternMatcher.java:92) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteJob.rewrite(PlanTreeRewriteJob.java:57) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteBottomUpJob.rewriteThis(PlanTreeRewriteBottomUpJob.java:91) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteBottomUpJob.execute(PlanTreeRewriteBottomUpJob.java:75) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.scheduler.SimpleJobScheduler.executeJobPool(SimpleJobScheduler.java:44) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.RootPlanTreeRewriteJob.execute(RootPlanTreeRewriteJob.java:66) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.executor.AbstractBatchJobExecutor.execute(AbstractBatchJobExecutor.java:139) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.executor.Analyzer.analyze(Analyzer.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.lambda$analyze$4(NereidsPlanner.java:365) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.keepOrShowPlanProcess(NereidsPlanner.java:898) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.analyze(NereidsPlanner.java:365) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.planWithoutLock(NereidsPlanner.java:250) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.planWithLock(NereidsPlanner.java:224) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.plan(NereidsPlanner.java:145) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.executeByNereids(StmtExecutor.java:847) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:625) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.queryRetry(StmtExecutor.java:587) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:572) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.ConnectProcessor.executeQuery(ConnectProcessor.java:375) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:256) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.handleQuery(MysqlConnectProcessor.java:229) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.dispatch(MysqlConnectProcessor.java:258) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.processOnce(MysqlConnectProcessor.java:438) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: java.lang.RuntimeException: NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.loadTable(IcebergMetadataCache.java:117) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$new$1(IcebergMetadataCache.java:68) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.lambda$statsAware$0(LocalCache.java:139) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.getIcebergTable(IcebergMetadataCache.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTableInternal(IcebergUtils.java:570) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTable(IcebergUtils.java:549) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.lambda$getSchema$1(IcebergUtils.java:579) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:578) ~[doris-fe.jar:1.2-SNAPSHOT]
        ... 48 more
Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergMetadataOps.loadTable(IcebergMetadataOps.java:278) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$loadTable$2(IcebergMetadataCache.java:115) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.loadTable(IcebergMetadataCache.java:114) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$new$1(IcebergMetadataCache.java:68) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.lambda$statsAware$0(LocalCache.java:139) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.getIcebergTable(IcebergMetadataCache.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTableInternal(IcebergUtils.java:570) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTable(IcebergUtils.java:549) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.lambda$getSchema$1(IcebergUtils.java:579) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:578) ~[doris-fe.jar:1.2-SNAPSHOT]
        ... 48 more
```
CalvinKirs pushed a commit to CalvinKirs/incubator-doris that referenced this pull request Nov 7, 2025
### What problem does this PR solve?

Problem Summary:
error message:
```
2025-11-04 15:33:05,766 WARN (mysql-nio-pool-196|193) [StmtExecutor.executeByNereids():853] Nereids plan query failed:
select * from iceberg_catalog.bss.bss_customer limit 1
java.lang.RuntimeException: NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:591) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.getIcebergSchema(HMSExternalTable.java:554) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchema(HMSExternalTable.java:545) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchemaAndUpdateTime(HMSExternalTable.java:529) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchemaAndUpdateTime(HMSExternalTable.java:517) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalCatalog.getSchema(ExternalCatalog.java:595) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalSchemaCache.loadSchema(ExternalSchemaCache.java:81) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.ExternalSchemaCache.getSchemaValue(ExternalSchemaCache.java:94) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalSchemaCache.getSchemaValue(ExternalSchemaCache.java:90) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalTable.getFullSchema(ExternalTable.java:171) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalTable.getBaseSchema(ExternalTable.java:177) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.trees.plans.logical.LogicalCatalogRelation.computeOutput(LogicalCatalogRelation.java:103) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:186) ~[guava-33.2.1-jre.jar:?]
        at org.apache.doris.nereids.properties.LogicalProperties.getOutput(LogicalProperties.java:104) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.rules.analysis.BindRelation.lambda$build$0(BindRelation.java:123) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.pattern.PatternMatcher$1.transform(PatternMatcher.java:92) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteJob.rewrite(PlanTreeRewriteJob.java:57) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteBottomUpJob.rewriteThis(PlanTreeRewriteBottomUpJob.java:91) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteBottomUpJob.execute(PlanTreeRewriteBottomUpJob.java:75) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.scheduler.SimpleJobScheduler.executeJobPool(SimpleJobScheduler.java:44) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.RootPlanTreeRewriteJob.execute(RootPlanTreeRewriteJob.java:66) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.executor.AbstractBatchJobExecutor.execute(AbstractBatchJobExecutor.java:139) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.executor.Analyzer.analyze(Analyzer.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.lambda$analyze$4(NereidsPlanner.java:365) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.keepOrShowPlanProcess(NereidsPlanner.java:898) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.analyze(NereidsPlanner.java:365) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.planWithoutLock(NereidsPlanner.java:250) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.planWithLock(NereidsPlanner.java:224) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.plan(NereidsPlanner.java:145) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.executeByNereids(StmtExecutor.java:847) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:625) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.queryRetry(StmtExecutor.java:587) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:572) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.ConnectProcessor.executeQuery(ConnectProcessor.java:375) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:256) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.handleQuery(MysqlConnectProcessor.java:229) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.dispatch(MysqlConnectProcessor.java:258) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.processOnce(MysqlConnectProcessor.java:438) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: java.lang.RuntimeException: NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.loadTable(IcebergMetadataCache.java:117) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$new$1(IcebergMetadataCache.java:68) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.lambda$statsAware$0(LocalCache.java:139) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.getIcebergTable(IcebergMetadataCache.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTableInternal(IcebergUtils.java:570) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTable(IcebergUtils.java:549) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.lambda$getSchema$1(IcebergUtils.java:579) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:578) ~[doris-fe.jar:1.2-SNAPSHOT]
        ... 48 more
Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergMetadataOps.loadTable(IcebergMetadataOps.java:278) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$loadTable$2(IcebergMetadataCache.java:115) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.loadTable(IcebergMetadataCache.java:114) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$new$1(IcebergMetadataCache.java:68) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.lambda$statsAware$0(LocalCache.java:139) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.getIcebergTable(IcebergMetadataCache.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTableInternal(IcebergUtils.java:570) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTable(IcebergUtils.java:549) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.lambda$getSchema$1(IcebergUtils.java:579) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:578) ~[doris-fe.jar:1.2-SNAPSHOT]
        ... 48 more
```
morningman pushed a commit that referenced this pull request Nov 7, 2025
Cherry-picked from #57696

Co-authored-by: lw112 <131352377+felixwluo@users.noreply.github.com>
yiguolei pushed a commit that referenced this pull request Nov 8, 2025
Cherry-picked from #57696

Co-authored-by: lw112 <131352377+felixwluo@users.noreply.github.com>
felixwluo added a commit to felixwluo/doris that referenced this pull request Nov 10, 2025
morningman pushed a commit that referenced this pull request Nov 11, 2025
Hastyshell pushed a commit to Hastyshell/doris that referenced this pull request Nov 12, 2025
apache#57696 (apache#5617)

cherry-picks from apache#57696
Related to apache#5571

Co-authored-by: lw112 <131352377+felixwluo@users.noreply.github.com>
wyxxxcat pushed a commit to wyxxxcat/doris that referenced this pull request Nov 18, 2025
### What problem does this PR solve?

Problem Summary:
error message:
```
2025-11-04 15:33:05,766 WARN (mysql-nio-pool-196|193) [StmtExecutor.executeByNereids():853] Nereids plan query failed:
select * from iceberg_catalog.bss.bss_customer limit 1
java.lang.RuntimeException: NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:591) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.getIcebergSchema(HMSExternalTable.java:554) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchema(HMSExternalTable.java:545) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchemaAndUpdateTime(HMSExternalTable.java:529) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.hive.HMSExternalTable.initSchemaAndUpdateTime(HMSExternalTable.java:517) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalCatalog.getSchema(ExternalCatalog.java:595) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalSchemaCache.loadSchema(ExternalSchemaCache.java:81) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.ExternalSchemaCache.getSchemaValue(ExternalSchemaCache.java:94) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalSchemaCache.getSchemaValue(ExternalSchemaCache.java:90) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalTable.getFullSchema(ExternalTable.java:171) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.ExternalTable.getBaseSchema(ExternalTable.java:177) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.trees.plans.logical.LogicalCatalogRelation.computeOutput(LogicalCatalogRelation.java:103) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:186) ~[guava-33.2.1-jre.jar:?]
        at org.apache.doris.nereids.properties.LogicalProperties.getOutput(LogicalProperties.java:104) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.rules.analysis.BindRelation.lambda$build$0(BindRelation.java:123) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.pattern.PatternMatcher$1.transform(PatternMatcher.java:92) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteJob.rewrite(PlanTreeRewriteJob.java:57) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteBottomUpJob.rewriteThis(PlanTreeRewriteBottomUpJob.java:91) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.PlanTreeRewriteBottomUpJob.execute(PlanTreeRewriteBottomUpJob.java:75) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.scheduler.SimpleJobScheduler.executeJobPool(SimpleJobScheduler.java:44) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.rewrite.RootPlanTreeRewriteJob.execute(RootPlanTreeRewriteJob.java:66) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.executor.AbstractBatchJobExecutor.execute(AbstractBatchJobExecutor.java:139) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.jobs.executor.Analyzer.analyze(Analyzer.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.lambda$analyze$4(NereidsPlanner.java:365) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.keepOrShowPlanProcess(NereidsPlanner.java:898) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.analyze(NereidsPlanner.java:365) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.planWithoutLock(NereidsPlanner.java:250) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.planWithLock(NereidsPlanner.java:224) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.nereids.NereidsPlanner.plan(NereidsPlanner.java:145) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.executeByNereids(StmtExecutor.java:847) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:625) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.queryRetry(StmtExecutor.java:587) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:572) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.ConnectProcessor.executeQuery(ConnectProcessor.java:375) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:256) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.handleQuery(MysqlConnectProcessor.java:229) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.dispatch(MysqlConnectProcessor.java:258) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.qe.MysqlConnectProcessor.processOnce(MysqlConnectProcessor.java:438) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: java.lang.RuntimeException: NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.loadTable(IcebergMetadataCache.java:117) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$new$1(IcebergMetadataCache.java:68) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.lambda$statsAware$0(LocalCache.java:139) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.getIcebergTable(IcebergMetadataCache.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTableInternal(IcebergUtils.java:570) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTable(IcebergUtils.java:549) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.lambda$getSchema$1(IcebergUtils.java:579) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:578) ~[doris-fe.jar:1.2-SNAPSHOT]
        ... 48 more
Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.iceberg.catalog.Catalog.loadTable(org.apache.iceberg.catalog.TableIdentifier)" because "this.catalog" is null
        at org.apache.doris.datasource.iceberg.IcebergMetadataOps.loadTable(IcebergMetadataOps.java:278) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$loadTable$2(IcebergMetadataCache.java:115) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.loadTable(IcebergMetadataCache.java:114) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.lambda$new$1(IcebergMetadataCache.java:68) ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.lambda$newMappingFunction$2(LocalLoadingCache.java:145) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.lambda$statsAware$0(LocalCache.java:139) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.lambda$doComputeIfAbsent$14(BoundedLocalCache.java:2406) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) ~[?:?]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.doComputeIfAbsent(BoundedLocalCache.java:2404) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.BoundedLocalCache.computeIfAbsent(BoundedLocalCache.java:2387) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:108) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:56) ~[hive-catalog-shade-2.1.4.jar:2.1.4]
        at org.apache.doris.datasource.iceberg.IcebergMetadataCache.getIcebergTable(IcebergMetadataCache.java:83) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTableInternal(IcebergUtils.java:570) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getIcebergTable(IcebergUtils.java:549) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.lambda$getSchema$1(IcebergUtils.java:579) ~[doris-fe.jar:1.2-SNAPSHOT]
        at java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
        at javax.security.auth.Subject.doAs(Subject.java:439) ~[?:?]
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1899) ~[hadoop-common-3.3.6.jar:?]
        at org.apache.doris.common.security.authentication.HadoopAuthenticator.doAs(HadoopAuthenticator.java:32) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.security.authentication.PreExecutionAuthenticator.execute(PreExecutionAuthenticator.java:71) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.datasource.iceberg.IcebergUtils.getSchema(IcebergUtils.java:578) ~[doris-fe.jar:1.2-SNAPSHOT]
        ... 48 more
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants