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
import (
"time"
"errors"
"fmt"
"time"
"github.com/fission/fission"
)
+5 -3
View File
@@ -16,9 +16,11 @@ limitations under the License.
package cache
import "testing"
import "log"
import "time"
import (
"log"
"testing"
"time"
)
func checkErr(err error) {
if err != nil {
+5
View File
@@ -213,6 +213,7 @@ func (c *Client) FunctionList() ([]fission.Function, error) {
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := c.handleResponse(resp)
if err != nil {
@@ -320,6 +321,7 @@ func (c *Client) HTTPTriggerList() ([]fission.HTTPTrigger, error) {
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := c.handleResponse(resp)
if err != nil {
@@ -427,6 +429,7 @@ func (c *Client) EnvironmentList() ([]fission.Environment, error) {
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := c.handleResponse(resp)
if err != nil {
@@ -514,6 +517,7 @@ func (c *Client) WatchList() ([]fission.Watch, error) {
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := c.handleResponse(resp)
if err != nil {
@@ -621,6 +625,7 @@ func (c *Client) TimeTriggerList() ([]fission.TimeTrigger, error) {
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := c.handleResponse(resp)
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)
if err != nil {
api.respondWithError(w, err)
return
}
defer r.Body.Close()
var env fission.Environment
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)
if err != nil {
api.respondWithError(w, err)
return
}
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)
if err != nil {
api.respondWithError(w, err)
return
}
var f fission.Function
@@ -118,6 +119,7 @@ func (api *API) FunctionApiUpdate(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body)
if err != nil {
api.respondWithError(w, err)
return
}
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)
if err != nil {
api.respondWithError(w, err)
return
}
var t fission.HTTPTrigger
@@ -116,6 +117,7 @@ func (api *API) HTTPTriggerApiUpdate(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body)
if err != nil {
api.respondWithError(w, err)
return
}
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)
if err != nil {
api.respondWithError(w, err)
return
}
var t fission.TimeTrigger
@@ -124,6 +125,7 @@ func (api *API) TimeTriggerApiUpdate(w http.ResponseWriter, r *http.Request) {
body, err := ioutil.ReadAll(r.Body)
if err != nil {
api.respondWithError(w, err)
return
}
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)
if err != nil {
api.respondWithError(w, err)
return
}
var watch fission.Watch
+1 -1
View File
@@ -18,12 +18,12 @@ package main
import (
"fmt"
"os"
"text/tabwriter"
"github.com/urfave/cli"
"github.com/fission/fission"
"os"
)
func envCreate(c *cli.Context) error {
+1 -1
View File
@@ -23,6 +23,7 @@ import (
"fmt"
"io"
"log"
"reflect"
"strings"
"sync/atomic"
"time"
@@ -36,7 +37,6 @@ import (
"github.com/fission/fission"
"github.com/fission/fission/publisher"
"reflect"
)
type requestType int
+4 -4
View File
@@ -17,14 +17,14 @@ limitations under the License.
package client
import (
"net/http"
"strings"
"bytes"
"encoding/json"
"github.com/fission/fission"
"io/ioutil"
"net/http"
"net/url"
"strings"
"github.com/fission/fission"
)
type Client struct {
+1 -1
View File
@@ -3,9 +3,9 @@ package poolmgr
import (
"log"
"testing"
"time"
"github.com/fission/fission"
"time"
)
func TestFunctionServiceCache(t *testing.T) {