From 8745cf25037e35a4407213eb5485cbf2853a3cc2 Mon Sep 17 00:00:00 2001 From: maochongxin Date: Mon, 20 Jul 2026 10:37:41 +0800 Subject: [PATCH] fix: guard null partition location in weak read prep --- .../model/partition/ObPartitionEntry.java | 8 ++++- .../model/partition/ObPartitionEntryTest.java | 31 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/alipay/oceanbase/rpc/location/model/partition/ObPartitionEntryTest.java 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); + } +}