@@ -18,6 +18,7 @@ import (
18
18
"encoding/json"
19
19
"errors"
20
20
"fmt"
21
+ stats "go.etcd.io/etcd/server/v3/etcdserver/api/v2stats"
21
22
"io"
22
23
"net/http"
23
24
"os"
@@ -104,24 +105,54 @@ func bootstrap(cfg config.ServerConfig) (b *bootstrappedServer, err error) {
104
105
backend .Close ()
105
106
return nil , err
106
107
}
108
+ sstats := stats .NewServerStats (cfg .Name , cluster .cl .String ())
109
+ lstats := stats .NewLeaderStats (cfg .Logger , cluster .nodeID .String ())
110
+
111
+ raftTransport := & rafthttp.Transport {
112
+ Logger : cfg .Logger ,
113
+ TLSInfo : cfg .PeerTLSInfo ,
114
+ DialTimeout : cfg .PeerDialTimeout (),
115
+ ID : cluster .nodeID ,
116
+ URLs : cfg .PeerURLs ,
117
+ ClusterID : cluster .cl .ID (),
118
+ ServerStats : sstats ,
119
+ LeaderStats : lstats ,
120
+ ErrorC : make (chan error , 1 ), // placeholder, can override later
121
+ }
122
+ if err = raftTransport .Start (); err != nil {
123
+ return nil , err
124
+ }
125
+ for _ , m := range cluster .remotes {
126
+ if m .ID != cluster .nodeID {
127
+ raftTransport .AddRemote (m .ID , m .PeerURLs )
128
+ }
129
+ }
130
+ for _ , m := range cluster .cl .Members () {
131
+ if m .ID != cluster .nodeID {
132
+ raftTransport .AddPeer (m .ID , m .PeerURLs )
133
+ }
134
+ }
107
135
108
136
cfg .Logger .Info ("bootstrapping raft" )
109
137
raft := bootstrapRaft (cfg , cluster , s .wal )
138
+
110
139
return & bootstrappedServer {
111
- prt : prt ,
112
- ss : ss ,
113
- storage : s ,
114
- cluster : cluster ,
115
- raft : raft ,
140
+ prt : prt ,
141
+ ss : ss ,
142
+ storage : s ,
143
+ cluster : cluster ,
144
+ raft : raft ,
145
+ raftTransport : raftTransport ,
116
146
}, nil
117
147
}
118
148
119
149
type bootstrappedServer struct {
120
- storage * bootstrappedStorage
121
- cluster * bootstrappedCluster
122
- raft * bootstrappedRaft
123
- prt http.RoundTripper
124
- ss * snap.Snapshotter
150
+ storage * bootstrappedStorage
151
+ cluster * bootstrappedCluster
152
+ raft * bootstrappedRaft
153
+ prt http.RoundTripper
154
+ ss * snap.Snapshotter
155
+ raftTransport * rafthttp.Transport
125
156
}
126
157
127
158
func (s * bootstrappedServer ) Close () {
0 commit comments