/
boot.go
62 lines (54 loc) · 1.3 KB
/
boot.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package main
import (
"log"
"net/http"
"os"
"github.com/deis/riak/chans"
"github.com/deis/riak/clustersrv"
"github.com/deis/riak/config"
"github.com/deis/riak/riak"
)
func main() {
conf, err := config.Get()
if err != nil {
log.Printf("Error getting config (%s)", err)
os.Exit(1)
}
cmdDoneCh := make(chan error)
serverDoneCh := make(chan error)
if !conf.RiakMaster {
// non-bootstrap nodes should start a riak server and join
log.Printf("Starting as a non-bootstrap node")
go func() {
httpClient := &http.Client{}
clusterServerURL := clustersrv.URLFromConfig(conf)
if err != nil {
cmdDoneCh <- err
return
}
if err := riak.Start(); err != nil {
cmdDoneCh <- err
return
}
if err := riak.Join(httpClient, clusterServerURL); err != nil {
cmdDoneCh <- err
return
}
}()
} else {
// bootstrap nodes should start (not join) a riak server and start the cluster server
log.Printf("Starting as a bootstrap node")
go func() {
if err := riak.Start(); err != nil {
cmdDoneCh <- err
return
}
}()
log.Printf("Cluster server starting on port %d", conf.ClusterServerHTTPPort)
go clustersrv.Start(conf.ClusterServerHTTPPort, serverDoneCh)
}
if err := chans.JoinErrs(serverDoneCh, cmdDoneCh); err != nil {
log.Println(err)
os.Exit(1)
}
}