func (tr *TopoReader) GetSrvKeyspace(ctx context.Context, req *topo.GetSrvKeyspaceArgs, reply *topo.SrvKeyspace) (err error) { keyspacePath := zkPathForVtKeyspace(req.Cell, req.Keyspace) zkrReply := &zk.ZkNode{} if err := tr.zkr.Get(&zk.ZkPath{Path: keyspacePath}, zkrReply); err != nil { return err } keyspace := topo.NewSrvKeyspace(int64(zkrReply.Stat.Version())) if len(zkrReply.Data) > 0 { if err := json.Unmarshal([]byte(zkrReply.Data), keyspace); err != nil { return fmt.Errorf("SrvKeyspace unmarshal failed: %v %v", zkrReply.Data, err) } } *reply = *keyspace return }
func (zkts *Server) GetSrvKeyspace(cell, keyspace string) (*topo.SrvKeyspace, error) { path := zkPathForVtKeyspace(cell, keyspace) data, stat, err := zkts.zconn.Get(path) if err != nil { if zookeeper.IsError(err, zookeeper.ZNONODE) { err = topo.ErrNoNode } return nil, err } srvKeyspace := topo.NewSrvKeyspace(int64(stat.Version())) if len(data) > 0 { if err := json.Unmarshal([]byte(data), srvKeyspace); err != nil { return nil, fmt.Errorf("SrvKeyspace unmarshal failed: %v %v", data, err) } } return srvKeyspace, nil }