浏览代码

host_source: use scanner

Chris Bannister 9 年之前
父节点
当前提交
4b9990c311
共有 1 个文件被更改,包括 8 次插入13 次删除
  1. 8 13
      host_source.go

+ 8 - 13
host_source.go

@@ -339,30 +339,25 @@ func (r *ringDescriber) GetHosts() (hosts []*HostInfo, partitioner string, err e
 
 	hosts = []*HostInfo{localHost}
 
-	iter := r.session.control.query("SELECT rpc_address, data_center, rack, host_id, tokens, release_version FROM system.peers")
-	if iter == nil {
+	rows := r.session.control.query("SELECT rpc_address, data_center, rack, host_id, tokens, release_version FROM system.peers").Scanner()
+	if rows == nil {
 		return r.prevHosts, r.prevPartitioner, nil
 	}
 
-	var (
-		host         = &HostInfo{port: r.session.cfg.Port}
-		versionBytes []byte
-	)
-	for iter.Scan(&host.peer, &host.dataCenter, &host.rack, &host.hostId, &host.tokens, &versionBytes) {
-		if err = host.version.unmarshal(versionBytes); err != nil {
-			log.Printf("invalid peer entry: peer=%s host_id=%s tokens=%v version=%s\n", host.peer, host.hostId, host.tokens, versionBytes)
+	for rows.Next() {
+		host := &HostInfo{port: r.session.cfg.Port}
+		err := rows.Scan(&host.peer, &host.dataCenter, &host.rack, &host.hostId, &host.tokens, &host.version)
+		if err != nil {
+			log.Println(err)
 			continue
 		}
 
 		if r.matchFilter(host) {
 			hosts = append(hosts, host)
 		}
-		host = &HostInfo{
-			port: r.session.cfg.Port,
-		}
 	}
 
-	if err = iter.Close(); err != nil {
+	if err = rows.Err(); err != nil {
 		return nil, "", err
 	}