Fix http response body not closed correctly, return immediately on error (#210)

* Fix controller timer handler not return when error occurred

* Fix controller not close http response correctly

This PR aims to fix controller not close response correctly. Also, I’ve check all over the project there is no more resource leak issues exist after this patch.

* Fix controller not return immediately when error occurred

* Sort import
This commit is contained in:
Ta-Ching Chen
2017-06-17 13:10:54 -07:00
committed by Soam Vasani
parent a8e7ec534b
commit d9b98830cf
12 changed files with 28 additions and 13 deletions
+2 -2
View File
@@ -17,10 +17,10 @@ limitations under the License.
package cache package cache
import ( import (
"time"
"errors" "errors"
"fmt" "fmt"
"time"
"github.com/fission/fission" "github.com/fission/fission"
) )
+5 -3
View File
@@ -16,9 +16,11 @@ limitations under the License.
package cache package cache
import "testing" import (
import "log" "log"
import "time" "testing"
"time"
)
func checkErr(err error) { func checkErr(err error) {
if err != nil { if err != nil {
+5
View File
@@ -213,6 +213,7 @@ func (c *Client) FunctionList() ([]fission.Function, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer resp.Body.Close()
body, err := c.handleResponse(resp) body, err := c.handleResponse(resp)
if err != nil { if err != nil {
@@ -320,6 +321,7 @@ func (c *Client) HTTPTriggerList() ([]fission.HTTPTrigger, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer resp.Body.Close()
body, err := c.handleResponse(resp) body, err := c.handleResponse(resp)
if err != nil { if err != nil {
@@ -427,6 +429,7 @@ func (c *Client) EnvironmentList() ([]fission.Environment, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer resp.Body.Close()
body, err := c.handleResponse(resp) body, err := c.handleResponse(resp)
if err != nil { if err != nil {
@@ -514,6 +517,7 @@ func (c *Client) WatchList() ([]fission.Watch, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer resp.Body.Close()
body, err := c.handleResponse(resp) body, err := c.handleResponse(resp)
if err != nil { if err != nil {
@@ -621,6 +625,7 @@ func (c *Client) TimeTriggerList() ([]fission.TimeTrigger, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer resp.Body.Close()
body, err := c.handleResponse(resp) body, err := c.handleResponse(resp)
if err != nil { if err != nil {
+2 -1
View File
@@ -47,8 +47,8 @@ func (api *API) EnvironmentApiCreate(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body) body, err := ioutil.ReadAll(r.Body)
if err != nil { if err != nil {
api.respondWithError(w, err) api.respondWithError(w, err)
return
} }
defer r.Body.Close()
var env fission.Environment var env fission.Environment
err = json.Unmarshal(body, &env) err = json.Unmarshal(body, &env)
@@ -104,6 +104,7 @@ func (api *API) EnvironmentApiUpdate(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body) body, err := ioutil.ReadAll(r.Body)
if err != nil { if err != nil {
api.respondWithError(w, err) api.respondWithError(w, err)
return
} }
var env fission.Environment var env fission.Environment
+2
View File
@@ -50,6 +50,7 @@ func (api *API) FunctionApiCreate(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body) body, err := ioutil.ReadAll(r.Body)
if err != nil { if err != nil {
api.respondWithError(w, err) api.respondWithError(w, err)
return
} }
var f fission.Function var f fission.Function
@@ -118,6 +119,7 @@ func (api *API) FunctionApiUpdate(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body) body, err := ioutil.ReadAll(r.Body)
if err != nil { if err != nil {
api.respondWithError(w, err) api.respondWithError(w, err)
return
} }
var f fission.Function var f fission.Function
+2
View File
@@ -47,6 +47,7 @@ func (api *API) HTTPTriggerApiCreate(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body) body, err := ioutil.ReadAll(r.Body)
if err != nil { if err != nil {
api.respondWithError(w, err) api.respondWithError(w, err)
return
} }
var t fission.HTTPTrigger var t fission.HTTPTrigger
@@ -116,6 +117,7 @@ func (api *API) HTTPTriggerApiUpdate(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body) body, err := ioutil.ReadAll(r.Body)
if err != nil { if err != nil {
api.respondWithError(w, err) api.respondWithError(w, err)
return
} }
var t fission.HTTPTrigger var t fission.HTTPTrigger
+2
View File
@@ -48,6 +48,7 @@ func (api *API) TimeTriggerApiCreate(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body) body, err := ioutil.ReadAll(r.Body)
if err != nil { if err != nil {
api.respondWithError(w, err) api.respondWithError(w, err)
return
} }
var t fission.TimeTrigger var t fission.TimeTrigger
@@ -124,6 +125,7 @@ func (api *API) TimeTriggerApiUpdate(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body) body, err := ioutil.ReadAll(r.Body)
if err != nil { if err != nil {
api.respondWithError(w, err) api.respondWithError(w, err)
return
} }
var t fission.TimeTrigger var t fission.TimeTrigger
+1
View File
@@ -47,6 +47,7 @@ func (api *API) WatchApiCreate(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body) body, err := ioutil.ReadAll(r.Body)
if err != nil { if err != nil {
api.respondWithError(w, err) api.respondWithError(w, err)
return
} }
var watch fission.Watch var watch fission.Watch
+1 -1
View File
@@ -18,12 +18,12 @@ package main
import ( import (
"fmt" "fmt"
"os"
"text/tabwriter" "text/tabwriter"
"github.com/urfave/cli" "github.com/urfave/cli"
"github.com/fission/fission" "github.com/fission/fission"
"os"
) )
func envCreate(c *cli.Context) error { func envCreate(c *cli.Context) error {
+1 -1
View File
@@ -23,6 +23,7 @@ import (
"fmt" "fmt"
"io" "io"
"log" "log"
"reflect"
"strings" "strings"
"sync/atomic" "sync/atomic"
"time" "time"
@@ -36,7 +37,6 @@ import (
"github.com/fission/fission" "github.com/fission/fission"
"github.com/fission/fission/publisher" "github.com/fission/fission/publisher"
"reflect"
) )
type requestType int type requestType int
+4 -4
View File
@@ -17,14 +17,14 @@ limitations under the License.
package client package client
import ( import (
"net/http"
"strings"
"bytes" "bytes"
"encoding/json" "encoding/json"
"github.com/fission/fission"
"io/ioutil" "io/ioutil"
"net/http"
"net/url" "net/url"
"strings"
"github.com/fission/fission"
) )
type Client struct { type Client struct {
+1 -1
View File
@@ -3,9 +3,9 @@ package poolmgr
import ( import (
"log" "log"
"testing" "testing"
"time"
"github.com/fission/fission" "github.com/fission/fission"
"time"
) )
func TestFunctionServiceCache(t *testing.T) { func TestFunctionServiceCache(t *testing.T) {