[fix](meta) fix catalog replay error (#35532)
```
Caused by: java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936) ~[?:1.8.0_301]
at org.apache.doris.catalog.ResourceMgr.getResource(ResourceMgr.java:166) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.datasource.CatalogProperty.catalogResource(CatalogProperty.java:67) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.datasource.CatalogProperty.getOrDefault(CatalogProperty.java:77) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.datasource.ExternalCatalog.setDefaultPropsIfMissing(ExternalCatalog.java:173) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.datasource.hive.HMSExternalCatalog.setDefaultPropsIfMissing(HMSExternalCatalog.java:238) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.datasource.ExternalCatalog.gsonPostProcess(ExternalCatalog.java:687) ~[doris-fe.jar:1.2-SNAPSHOT]
at org.apache.doris.persist.gson.GsonUtils$PostProcessTypeAdapterFactory$1.read(GsonUtils.java:640) ~[doris-fe.jar:1.2-SNAPSHOT]
at com.google.gson.TypeAdapter.fromJsonTree(TypeAdapter.java:299) ~[gson-2.10.1.jar:?]
at org.apache.doris.persist.gson.RuntimeTypeAdapterFactory$1.read(RuntimeTypeAdapterFactory.java:289) ~[doris-fe.jar:1.2-SNAPSHOT]
```
Introduced from #33610.
When read meta image, the `resource` maybe null, we should ignore it.
This commit is contained in:
@ -163,6 +163,11 @@ public class ResourceMgr implements Writable {
|
||||
}
|
||||
|
||||
public Resource getResource(String name) {
|
||||
// nameToResource == null iff this is in replay thread
|
||||
// just return null to ignore this.
|
||||
if (nameToResource == null) {
|
||||
return null;
|
||||
}
|
||||
return nameToResource.get(name);
|
||||
}
|
||||
|
||||
|
||||
@ -61,7 +61,7 @@ public class CatalogProperty implements Writable {
|
||||
}
|
||||
|
||||
private Resource catalogResource() {
|
||||
if (catalogResource == null) {
|
||||
if (!Strings.isNullOrEmpty(resource) && catalogResource == null) {
|
||||
synchronized (this) {
|
||||
if (catalogResource == null) {
|
||||
catalogResource = Env.getCurrentEnv().getResourceMgr().getResource(resource);
|
||||
|
||||
Reference in New Issue
Block a user