|
|
@ -8,7 +8,6 @@ import (
|
|
|
|
"io/ioutil"
|
|
|
|
"io/ioutil"
|
|
|
|
"math/rand"
|
|
|
|
"math/rand"
|
|
|
|
"net/http"
|
|
|
|
"net/http"
|
|
|
|
"path"
|
|
|
|
|
|
|
|
"path/filepath"
|
|
|
|
"path/filepath"
|
|
|
|
"strings"
|
|
|
|
"strings"
|
|
|
|
"sync"
|
|
|
|
"sync"
|
|
|
@ -48,7 +47,7 @@ type Server struct {
|
|
|
|
router *mux.Router
|
|
|
|
router *mux.Router
|
|
|
|
raftServer raft.Server
|
|
|
|
raftServer raft.Server
|
|
|
|
httpServer *http.Server
|
|
|
|
httpServer *http.Server
|
|
|
|
db *db.DB
|
|
|
|
database *db.DB
|
|
|
|
mutex sync.RWMutex
|
|
|
|
mutex sync.RWMutex
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -76,12 +75,12 @@ func isTransaction(req *http.Request) (bool, error) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Creates a new server.
|
|
|
|
// Creates a new server.
|
|
|
|
func New(dataDir string, dbfile string, host string, port int) *Server {
|
|
|
|
func New(dataDir string, database *db.DB, host string, port int) *Server {
|
|
|
|
s := &Server{
|
|
|
|
s := &Server{
|
|
|
|
host: host,
|
|
|
|
host: host,
|
|
|
|
port: port,
|
|
|
|
port: port,
|
|
|
|
path: dataDir,
|
|
|
|
path: dataDir,
|
|
|
|
db: db.New(path.Join(dataDir, dbfile)),
|
|
|
|
database: database,
|
|
|
|
router: mux.NewRouter(),
|
|
|
|
router: mux.NewRouter(),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -111,7 +110,7 @@ func (s *Server) ListenAndServe(leader string) error {
|
|
|
|
|
|
|
|
|
|
|
|
// Initialize and start Raft server.
|
|
|
|
// Initialize and start Raft server.
|
|
|
|
transporter := raft.NewHTTPTransporter("/raft", 200*time.Millisecond)
|
|
|
|
transporter := raft.NewHTTPTransporter("/raft", 200*time.Millisecond)
|
|
|
|
s.raftServer, err = raft.NewServer(s.name, s.path, transporter, nil, s.db, "")
|
|
|
|
s.raftServer, err = raft.NewServer(s.name, s.path, transporter, nil, s.database, "")
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
log.Error("Failed to create new Raft server", err.Error())
|
|
|
|
log.Error("Failed to create new Raft server", err.Error())
|
|
|
|
return err
|
|
|
|
return err
|
|
|
@ -217,7 +216,7 @@ func (s *Server) readHandler(w http.ResponseWriter, req *http.Request) {
|
|
|
|
|
|
|
|
|
|
|
|
stmt := string(b)
|
|
|
|
stmt := string(b)
|
|
|
|
startTime := time.Now()
|
|
|
|
startTime := time.Now()
|
|
|
|
r, err := s.db.Query(stmt)
|
|
|
|
r, err := s.database.Query(stmt)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
log.Trace("Bad SQL statement", err.Error())
|
|
|
|
log.Trace("Bad SQL statement", err.Error())
|
|
|
|
failures = append(failures, FailedSqlStmt{stmt, err.Error()})
|
|
|
|
failures = append(failures, FailedSqlStmt{stmt, err.Error()})
|
|
|
|