1
0
Fork 0

Instantiate database object at top-level

master
Philip O'Toole 10 years ago
parent 79e14c2be1
commit 01dab376b0

@ -12,6 +12,7 @@ import (
"github.com/otoolep/raft" "github.com/otoolep/raft"
"github.com/otoolep/rqlite/command" "github.com/otoolep/rqlite/command"
"github.com/otoolep/rqlite/db"
"github.com/otoolep/rqlite/server" "github.com/otoolep/rqlite/server"
log "code.google.com/p/log4go" log "code.google.com/p/log4go"
@ -110,9 +111,16 @@ func main() {
path := flag.Arg(0) path := flag.Arg(0)
if err := os.MkdirAll(path, 0744); err != nil { if err := os.MkdirAll(path, 0744); err != nil {
log.Error("Unable to create path: %v", err) log.Error("Unable to create path: %v", err)
os.Exit(1)
} }
s := server.New(path, dbfile, host, port) database := db.New(filepath.Join(path, dbfile))
if database == nil {
log.Error("Unable to create database connection")
os.Exit(1)
}
s := server.New(path, database, host, port)
go func() { go func() {
log.Error(s.ListenAndServe(join)) log.Error(s.ListenAndServe(join))
}() }()

@ -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,13 +75,13 @@ 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(),
} }
// Read existing name or generate a new one. // Read existing name or generate a new one.
@ -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()})

Loading…
Cancel
Save