mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
functions: performance improvements - LRU & singleflight DB calls (#322)
* functions: add cache and singleflight to ease database load * runner: upgrade * deps: upgrade glide files * license: add third party notifications * functions: fix handling of implicitly created apps * functions: code deduplication * functions: fix missing variable
This commit is contained in:
@@ -86,24 +86,12 @@ func deleteTask(url string, task *models.Task) error {
|
||||
|
||||
// RunAsyncRunner pulls tasks off a queue and processes them
|
||||
func RunAsyncRunner(ctx context.Context, tasksrv string, tasks chan TaskRequest, rnr *Runner) {
|
||||
u, h := tasksrvURL(tasksrv)
|
||||
if isHostOpen(h) {
|
||||
return
|
||||
}
|
||||
u := tasksrvURL(tasksrv)
|
||||
|
||||
startAsyncRunners(ctx, u, tasks, rnr)
|
||||
<-ctx.Done()
|
||||
}
|
||||
|
||||
func isHostOpen(host string) bool {
|
||||
conn, err := net.Dial("tcp", host)
|
||||
available := err == nil
|
||||
if available {
|
||||
conn.Close()
|
||||
}
|
||||
return available
|
||||
}
|
||||
|
||||
func startAsyncRunners(ctx context.Context, url string, tasks chan TaskRequest, rnr *Runner) {
|
||||
var wg sync.WaitGroup
|
||||
ctx, log := common.LoggerWithFields(ctx, logrus.Fields{"runner": "async"})
|
||||
@@ -159,15 +147,11 @@ func startAsyncRunners(ctx context.Context, url string, tasks chan TaskRequest,
|
||||
}
|
||||
}
|
||||
|
||||
func tasksrvURL(tasksrv string) (parsedURL, host string) {
|
||||
func tasksrvURL(tasksrv string) string {
|
||||
parsed, err := url.Parse(tasksrv)
|
||||
if err != nil {
|
||||
logrus.WithError(err).Fatalln("cannot parse TASKSRV endpoint")
|
||||
logrus.WithError(err).Fatalln("cannot parse API_URL endpoint")
|
||||
}
|
||||
// host, port, err := net.SplitHostPort(parsed.Host)
|
||||
// if err != nil {
|
||||
// log.WithError(err).Fatalln("net.SplitHostPort")
|
||||
// }
|
||||
|
||||
if parsed.Scheme == "" {
|
||||
parsed.Scheme = "http"
|
||||
@@ -177,9 +161,5 @@ func tasksrvURL(tasksrv string) (parsedURL, host string) {
|
||||
parsed.Path = "/tasks"
|
||||
}
|
||||
|
||||
// if _, _, err := net.SplitHostPort(parsed.Host); err != nil {
|
||||
// parsed.Host = net.JoinHostPort(parsed.Host, parsed)
|
||||
// }
|
||||
|
||||
return parsed.String(), parsed.Host
|
||||
return parsed.String()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user