|
|
@@ -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
|
|
|
}
|
|
|
|