Commit Graph

1277 Commits

Author SHA1 Message Date
Reed Allman
84c7b4d656 Merge branch 'fix-fn-glide' into 'master'
fix the fn glide

See merge request !54
2017-06-13 11:47:14 -07:00
Travis Reeder
6480725b51 fn tool: 0.3.10 release [skip ci] 2017-06-13 11:39:40 -07:00
Travis Reeder
9ff12e42c0 Merge branch 'master' of https://gitlab-odx.oracle.com/odx/functions 2017-06-13 11:38:58 -07:00
Travis Reeder
da70a0ef67 Fixing fn release script. 2017-06-13 11:38:54 -07:00
Reed Allman
60014af2c4 Merge branch 'Makefile-docker-run-proxy' into 'master'
Added -e NO_PROXY and -e HTTP_PROXY to docker-run to fix docker failure to connect to host unix.sock

See merge request !52
2017-06-13 11:24:34 -07:00
Travis Reeder
e36cde079d Merge branch 'wait-time' into 'master'
adds wait time based scaling across nodes

See merge request !48
2017-06-13 11:20:25 -07:00
Shaun Smith
a31bbdc676 Added -e NO_PROXY and -e HTTP_PROXY to docker-run to fix docker failure to connect to host unix.sock 2017-06-13 11:15:21 -07:00
Travis Reeder
4a89f5648d fixing fn release script 2017-06-13 11:14:34 -07:00
Travis Reeder
9981004af3 fn tool: 0.3.9 release [skip ci] 2017-06-13 11:11:02 -07:00
Travis Reeder
f9cc13c7f5 Fixing fn release script. 2017-06-13 11:10:22 -07:00
Travis Reeder
475a070278 fn tool: 0.3.8 release [skip ci] 2017-06-13 11:07:53 -07:00
Travis Reeder
012855ee0d Fixing fn release script. 2017-06-13 11:07:18 -07:00
James
03bacc5085 Fire trigger to deploy functions-svc 2017-06-13 09:59:55 -07:00
James
e096364757 Fire off deploy trigger 2017-06-12 15:01:46 -07:00
Reed Allman
bc9b274d43 spew spew 2017-06-11 17:58:03 -07:00
Reed Allman
c7a18d035e fix imports 2017-06-11 17:40:34 -07:00
Reed Allman
a0ec3024fd 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-11 17:39:08 -07: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
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
Reed Allman
d4340e4932 add fn/vendor 2017-06-11 02:10:50 -07:00
Reed Allman
16529159a9 update other gitignore 2017-06-11 02:07:31 -07:00
Reed Allman
94c5b41961 updated gitignore 2017-06-11 02:06:54 -07:00
Reed Allman
f2c7aa5ee6 add functions/vendor files 2017-06-11 02:05:36 -07:00
Reed Allman
6ee9c1fa0a remove dep files, update glide top to ignore fn/ 2017-06-11 02:03:02 -07:00
Reed Allman
398ecc388e move the lb stuff around in lego form
this structure should allow us to keep the consistent hash code and just use
consistent hashing on a subset of nodes, then in order to satisfy the oracle
service stuff in functions-service we can just implement a different "Grouper"
that does vm allocation and whatever other magic we need to manage nodes and
poop out sets of nodes based on tenant id / func.

for the suga... see main.go and proxy.go, the rest is basically renaming /
moving stuff (not easy to follow changes, nature of the beast).

the only 'issues' i can think of is that down in the ch stuff (or Router) we
will need a back channel to tell the 'Grouper' to add a node (i.e. all nodes for
that shard are currently loaded) which isn't great and also the grouper has no
way of knowing that a node in the given set may not be being used anymore.
still thinking about how to couple those two. basically don't want to have to
just copy that consistent hash code but after munging with stuff i'm almost at
'fuck it' level and maybe it's worth it to just copy and hack it up in
functions-service for what we need. we'll also need to have different key
funcs for groupers and routers eventually (grouper wants tenant id, router
needs tenant id + router). anyway, open to any ideas, i haven't come up with
anything great. feedback on interface would be great

after this can plumb the datastore stuff into the allGrouper pretty easily
2017-06-10 15:21:23 -07:00
Reed Allman
8790859532 fix the fn glide 2017-06-10 02:35:26 -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
Reed Allman
8146864b0b Merge branch 'fix-logrus' into 'master'
hack logrus sirupsen name change

See merge request !47
2017-06-09 14:17:23 -07:00
Reed Allman
c23d893da6 Merge branch 'deploy_sh' into 'master'
Deploy sh

See merge request !46
2017-06-09 13:42:59 -07:00
James Jeffrey
79f1dab007 Deploy sh 2017-06-09 13:42:59 -07:00
Reed Allman
aa170c918f Merge branch 'fix-tests' into 'master'
fix up the tests

See merge request !44
2017-06-08 13:09:48 -07:00
Denis Makogon
1c9c30e062 Merge branch 'update-fn-tool' into 'master'
Update fn tool

See merge request !42
2017-06-08 11:46:56 -07:00
Denis Makogon
52137e3b61 Update fn tool 2017-06-08 11:46:56 -07:00
Reed Allman
478245de4c Merge branch 'rm-max-c-2' into 'master'
clean up hotf(x) concurrency, rm max c

See merge request !40
2017-06-07 15:51:07 -07:00
Travis Reeder
b737ce1f05 Merge branch 'fix-cli' into 'master'
need to use >=17.05 (not 17.5), add trimming for weird builds

See merge request !43
2017-06-07 15:48:00 -07:00
Reed Allman
9ed66591c3 need to use >=17.05 (not 17.5), add trimming for weird builds 2017-06-07 15:48:00 -07:00
Reed Allman
c6e4aa1a63 hack logrus sirupsen name change
:'( not sure how to fix dep tool... punting (maybe we should remove it so that
nobody else will try to use it?)

https://github.com/sirupsen/logrus/issues/553#issuecomment-306591437
2017-06-06 16:45:45 -07:00
Denis Makogon
17bbfa0cdf Merge branch 'multi-stage-builds' into 'master'
Moving dep builds into Dockerfile and multi-stage builds.

Closes #36 and #39

See merge request !31
2017-06-06 15:02:08 -07:00
Travis Reeder
f628e39490 Moving dep builds into Dockerfile and multi-stage builds. 2017-06-06 15:02:08 -07:00
Denis Makogon
0276a1c156 Merge branch 'func_status' into 'master'
[Feature] Function status

See merge request !15
2017-06-06 14:12:50 -07:00
Denis Makogon
3f065ce6bf [Feature] Function status 2017-06-06 14:12:50 -07:00
Denis Makogon
6334f44a72 Merge branch 'update-source' into 'master'
Updating source to funcy/functions_go

See merge request !41
2017-06-06 12:41:28 -07:00
Denis Makogon
28e484a370 Updating source to funcy/functions_go 2017-06-06 22:40:48 +03:00
Travis Reeder
ebb0889869 Merge branch 'functionc_go' into 'master'
Update functions_{lang} tool to recent git source

See merge request !38
2017-06-06 10:03:56 -07:00
Denis Makogon
1a2a805740 Update functions_{lang} tool to recent git source 2017-06-06 19:50:33 +03: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
James Jeffrey
7e02597142 Merge branch 'chad-update-tutorial' into 'master'
adding rust, fixing python/php, adding ability to detect rusts src/main.rs file. Updates all tutorials as well.

See merge request !39
2017-06-05 15:52:31 -07:00
Chad Arimura
dd816dece6 dont upset the java peeps 2017-06-05 14:29:56 -07:00