From 3195b45364b30b2beb93b4e51846920a64f472b2 Mon Sep 17 00:00:00 2001 From: "n.wagensonner" Date: Wed, 13 Jan 2016 20:45:21 +0100 Subject: [PATCH 1/4] Write concern for new images This also adds new log messages --- server/gridfs.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server/gridfs.go b/server/gridfs.go index 0badfc8..a436c41 100644 --- a/server/gridfs.go +++ b/server/gridfs.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "io" + "log" "time" "gopkg.in/mgo.v2" @@ -168,7 +169,11 @@ func (g GridfsStorage) StoreChildImage( original Cacheable, entry *Entry, ) (Cacheable, error) { - gridfs := g.Connection.DB(database).GridFS("fs") + con := g.Connection.Copy() + defer con.Close() + con.EnsureSafe(&mgo.Safe{W: 1, J: true}) + + gridfs := con.DB(database).GridFS("fs") targetfile, err := gridfs.Create(getRandomFilename(imageFormat)) if err != nil { @@ -180,6 +185,7 @@ func (g GridfsStorage) StoreChildImage( _, err = io.Copy(targetfile, reader) if err != nil { + log.Printf("Could not write file completely, cleaning %s\n", targetfile.Name()) targetfile.Abort() return nil, err } From 68a5fc35a1c09639e292b1bf1e004229a4794e56 Mon Sep 17 00:00:00 2001 From: "n.wagensonner" Date: Wed, 13 Jan 2016 21:17:33 +0100 Subject: [PATCH 2/4] Fix cache headers --- server/server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/server.go b/server/server.go index e97e193..5c58f73 100644 --- a/server/server.go +++ b/server/server.go @@ -235,8 +235,8 @@ func imageHandler( return } - w.Write(b.Bytes()) setCacheHeaders(targetfile, w) + w.Write(b.Bytes()) log.Printf("%d image succesfully resized and returned.\n", http.StatusOK) } From c3f0e483bd406e17c6705efc601909b0de5e5b61 Mon Sep 17 00:00:00 2001 From: "n.wagensonner" Date: Wed, 13 Jan 2016 21:30:06 +0100 Subject: [PATCH 3/4] Minor cleanups --- server/server.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/server/server.go b/server/server.go index 5c58f73..b331ede 100644 --- a/server/server.go +++ b/server/server.go @@ -165,7 +165,7 @@ func imageHandler( return } - // we found a image but did not want resizing + // we found an image but did not want resizing if found { if !isModified(foundImage, &r.Header) { w.WriteHeader(http.StatusNotModified) @@ -201,7 +201,7 @@ func imageHandler( controller, err := paint.NewController(foundImage.Data(), customResizers) if err != nil { - log.Printf("%d image could not be decoded Reason %s.\n", http.StatusNotFound, err.Error()) + log.Printf("%d image could not be decoded. Reason: [%s].\n", http.StatusNotFound, err.Error()) w.WriteHeader(http.StatusNotFound) return } @@ -218,11 +218,12 @@ func imageHandler( buffer := bufio.NewWriter(&b) controller.Encode(buffer) buffer.Flush() + data := b.Bytes() targetfile, err := storage.StoreChildImage( requestConfig.Database, controller.Format(), - bytes.NewReader(b.Bytes()), + bytes.NewReader(data), controller.Image().Bounds().Dx(), controller.Image().Bounds().Dy(), foundImage, @@ -236,7 +237,7 @@ func imageHandler( } setCacheHeaders(targetfile, w) - w.Write(b.Bytes()) + w.Write(data) log.Printf("%d image succesfully resized and returned.\n", http.StatusOK) } From e06ea84fa95ea2e51efe86025973c7a97d075917 Mon Sep 17 00:00:00 2001 From: "n.wagensonner" Date: Thu, 14 Jan 2016 09:35:40 +0100 Subject: [PATCH 4/4] Improve logging --- server/gridfs.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server/gridfs.go b/server/gridfs.go index a436c41..d9b89ee 100644 --- a/server/gridfs.go +++ b/server/gridfs.go @@ -185,6 +185,7 @@ func (g GridfsStorage) StoreChildImage( _, err = io.Copy(targetfile, reader) if err != nil { + log.Printf("Error for filename %s with size %dx%d\n", original.Name(), entry.Width, entry.Height) log.Printf("Could not write file completely, cleaning %s\n", targetfile.Name()) targetfile.Abort() return nil, err