Browse Source

server of one is alive!

Blake Mizerany 11 years ago
parent
commit
8f3544ece8
3 changed files with 20 additions and 7 deletions
  1. 1 0
      .gitignore
  2. 10 2
      etcdserver2/etcdhttp/http.go
  3. 9 5
      main.go

+ 1 - 0
.gitignore

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

+ 10 - 2
etcdserver2/etcdhttp/http.go

@@ -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

+ 9 - 5
main.go

@@ -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{