mirror of
https://github.com/gojp/goreportcard.git
synced 2026-01-28 22:39:05 +08:00
properly close mongo connections
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user