properly close mongo connections

This commit is contained in:
Shawn Smith
2015-03-20 18:31:14 +09:00
parent d1c26b501b
commit 6aa881aabb
3 changed files with 13 additions and 10 deletions

View File

@@ -5,7 +5,7 @@ import (
"log"
"net/http"
"github.com/gojp/goreportcard/db"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
@@ -33,12 +33,13 @@ func CheckHandler(w http.ResponseWriter, r *http.Request) {
w.Write(b)
// write to mongo
db := db.Mongo{URL: mongoURL, Database: mongoDatabase, CollectionName: mongoCollection}
coll, err := db.Collection()
session, err := mgo.Dial(mongoURL)
if err != nil {
log.Println("Failed to get mongo collection: ", err)
return
}
defer session.Close()
coll := session.DB(mongoDatabase).C(mongoCollection)
log.Printf("Upserting repo %s...", repo)
_, err = coll.Upsert(bson.M{"repo": repo}, resp)
if err != nil {

View File

@@ -9,7 +9,7 @@ import (
"time"
"github.com/gojp/goreportcard/check"
"github.com/gojp/goreportcard/db"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
@@ -21,11 +21,12 @@ var (
func getFromCache(repo string) (checksResp, error) {
// try and fetch from mongo
db := db.Mongo{URL: mongoURL, Database: mongoDatabase, CollectionName: mongoCollection}
coll, err := db.Collection()
session, err := mgo.Dial(mongoURL)
if err != nil {
return checksResp{}, fmt.Errorf("Failed to get mongo collection during GET: %v", err)
}
defer session.Close()
coll := session.DB(mongoDatabase).C(mongoCollection)
resp := checksResp{}
err = coll.Find(bson.M{"repo": repo}).One(&resp)
if err != nil {
@@ -77,7 +78,7 @@ func clone(url string) error {
dir := dirName(url)
_, err := os.Stat(dir)
if os.IsNotExist(err) {
cmd := exec.Command("timeout", "120", "git", "clone", "--depth", "1", "--single-branch", url, dir)
cmd := exec.Command("gtimeout", "120", "git", "clone", "--depth", "1", "--single-branch", url, dir)
if err := cmd.Run(); err != nil {
return fmt.Errorf("could not run git clone: %v", err)
}

View File

@@ -5,7 +5,7 @@ import (
"net/http"
"text/template"
"github.com/gojp/goreportcard/db"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
@@ -21,13 +21,14 @@ func HighScoresHandler(w http.ResponseWriter, r *http.Request) {
Average float64
}
db := db.Mongo{URL: mongoURL, Database: mongoDatabase, CollectionName: mongoCollection}
coll, err := db.Collection()
session, err := mgo.Dial(mongoURL)
if err != nil {
log.Println("ERROR: could not get collection:", err)
http.Error(w, err.Error(), 500)
return
}
defer session.Close()
coll := session.DB(mongoDatabase).C(mongoCollection)
err = coll.Find(bson.M{"files": bson.M{"$gt": 100}}).Sort("-average").All(&highScores)
if err != nil {