diff --git a/src/main/java/com/alipay/oceanbase/rpc/location/model/partition/ObPartitionEntry.java b/src/main/java/com/alipay/oceanbase/rpc/location/model/partition/ObPartitionEntry.java index b7709b0c..06b734a2 100644 --- a/src/main/java/com/alipay/oceanbase/rpc/location/model/partition/ObPartitionEntry.java +++ b/src/main/java/com/alipay/oceanbase/rpc/location/model/partition/ObPartitionEntry.java @@ -80,7 +80,13 @@ public void setTabletLsIdMap(Map tabletLsIdMap) { */ public void prepareForWeakRead(ObServerLdcLocation ldcLocation) { for (Map.Entry entry : partitionInfos.entrySet()) { - entry.getValue().getPartitionLocation().prepareForWeakRead(ldcLocation); + ObPartitionLocationInfo info = entry.getValue(); + if (info != null) { + ObPartitionLocation location = info.getPartitionLocation(); + if (location != null) { + location.prepareForWeakRead(ldcLocation); + } + } } } diff --git a/src/test/java/com/alipay/oceanbase/rpc/location/model/partition/ObPartitionEntryTest.java b/src/test/java/com/alipay/oceanbase/rpc/location/model/partition/ObPartitionEntryTest.java new file mode 100644 index 00000000..9a6077ce --- /dev/null +++ b/src/test/java/com/alipay/oceanbase/rpc/location/model/partition/ObPartitionEntryTest.java @@ -0,0 +1,31 @@ +/*- + * #%L + * com.oceanbase:obkv-table-client + * %% + * Copyright (C) 2021 - 2024 OceanBase + * %% + * OBKV Table Client Framework is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + * #L% + */ + +package com.alipay.oceanbase.rpc.location.model.partition; + +import org.junit.Test; + +public class ObPartitionEntryTest { + + @Test + public void testPrepareForWeakReadSkipsUninitializedPartitionInfo() { + ObPartitionEntry entry = new ObPartitionEntry(); + + entry.getPartitionInfo(1L); + entry.prepareForWeakRead(null); + } +}