From c5dcc6fa1dcd7d76a4c6aa69dd3edfe05d13c527 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Sun, 4 Feb 2024 16:29:00 +0800 Subject: [PATCH] fix(region): avoid informer panic (#19431) --- pkg/cloudcommon/db/tablespec.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkg/cloudcommon/db/tablespec.go b/pkg/cloudcommon/db/tablespec.go index 88cfeb3f18..a3e7e062e5 100644 --- a/pkg/cloudcommon/db/tablespec.go +++ b/pkg/cloudcommon/db/tablespec.go @@ -22,6 +22,7 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/log" "yunion.io/x/pkg/errors" + "yunion.io/x/pkg/gotypes" "yunion.io/x/sqlchemy" api "yunion.io/x/onecloud/pkg/apis/notify" @@ -120,7 +121,13 @@ func (ts *sTableSpec) newInformerModel(dt interface{}) (*informer.ModelObject, e jointObj, isJoint := obj.(IJointModel) if isJoint { mObj := JointMaster(jointObj) + if gotypes.IsNil(mObj) { + return nil, errors.Errorf("object %#v master is nil", obj) + } sObj := JointSlave(jointObj) + if gotypes.IsNil(sObj) { + return nil, errors.Errorf("object %#v slave is nil", obj) + } return informer.NewJointModel(jointObj, jointObj.KeywordPlural(), mObj.GetId(), sObj.GetId()), nil } return informer.NewModel(obj, obj.KeywordPlural(), obj.GetId()), nil