Commit Graph

711 Commits

Author SHA1 Message Date
James Jeffrey
c66a0d0cc4 Update swagger doc. Indicate to user if updated or created 2017-07-06 11:46:24 -07:00
James Jeffrey
70eb25c873 Change logic behind put post and patch for routes 2017-07-06 11:46:24 -07:00
Will Price
02d6349cf8 Allow calling root route on app
Fixes #64

Previously calling a root registered route would result in an error
message "Not Found" suggesting the route hadn't been registed, yet when
listing the routes, `fn routes list myapp` you could see the `/` route.

You can now successfully call a root registered route with `fn call
myapp /`
2017-07-06 10:40:34 +01:00
Travis Reeder
5ec0eadff8 Got optional hot functions working for Lambda. 2017-07-05 23:34:19 -07:00
Reed Allman
c85571f51d Merge branch 'fix-logs-reed' into 'master'
Fix logs stuff

See merge request !74
2017-07-05 10:41:27 -07:00
Reed Allman
c20b4769bf make hot functions actually have logs now 2017-06-30 16:10:33 -07:00
Reed Allman
db782536d9 Merge branch 'fix_issue_72' into 'master'
This returns 404 when app is not there on delete closes #72

Closes #72

See merge request !87
2017-06-30 12:37:58 -07:00
Reed Allman
c186c10123 Merge branch 'issues-76' into 'master'
Check if route exists before attempting to delete it

Closes #76

See merge request !85
2017-06-30 12:37:48 -07:00
James Jeffrey
8e97a635a9 This returns 404 when app is not there on delete closes #72 2017-06-30 12:20:59 -07:00
James Jeffrey
76b2b8059e functions: 0.3.18 release [skip ci] 2017-06-30 11:34:47 -07:00
Denis Makogon
67719d691d Check if route exist before attempting to delete it
xFixes: #76
2017-06-30 14:09:00 +03:00
Travis Reeder
1f3218f8dd WIP: working on hot lambda functions. 2017-06-29 08:00:29 -07:00
Reed Allman
4172bac7fe add buffer reuse sugar 2017-06-28 23:35:32 -07:00
Reed Allman
447fd4f478 add test file 2017-06-28 23:11:04 -07:00
Reed Allman
f85237ff5e add tests 2017-06-28 23:09:43 -07:00
Reed Allman
760879d6f9 add all the fancy log writers i've been on about
line writers to log writers. limit writers to db writers. multi writers. close
writers. all the writers
2017-06-28 22:08:30 -07:00
Travis Reeder
ad11f0699a Merge branch 'pass-call-id' into 'master'
Pass call ID into function, closes #79

Closes #79

See merge request !78
2017-06-23 12:12:25 -07:00
Travis Reeder
ce3245e243 Pass call ID into function, closes #79 2017-06-22 09:54:59 -07:00
Denis Makogon
c80746bf56 Add app and route validation to calls API handler
This patch adds check for app and route to ensure
 that they exist before listing calls
2017-06-22 18:23:31 +03:00
Gitlab Ci
9a46222280 Functions: 0.3.17 release [skip ci] 2017-06-21 14:23:12 +00:00
Travis Reeder
11c28e8846 Fixed input 2017-06-21 11:59:38 -07:00
Gitlab Ci
26d3ba2420 Functions: 0.3.16 release [skip ci] 2017-06-21 12:57:36 +00:00
Gitlab Ci
73eb7b4bd0 Functions: 0.3.15 release [skip ci] 2017-06-21 12:53:51 +00:00
Travis Reeder
383ca3b9ce functions: 0.3.14 release [skip ci] 2017-06-21 08:45:02 -07:00
Travis Reeder
47d78c3307 Fixed slice index out of bounds error from fix-logs 2017-06-21 08:24:06 -07:00
Denis Makogon
89cf27c739 Fix tests 2017-06-21 09:20:40 +03:00
Reed Allman
6a8423f51c spew spew 2017-06-21 09:20:39 +03:00
Reed Allman
f7d338947c fix imports 2017-06-21 09:20:39 +03:00
Reed Allman
c8484b0a10 clean up the logging code
add limit writecloser, add closer method so we can flush logs properly,
buffer logs and stuff

it builds it works amirite
2017-06-21 09:20:39 +03:00
Gitlab Ci
db8dd67e7e Functions: 0.3.13 release [skip ci] 2017-06-20 19:36:58 +00:00
Gitlab Ci
b4b9dca70d Functions: 0.3.12 release [skip ci] 2017-06-20 19:31:17 +00:00
Gitlab Ci
5c3e58e40c Functions: 0.3.11 release [skip ci] 2017-06-20 19:28:46 +00:00
Gitlab Ci
8a12f8afae Functions: 0.3.10 release [skip ci] 2017-06-20 19:25:01 +00:00
Gitlab Ci
c189f4355b Functions: 0.3.9 release [skip ci] 2017-06-20 19:21:18 +00:00
Gitlab Ci
24a90ad658 : 0.3.8 release [skip ci] 2017-06-20 23:33:19 +00:00
Reed Allman
05ac5b6d93 use redis pool more better
event loop was reusing a connection even if it was broken forever...

db was only using one connection ever even if it was broken...

no mas. seems to pass tests, hopefully chad can push it
2017-06-11 14:25:10 -07:00
Travis Reeder
8800ecc5c2 Merge branch 'func_logs2' into 'master'
Func logs feature

See merge request !66
2017-06-20 11:51:26 -07:00
Travis Reeder
8c96d3ba2f Fixes async payload passing for #68. 2017-06-20 11:32:51 -07:00
James
8a3edb8309 All of the changes for func logs 2017-06-19 11:38:11 -07:00
Reed Allman
161459192d Id gen suga 2017-06-19 10:40:26 -07:00
Reed Allman
b59465ddeb don't overwrite error when inserting into db 2017-06-11 03:10:16 -07:00
Reed Allman
bcdfa22248 fixes panic, still dk why result and err are nil. need to fix fucked up code 2017-06-11 02:56:00 -07:00
Travis Reeder
9a8ff408b5 Fixes scary output on docker startup. 2017-06-15 15:48:34 -07:00
Reed Allman
75c5e83936 adds wait time based scaling across nodes
this works by having every request from the functions server kick back a
FXLB-WAIT header on every request with the wait time for that function to
start. the lb then keeps track on a per node+function basis an ewma of the
last 10 request's wait times (to reduce jitter).  now that we don't have max
concurrency it's actually pretty challenging to get the wait time stuff to
tick. i expect in the near future we will be throttling functions on a given
node in order to induce this, but that is for another day as that code needs a
lot of reworking. i tested this by introducing some arbitrary throttling (not
checked in) and load spreads over nodes correctly (see images). we will also
need to play with the intervals we want to use, as if you have a func with
50ms run time then basically 10 of those will rev up another node (this was
before removing max_c, with max_c=1) but in any event this wires in the basic
plumbing.

* make docs great again. renamed lb dir to fnlb
* added wait time to dashboard
* wires in a ready channel to await the first pull for hot images to count in
the wait time (should be otherwise useful)

future:
TODO rework lb code api to be pluggable + wire in data store
TODO toss out first data point containing pull to not jump onto another node
immediately (maybe this is actually a good thing?)
2017-06-09 16:30:34 -07:00
James Jeffrey
79f1dab007 Deploy sh 2017-06-09 13:42:59 -07:00
Reed Allman
636af2f7ea fix up the tests 2017-06-06 05:04:22 -07:00
Reed Allman
9edacae928 clean up hotf(x) concurrency, rm max c
this patch gets rid of max concurrency for functions altogether, as discussed,
since it will be challenging to support across functions nodes. as a result of
doing so, the previous version of functions would fall over when offered 1000
functions, so there was some work needed in order to push this through.
further work is necessary as docker basically falls over when trying to start
enough containers at the same time, and with this patch essentially every
function can scale infinitely. it seems like we could add some kind of
adaptive restrictions based on task run length and configured wait time so
that fast running functions will line up to run in a hot container instead of
them all creating new hot containers.

this patch takes a first cut at whacking out some of the insanity that was the
previous concurrency model, which was problematic in that it limited
concurrency significantly across all functions since every task went through
the same unbuffered channel, which could create blocking issues for all
functions if the channel is not picked off fast enough (it's not apparent that
this was impossible in the previous implementation). in any event, each
request has a goroutine already, there's no reason not to use it. not too hard
to wrap a map in a lock, not sure what the benefits were (added insanity?) in effect
this is marginally easier to understand and less insane (marginally). after
getting rid of max c this adds a blocking mechanism for the first invocation
of any function so that all other hot functions will wait on the first one to
finish to avoid a herd issue (was making docker die...) -- this could be
slightly improved, but works in a pinch. reduced some memory usage by having
redundant maps of htfnsvr's and task.Requests (by a factor of 2!). cleaned up
some of the protocol stuff, need to clean this up further. anyway, it's a
first cut. have another patch that rewrites all of it but was getting into
rabbit hole territory, would be happy to oblige if anybody else has problems
understanding this rat's nest of channels. there is a good bit of work left to
make this prod ready (regardless of removing max c).

a warning that this will break the db schemas, didn't put the effort in to add
migration stuff since this isn't deployed anywhere in prod...

TODO need to clean out the htfnmgr bucket with LRU
TODO need to clean up runner interface
TODO need to unify the task running paths across protocols
TODO need to move the ram checking stuff into worker for noted reasons
TODO need better elasticity of hot f(x) containers
2017-06-05 20:04:13 -07:00
Denis Makogon
3f065ce6bf [Feature] Function status 2017-06-06 14:12:50 -07:00
Denis Makogon
007f1982fc Hot fn ID 2017-05-31 22:50:31 -07:00
James Jeffrey
c7a5bae587 Merge branch 'chad-gitlab-url-change' into 'master'
Chad gitlab url change

See merge request !28
2017-05-30 11:34:22 -07:00