diff --git a/pkg/manager/member/tikv_member_manager.go b/pkg/manager/member/tikv_member_manager.go index 80953161ba..6b02408bd2 100644 --- a/pkg/manager/member/tikv_member_manager.go +++ b/pkg/manager/member/tikv_member_manager.go @@ -41,6 +41,9 @@ import ( const ( // tikvClusterCertPath is where the cert for inter-cluster communication stored (if any) tikvClusterCertPath = "/var/lib/tikv-tls" + + //find a better way to manage store only managed by tikv in Operator + tikvStoreLimitPattern = `%s-tikv-\d+\.%s-tikv-peer\.%s\.svc\:\d+` ) // tikvMemberManager implements manager.Manager. @@ -574,7 +577,7 @@ func (tkmm *tikvMemberManager) syncTidbClusterStatus(tc *v1alpha1.TidbCluster, s return err } - pattern, err := regexp.Compile(fmt.Sprintf(`%s-tikv-\d+\.%s-tikv-peer\.%s\.svc\:\d+`, tc.Name, tc.Name, tc.Namespace)) + pattern, err := regexp.Compile(fmt.Sprintf(tikvStoreLimitPattern, tc.Name, tc.Name, tc.Namespace)) if err != nil { return err } @@ -665,7 +668,16 @@ func (tkmm *tikvMemberManager) setStoreLabelsForTiKV(tc *v1alpha1.TidbCluster) ( return setCount, nil } + pattern, err := regexp.Compile(fmt.Sprintf(tikvStoreLimitPattern, tc.Name, tc.Name, tc.Namespace)) + if err != nil { + return -1, err + } for _, store := range storesInfo.Stores { + // In theory, the external tikv can join the cluster, and the operator would only manage the internal tikv. + // So we check the store owner to make sure it. + if store.Store != nil && !pattern.Match([]byte(store.Store.Address)) { + continue + } status := tkmm.getTiKVStore(store) if status == nil { continue