Update router for cache expiry
This commit is contained in:
@@ -19,23 +19,24 @@ package router
|
|||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/platform9/fission"
|
"github.com/platform9/fission"
|
||||||
"github.com/platform9/fission/cache"
|
"github.com/platform9/fission/cache"
|
||||||
)
|
)
|
||||||
|
|
||||||
type functionServiceMap struct {
|
type functionServiceMap struct {
|
||||||
svc *cache.Cache // map[fission.Metadata]*url.URL
|
cache *cache.Cache // map[fission.Metadata]*url.URL
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeFunctionServiceMap() *functionServiceMap {
|
func makeFunctionServiceMap(expiry time.Duration) *functionServiceMap {
|
||||||
return &functionServiceMap{
|
return &functionServiceMap{
|
||||||
svc: cache.MakeCache(),
|
cache: cache.MakeCache(expiry),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fmap *functionServiceMap) lookup(f *fission.Metadata) (*url.URL, error) {
|
func (fmap *functionServiceMap) lookup(f *fission.Metadata) (*url.URL, error) {
|
||||||
item, err := fmap.svc.Get(*f)
|
item, err := fmap.cache.Get(*f)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -44,9 +45,8 @@ func (fmap *functionServiceMap) lookup(f *fission.Metadata) (*url.URL, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (fmap *functionServiceMap) assign(f *fission.Metadata, serviceUrl *url.URL) {
|
func (fmap *functionServiceMap) assign(f *fission.Metadata, serviceUrl *url.URL) {
|
||||||
//fmap.requestChannel <- &functionServiceMapRequest{Function: *f, serviceUrl: *serviceUrl, requestType: ASSIGN}
|
err := fmap.cache.Set(*f, serviceUrl)
|
||||||
err := fmap.svc.Set(*f, serviceUrl)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("error caching svc for function: %v", err)
|
log.Printf("error caching service url for function: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -41,13 +41,14 @@ package router
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
|
||||||
controllerClient "github.com/platform9/fission/controller/client"
|
controllerClient "github.com/platform9/fission/controller/client"
|
||||||
poolmgrClient "github.com/platform9/fission/poolmgr/client"
|
poolmgrClient "github.com/platform9/fission/poolmgr/client"
|
||||||
"log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// request url ---[mux]---> Function(name,uid) ----[fmap]----> k8s service url
|
// request url ---[mux]---> Function(name,uid) ----[fmap]----> k8s service url
|
||||||
@@ -68,7 +69,7 @@ func serve(port int, httpTriggerSet *HTTPTriggerSet) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Start(port int, controllerUrl string, poolmgrUrl string) {
|
func Start(port int, controllerUrl string, poolmgrUrl string) {
|
||||||
fmap := makeFunctionServiceMap()
|
fmap := makeFunctionServiceMap(time.Minute)
|
||||||
controller := controllerClient.MakeClient(controllerUrl)
|
controller := controllerClient.MakeClient(controllerUrl)
|
||||||
poolmgr := poolmgrClient.MakeClient(poolmgrUrl)
|
poolmgr := poolmgrClient.MakeClient(poolmgrUrl)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user