當前位置: 首頁>>代碼示例>>Golang>>正文


Golang SrvTopoServer.GetSrvKeyspaceNames方法代碼示例

本文整理匯總了Golang中github.com/youtube/vitess/go/vt/topo.SrvTopoServer.GetSrvKeyspaceNames方法的典型用法代碼示例。如果您正苦於以下問題:Golang SrvTopoServer.GetSrvKeyspaceNames方法的具體用法?Golang SrvTopoServer.GetSrvKeyspaceNames怎麽用?Golang SrvTopoServer.GetSrvKeyspaceNames使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在github.com/youtube/vitess/go/vt/topo.SrvTopoServer的用法示例。


在下文中一共展示了SrvTopoServer.GetSrvKeyspaceNames方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: findAllKeyspaceShards

// findAllKeyspaceShards goes through all serving shards in the topology
func findAllKeyspaceShards(ctx context.Context, ts topo.SrvTopoServer, cell string) (map[keyspaceShard]bool, error) {
	ksNames, err := ts.GetSrvKeyspaceNames(ctx, cell)
	if err != nil {
		return nil, err
	}

	keyspaceShards := make(map[keyspaceShard]bool)
	var wg sync.WaitGroup
	var mu sync.Mutex
	var errRecorder concurrency.AllErrorRecorder
	for _, ksName := range ksNames {
		wg.Add(1)
		go func(keyspace string) {
			defer wg.Done()

			// get SrvKeyspace for cell/keyspace
			ks, err := ts.GetSrvKeyspace(ctx, cell, keyspace)
			if err != nil {
				errRecorder.RecordError(err)
				return
			}

			// get all shard names that are used for serving
			mu.Lock()
			for _, ksPartition := range ks.Partitions {
				for _, shard := range ksPartition.ShardReferences {
					keyspaceShards[keyspaceShard{
						keyspace: keyspace,
						shard:    shard.Name,
					}] = true
				}
			}
			mu.Unlock()
		}(ksName)
	}
	wg.Wait()
	if errRecorder.HasErrors() {
		return nil, errRecorder.Error()
	}

	return keyspaceShards, nil
}
開發者ID:littleyang,項目名稱:vitess,代碼行數:43,代碼來源:healthcheck_wait.go


注:本文中的github.com/youtube/vitess/go/vt/topo.SrvTopoServer.GetSrvKeyspaceNames方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。