goraft / raftd Goto Github PK
View Code? Open in Web Editor NEWA reference implementation for using the go-raft library for distributed consensus.
License: MIT License
A reference implementation for using the go-raft library for distributed consensus.
License: MIT License
Since goraft/raft@345a74b raftd doesn't compile.
This is the panic, caused by resp.Body.Close() after the HTTP connection fails (resp.Body is nil).
2014/01/06 15:24:36 Initializing Raft Server: node.2
2014/01/06 15:24:36 Attempting to join leader: localhost:9001
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x40 pc=0x446d12]
goroutine 1 [running]:
runtime.panic(0x69e6c0, 0xa05e68)
/usr/local/go/src/pkg/runtime/panic.c:266 +0xb6
github.com/goraft/raftd/server.(_Server).Join(0xc210062280, 0x7fff1c62aa32, 0xe, 0x6289e0, 0xc210038aa0)
/usr/local/gopath/src/github.com/goraft/raftd/server/server.go:138 +0x2b2
github.com/goraft/raftd/server.(_Server).ListenAndServe(0xc210062280, 0x7fff1c62aa32, 0xe, 0x9, 0x238d)
/usr/local/gopath/src/github.com/goraft/raftd/server/server.go:84 +0x521
main.main()
/usr/local/gopath/src/github.com/goraft/raftd/main.go:60 +0x471
goroutine 3 [select]:
github.com/goraft/raft.(_server).followerLoop(0xc21006c000)
/usr/local/gopath/src/github.com/goraft/raft/server.go:590 +0x934
github.com/goraft/raft.(_server).loop(0xc21006c000)
/usr/local/gopath/src/github.com/goraft/raft/server.go:544 +0x2cf
created by github.com/goraft/raft.(*server).Start
/usr/local/gopath/src/github.com/goraft/raft/server.go:458 +0x7af
goroutine 6 [syscall]:
runtime.goexit()
/usr/local/go/src/pkg/runtime/proc.c:1394
You should move the close after checking the error:
--- a/server/server.go
+++ b/server/server.go
@@ -135,11 +135,11 @@ func (s *Server) Join(leader string) error {
var b bytes.Buffer
json.NewEncoder(&b).Encode(command)
resp, err := http.Post(fmt.Sprintf("http://%s/join", leader), "application/json", &b)
resp.Body.Close()
if err != nil {
return err
}
resp.Body.Close()
return nil
}
when i add a new url request in line 114 of "raftd/sever/server.go", like s.router.HandleFunc("/nodeState", s.readStateHandle).Method("GET") it went wrong, shows "404 page not found", it is strange.
I'm guessing this hasn't been updated in a bit and it hasn't kept up with recent go-raft changes.
Hi,
I have done setting GOPATH and installed git also. But after giving command
go get github.com/goraft/raftd
It gives Error and installtion fails. Here is error.
package code.google.com/p/gogoprotobuf/proto: unable to detect version control system for code.google.com/ path package code.google.com/p/goprotobuf/proto: unable to detect version control system for code.google.com/ path
I tried to build raftd but failed with following errors.
raftd ✘╹◡╹✘ go get github.com/goraft/raftd
# github.com/goraft/raftd/server
src/github.com/goraft/raftd/server/server.go:68: not enough arguments in call to raft.NewHTTPTransporter
raft.NewHTTPTransporter
takes 2nd argument timeout time.Duration
, but raftd doesn't pass it. I tried to pass the 2nd argument, building was successful.
$ go get github.com/goraft/raftd
go/src/github.com/goraft/raft/protobuf/append_entries_request.pb.go:113: undefined: "code.google.com/p/goprotobuf/proto".ErrWrongType
go/src/github.com/goraft/raft/protobuf/append_entries_request.pb.go:130: undefined: "code.google.com/p/goprotobuf/proto".ErrWrongType
go/src/github.com/goraft/raft/protobuf/append_entries_request.pb.go:147: undefined: "code.google.com/p/goprotobuf/proto".ErrWrongType
go/src/github.com/goraft/raft/protobuf/append_entries_request.pb.go:164: undefined: "code.google.com/p/goprotobuf/proto".ErrWrongType
go/src/github.com/goraft/raft/protobuf/append_entries_request.pb.go:181: undefined: "code.google.com/p/goprotobuf/proto".ErrWrongType
go/src/github.com/goraft/raft/protobuf/append_entries_request.pb.go:204: undefined: "code.google.com/p/goprotobuf/proto".ErrWrongType
go/src/github.com/goraft/raft/protobuf/append_entries_responses.pb.go:97: undefined: "code.google.com/p/gogoprotobuf/proto".ErrWrongType
go/src/github.com/goraft/raft/protobuf/append_entries_responses.pb.go:114: undefined: "code.google.com/p/gogoprotobuf/proto".ErrWrongType
go/src/github.com/goraft/raft/protobuf/append_entries_responses.pb.go:131: undefined: "code.google.com/p/gogoprotobuf/proto".ErrWrongType
go/src/github.com/goraft/raft/protobuf/append_entries_responses.pb.go:148: undefined: "code.google.com/p/gogoprotobuf/proto".ErrWrongType
go/src/github.com/goraft/raft/protobuf/append_entries_responses.pb.go:148: too many errors
When starting a simple 3 node cluster, after about 5-10 minutes, the "leader" dies throwing this error:
Accept error: accept tcp [::]:4001: too many open files
Using debug output, the only thing it shows is a sudden stop when doing:
[raft]01:28:53.821293 peer.heartbeat.flush
I'm not sure where to look. I'm experiencing the same issue in a separate Raft based project and wanted to try the reference implementation which appears to be doing the same thing.
Any ideas?
Line 138 in 03d5cd5
Should resp.Body.Close() be done even when there's an error?
I ran this with no leader running:
$ raftd -join="localhost:4000" /tmp/d2
2014/01/28 23:32:48 Initializing Raft Server: /tmp/d2
2014/01/28 23:32:48 Attempting to join leader: localhost:4000
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x40 pc=0x45ce12]
goroutine 1 [running]:
runtime.panic(0x6c44a0, 0xa5ee68)
/usr/lib/go/src/pkg/runtime/panic.c:266 +0xb6
github.com/goraft/raftd/server.(_Server).Join(0xc210058280, 0x7fff7165f776, 0xe, 0x64bc60, 0xc210036ba0)
/home/ongardie/code/gopath/src/github.com/goraft/raftd/server/server.go:138 +0x2b2
github.com/goraft/raftd/server.(_Server).ListenAndServe(0xc210058280, 0x7fff7165f776, 0xe, 0x9, 0xfa1)
/home/ongardie/code/gopath/src/github.com/goraft/raftd/server/server.go:84 +0x521
main.main()
/home/ongardie/code/gopath/src/github.com/goraft/raftd/main.go:66 +0x47e
goroutine 3 [select]:
github.com/goraft/raft.(_server).followerLoop(0xc2100525a0)
/home/ongardie/code/gopath/src/github.com/goraft/raft/server.go:605 +0x934
github.com/goraft/raft.(_server).loop(0xc2100525a0)
/home/ongardie/code/gopath/src/github.com/goraft/raft/server.go:548 +0x2cf
created by github.com/goraft/raft.(*server).Start
/home/ongardie/code/gopath/src/github.com/goraft/raft/server.go:461 +0x7af
goroutine 6 [syscall]:
runtime.goexit()
/usr/lib/go/src/pkg/runtime/proc.c:1394
This might be me doing something wrong, but I was attempting to follow the instructions in the README and I get each system spitting out the "too many open files" error. It looks like each heartbeat is opening a new TCP connection and that is maxing it out. Any idea why this would be happening?
I want to use Sourcegraph code search and code review with raftd. A project maintainer needs to enable it to set up a webhook so the code is up-to-date there.
Could you please enable raftd on @sourcegraph by going to https://sourcegraph.com/github.com/goraft/raftd and clicking on Settings? (It should only take 15 seconds.)
Thank you!
I want to use raftd to run a state machine,how can I do this
Hi,
I am not able to start the multiple instances i.e nodes which will follow the leader.
Please help or you can post video of how you are instantiating multiple servers so that we can also do the same.
Error :
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0xb0 pc=0x4a7962]
goroutine 1 [running]:
github.com/goraft/raftd/server.(*Server).Join(0xc820082080, 0x86d2e0, 0x15, 0x0, 0x0)
/~/newraft/src/github.com/goraft/raftd/server/server.go:132 +0x62
main.main()
~/newraft/src/github.com/goraft/node/raftd/main.go:66 +0x5e8
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
exit status 2
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.