diff --git a/bcs-services/bcs-project-manager/internal/actions/namespace/factory.go b/bcs-services/bcs-project-manager/internal/actions/namespace/factory.go index 4d39b3499e..23e1f7ad12 100644 --- a/bcs-services/bcs-project-manager/internal/actions/namespace/factory.go +++ b/bcs-services/bcs-project-manager/internal/actions/namespace/factory.go @@ -58,6 +58,13 @@ func (f *NamespaceFactory) Action(ctx context.Context, clusterID, projectIDOrCod logging.Error("get project from db failed, err: %s", err.Error()) return nil, err } + // 若缓存信息校验失败,则绕过缓存重新拉取一次,防止集群状态刚切换时产生误判 + if cluster.GetProjectID() != project.ProjectID && !cluster.GetIsShared() { + if freshCluster, err := clustermanager.GetCluster(ctx, clusterID, false); err == nil && freshCluster != nil { + cluster = freshCluster + } + } + if cluster.GetProjectID() != project.ProjectID { if cluster.GetIsShared() { return shared.NewSharedNamespaceAction(f.model), nil diff --git a/bcs-services/bcs-project-manager/internal/component/clustermanager/client.go b/bcs-services/bcs-project-manager/internal/component/clustermanager/client.go index af765b42be..e6c08270a3 100644 --- a/bcs-services/bcs-project-manager/internal/component/clustermanager/client.go +++ b/bcs-services/bcs-project-manager/internal/component/clustermanager/client.go @@ -66,7 +66,7 @@ func GetCluster(ctx context.Context, clusterID string, isCache bool) (*clusterma logging.Error("get cluster from cluster manager failed, msg: %s", resp.GetMessage()) return nil, errors.New(resp.GetMessage()) } - _ = c.Add(fmt.Sprintf(CacheKeyClusterPrefix, clusterID), resp.GetData(), 5*time.Minute) + c.Set(fmt.Sprintf(CacheKeyClusterPrefix, clusterID), resp.GetData(), 5*time.Minute) return resp.GetData(), nil }