server of one is alive!

This commit is contained in:
Blake Mizerany 2014-09-02 15:04:57 -07:00 committed by Yicheng Qin
parent cb7b321240
commit 8f3544ece8
3 changed files with 20 additions and 7 deletions

1
.gitignore vendored
View File

@ -4,3 +4,4 @@
/bin
.vagrant
*.etcd
etcd

View File

@ -19,6 +19,7 @@ import (
"math/rand"
"code.google.com/p/go.net/context"
"github.com/coreos/etcd/elog"
etcderrors "github.com/coreos/etcd/error"
etcdserver "github.com/coreos/etcd/etcdserver2"
"github.com/coreos/etcd/etcdserver2/etcdserverpb"
"github.com/coreos/etcd/raft/raftpb"
@ -40,7 +41,7 @@ func (ps Peers) Set(s string) error {
return err
}
for k, v := range v {
id, err := strconv.ParseInt(k, 16, 64)
id, err := strconv.ParseInt(k, 0, 64)
if err != nil {
return err
}
@ -151,7 +152,14 @@ func (h Handler) serveKeys(ctx context.Context, w http.ResponseWriter, r *http.R
}
resp, err := h.Server.Do(ctx, rr)
if err != nil {
switch e := err.(type) {
case nil:
case *etcderrors.Error:
// TODO: gross. this should be handled in encodeResponse
log.Println(err)
e.Write(w)
return
default:
log.Println(err)
http.Error(w, "Internal Server Error", 500)
return

14
main.go
View File

@ -11,10 +11,11 @@ import (
"github.com/coreos/etcd/etcdserver2/etcdhttp"
"github.com/coreos/etcd/raft"
"github.com/coreos/etcd/raft/raftpb"
"github.com/coreos/etcd/store"
)
var (
fid = flag.String("id", "default", "Id of this server")
fid = flag.String("id", "0xBEEF", "Id of this server")
timeout = flag.Duration("timeout", 10*time.Second, "Request Timeout")
laddr = flag.String("l", ":8080", "HTTP service address (e.g., ':8080')")
@ -26,16 +27,19 @@ func init() {
}
func main() {
id, err := strconv.ParseInt(*fid, 16, 64)
flag.Parse()
id, err := strconv.ParseInt(*fid, 0, 64)
if err != nil {
log.Fatal(err)
}
n := raft.Start(id, peers.Ids())
s := &etcdserver.Server{
Node: n,
Save: func(st raftpb.State, ents []raftpb.Entry) {}, // TODO: use wal
Send: etcdhttp.Sender(peers),
Store: store.New(),
Node: n,
Save: func(st raftpb.State, ents []raftpb.Entry) {}, // TODO: use wal
Send: etcdhttp.Sender(peers),
}
etcdserver.Start(s)
h := &etcdhttp.Handler{