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 /bin
.vagrant .vagrant
*.etcd *.etcd
etcd

View File

@ -19,6 +19,7 @@ import (
"math/rand" "math/rand"
"code.google.com/p/go.net/context" "code.google.com/p/go.net/context"
"github.com/coreos/etcd/elog" "github.com/coreos/etcd/elog"
etcderrors "github.com/coreos/etcd/error"
etcdserver "github.com/coreos/etcd/etcdserver2" etcdserver "github.com/coreos/etcd/etcdserver2"
"github.com/coreos/etcd/etcdserver2/etcdserverpb" "github.com/coreos/etcd/etcdserver2/etcdserverpb"
"github.com/coreos/etcd/raft/raftpb" "github.com/coreos/etcd/raft/raftpb"
@ -40,7 +41,7 @@ func (ps Peers) Set(s string) error {
return err return err
} }
for k, v := range v { for k, v := range v {
id, err := strconv.ParseInt(k, 16, 64) id, err := strconv.ParseInt(k, 0, 64)
if err != nil { if err != nil {
return err 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) 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) log.Println(err)
http.Error(w, "Internal Server Error", 500) http.Error(w, "Internal Server Error", 500)
return return

View File

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