Skip to content

Commit

Permalink
Added configuration item for DiscoverHosts
Browse files Browse the repository at this point in the history
  • Loading branch information
Ben Frye committed Jun 13, 2014
1 parent c2a38e6 commit d51aff2
Showing 1 changed file with 28 additions and 24 deletions.
52 changes: 28 additions & 24 deletions cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,20 +28,22 @@ type ClusterConfig struct {
RetryPolicy RetryPolicy // Default retry policy to use for queries (default: 0)
SocketKeepalive time.Duration // The keepalive period to use, enabled if > 0 (default: 0)
ConnPoolType NewPoolFunc // The function used to create the connection pool for the session (default: NewSimplePool)
DiscoverHosts bool // Whether or not CreateSession should attempt to fill out
}

// NewCluster generates a new config for the default cluster implementation.
func NewCluster(hosts ...string) *ClusterConfig {
cfg := &ClusterConfig{
Hosts: hosts,
CQLVersion: "3.0.0",
ProtoVersion: 2,
Timeout: 600 * time.Millisecond,
DefaultPort: 9042,
NumConns: 2,
NumStreams: 128,
Consistency: Quorum,
ConnPoolType: NewSimplePool,
Hosts: hosts,
CQLVersion: "3.0.0",
ProtoVersion: 2,
Timeout: 600 * time.Millisecond,
DefaultPort: 9042,
NumConns: 2,
NumStreams: 128,
Consistency: Quorum,
ConnPoolType: NewSimplePool,
DiscoverHosts: false,
}
return cfg
}
Expand All @@ -61,25 +63,27 @@ func (cfg *ClusterConfig) CreateSession() (*Session, error) {
s := NewSession(pool, *cfg)
s.SetConsistency(cfg.Consistency)

//Fill out cfg.Hosts
query := "SELECT peer FROM system.peers"
peers := s.Query(query).Iter()
if cfg.DiscoverHosts == true {
//Fill out cfg.Hosts
query := "SELECT peer FROM system.peers"
peers := s.Query(query).Iter()

var ip string
for peers.Scan(&ip) {
exists := false
for ii := 0; ii < len(cfg.Hosts); ii++ {
if cfg.Hosts[ii] == ip {
exists = true
var ip string
for peers.Scan(&ip) {
exists := false
for ii := 0; ii < len(cfg.Hosts); ii++ {
if cfg.Hosts[ii] == ip {
exists = true
}
}
if exists == false{
cfg.Hosts = append(cfg.Hosts, ip)
}
}
if exists == false{
cfg.Hosts = append(cfg.Hosts, ip)
}
}

if err := peers.Close(); err != nil {
return s, ErrHostQueryFailed
if err := peers.Close(); err != nil {
return s, ErrHostQueryFailed
}
}

return s, nil
Expand Down

0 comments on commit d51aff2

Please sign in to comment.