Commit Graph

2870 Commits

Author SHA1 Message Date
CI
3d60c9c6be fnserver: 0.3.512 release [skip ci] 0.3.512 2018-07-20 23:08:00 +00:00
Tolga Ceylan
db7cbf73e2 fn: add requests received/handled in Status responses (#1132)
This is useful as additional data to inflight requests.
Callers can determine request arrival and processing
rate.
2018-07-20 16:00:02 -07:00
CI
c0bb60fd67 fnserver: 0.3.511 release [skip ci] 0.3.511 2018-07-19 23:21:29 +00:00
Tolga Ceylan
1258baeb7f fn: agent eviction revisited (#1131)
* fn: agent eviction revisited

Previously, the hot-container eviction logic used
number of waiters of cpu/mem resources to decide to
evict a container. An ejection ticker used to wake up
its associated container every 1 sec to reasses system
load based on waiter count. However, this does not work
for non-blocking agent since there are no waiters for
non-blocking mode.

Background on blocking versus non-blocking agent:
    *) Blocking agent holds a request until the
    the request is serviced or client times out. It assumes
    the request can be eventually serviced when idle
    containers eject themselves or busy containers finish
    their work.
    *) Non-blocking mode tries to limit this wait time.
    However non-blocking agent has never been truly
    non-blocking. This simply means that we only
    make a request wait if we take some action in
    the system. Non-blocking agents are configured with
    a much higher hot poll frequency to make the system
    more responsive as well as to handle cases where an
    too-busy event is missed by the request. This is because
    the communication between hot-launcher and waiting
    requests are not 1-1 and lossy if another request
    arrives for the same slot queue and receives a
    too-busy response before the original request.

Introducing an evictor where each hot container can
register itself, if it is idle for more than 1 seconds.
Upon registry, these idle containers become eligible
for eviction.

In hot container launcher, in non-blocking mode,
before we attempt to emit a too-busy response, now
we attempt an evict. If this is successful, then
we wait some more. This could result in requests
waiting for more than they used to only if a
container was evicted. For blocking-mode, the
hot launcher uses hot-poll period to assess if
a request has waited for too long, then eviction
is triggered.
2018-07-19 15:04:15 -07:00
CI
8e373005a0 fnserver: 0.3.510 release [skip ci] 0.3.510 2018-07-17 13:03:36 +00:00
Owen Cliffe
1d5892b0c6 Fix/test trigger annotations (#1126)
* Fix/test trigger annotations
2018-07-17 13:54:26 +01:00
CI
95dda3d3e6 fnserver: 0.3.509 release [skip ci] 0.3.509 2018-07-17 01:43:44 +00:00
Tolga Ceylan
e9d5221e15 fn: Status gRPC call timeout handling (#1125)
Status calls should not directly use client
gRPC context deadlines/timeouts during Status
execution. Status should allow plenty of time
for the scheduler agent and docker to run and
emit useful error information.

Setting this timeout to 60 seconds, which should
surface disk I/O, docker, etc. issues.
2018-07-16 18:33:23 -07:00
CI
b0d27958e3 fnserver: 0.3.508 release [skip ci] 0.3.508 2018-07-16 14:47:52 +00:00
Michael J Williams
8221867b42 Fixlinks to func-file.md (#1122) 2018-07-16 15:38:39 +01:00
CI
25a1828e2e fnserver: 0.3.507 release [skip ci] 0.3.507 2018-07-14 00:44:41 +00:00
Tolga Ceylan
564db4e9d2 fn: Status should expose if data was served from cache. (#1123)
This is useful in scenarios where gRPC client might want
to reliably observe/report the status latency metrics
and remove any possible duplicates. If the status query
was served from cache, then these latencies show last
execution latency.
2018-07-13 17:35:00 -07:00
CI
277a0beadf fnserver: 0.3.506 release [skip ci] 0.3.506 2018-07-12 21:08:14 +00:00
Tolga Ceylan
5dc5740a54 fn: runner status and docker load images (#1116)
* fn: runner status and docker load images

Introducing a function run for pure runner Status
calls. Previously, Status gRPC calls returned active
inflight request counts with the purpose of a simple
health checker. However this is not sufficient since
it does not show if agent or docker is healthy. With
this change, if pure runner is configured with a status
image, that image is executed through docker. The
call uses zero memory/cpu/tmpsize settings to ensure
resource tracker does not block it.

However, operators might not always have a docker
repository accessible/available for status image. Or
operators might not want the status to go over the
network. To allow such cases, and in general possibly
caching docker images, added a new environment variable
FN_DOCKER_LOAD_FILE. If this is set, fn-agent during
startup will load these images that were previously
saved with 'docker save' into docker.
2018-07-12 13:58:38 -07:00
CI
62461d93a7 fnserver: 0.3.505 release [skip ci] 0.3.505 2018-07-12 10:42:14 +00:00
Richard Connon
5dfd9a9110 Add a GetString helper for simple string annotations. Add tests which call Get and GetString on annotations objects (#1118) 2018-07-12 11:33:26 +01:00
CI
d01fa73209 fnserver: 0.3.504 release [skip ci] 0.3.504 2018-07-11 14:14:54 +00:00
Tom Coupland
c7a50efd2c Plan for func.yaml file changes for triggers. fnproject/cli#324 (#1115)
The changes aim to be as minimal as possible:

* Remove no longer available options
* Add a schema version to the file for validation
* Add trigger list block
2018-07-11 15:05:27 +01:00
CI
4be93147b7 fnserver: 0.3.503 release [skip ci] 0.3.503 2018-07-07 09:46:23 +00:00
Owen Cliffe
fff95e7992 Clean up/make consistent the APIs for registering core components, make Docker an optional component at compile time (#1111) 2018-07-07 10:37:19 +01:00
CI
cc468afeec fnserver: 0.3.502 release [skip ci] 0.3.502 2018-07-05 18:05:11 +00:00
Owen Cliffe
b8b544ed25 HTTP Triggers hookup (#1086)
* Initial suypport for invoking tiggers

* dupe method

* tighten server constraints

* runner tests not working yet

* basic route tests passing

* post rebase fixes

* add hybrid support for trigger invoke and tests

* consoloidate all hybrid evil into one place

* cleanup and make triggers unique by source

* fix oops with Agent

* linting

* review fixes
2018-07-05 12:56:07 -05:00
CI
b07a000a18 fnserver: 0.3.501 release [skip ci] 0.3.501 2018-07-05 14:47:30 +00:00
Richard Connon
9f90530465 Check error on triggers with non-existent app test (#1112) 2018-07-05 15:40:24 +01:00
CI
26ec214739 fnserver: 0.3.500 release [skip ci] 0.3.500 2018-07-04 14:30:36 +00:00
Reed Allman
1cdb47d6e9 server, examples, extensions lint compliant (#1109)
these are all automated changes suggested by golint
2018-07-04 15:23:15 +01:00
CI
6f5e58144a fnserver: 0.3.499 release [skip ci] 0.3.499 2018-07-03 23:12:21 +00:00
Tolga Ceylan
300fcd7d92 fn: applications should be aware of reserved writable space (#1083)
Similar to FN_MEMORY, we pass FN_TMPSIZE to function config.
2018-07-03 16:04:48 -07:00
CI
84eed08247 fnserver: 0.3.498 release [skip ci] 0.3.498 2018-07-03 21:06:12 +00:00
Owen Cliffe
5d970d9295 Set shortcodes in trigger response entities based on config or request URL (#1099)
* adding trigger short code injection

* more annotation provider stuff

* fixed up tests

* Fix validator
2018-07-03 15:59:00 -05:00
CI
83c51fa316 fnserver: 0.3.497 release [skip ci] 0.3.497 2018-07-03 00:22:54 +00:00
Tolga Ceylan
317de18e6b fn: lb-agent: Add Runner Scheduler/Execution Stats (#1107)
LB agent reports lb placer latency. It should also report
how long it took for the runner to initiate the call as
well as execution time inside the container if the runner
has accepted (committed) to the call.
2018-07-02 17:15:43 -07:00
Aurelio Garcia-Ribeyro
e0ae9cc679 Note on Shell script about proxy (#1108)
Added a note on the section about using the shell script to set up the proxy environmental variables before running the script.  Also updated MacOS to macOS
2018-07-02 17:13:15 -07:00
CI
357f22c3f5 fnserver: 0.3.496 release [skip ci] 0.3.496 2018-07-02 18:47:10 +00:00
Reed Allman
35e5f81bc8 add docs for --net=host hackery (#1105)
I've found this to be extremely useful. Not that I expect anyone to be able to
find this document on their own accord considering the breadth of
documentation that we have, this can still be useful for linking to from slack
at least (what docs are really for, right?)

also the triggers doc stuck out as confusing considering all the triggers
stuff going on, I was unable to comprehend how exactly it was helpful other
than making people aware that openstack exists and they could build an
extension into fn for it if they want to, but this seems true of most things?
so, removed it, if anyone objects maybe we could improve it a little?
2018-07-02 11:40:00 -07:00
Owen Cliffe
128c9a5182 Fix verbs in docs (#1097)
* Fix verbs [skip ci]

* run ci
2018-07-02 07:09:42 -07:00
CI
f520fd3927 fnserver: 0.3.495 release [skip ci] 0.3.495 2018-06-30 01:34:06 +00:00
Tolga Ceylan
d0365bd2c9 fn: update route documentation for tmpfs_size (#1104) 2018-06-29 18:26:57 -07:00
CI
3bc39175de fnserver: 0.3.494 release [skip ci] 0.3.494 2018-06-29 23:11:19 +00:00
Tolga Ceylan
3b98c19220 fn: swagger update for tmpfs size (#1034) 2018-06-29 16:03:58 -07:00
CI
ccbfbe5cf8 fnserver: 0.3.493 release [skip ci] 0.3.493 2018-06-29 19:46:49 +00:00
Tolga Ceylan
974a8d6f06 fn: add explanation of read-only disk and /tmp in faq/persistence. (#1103) 2018-06-29 12:39:26 -07:00
CI
7c43128e22 fnserver: 0.3.492 release [skip ci] 0.3.492 2018-06-29 18:21:08 +00:00
Tom Coupland
d7139358ce List Cursor management moved into datastore layer. (#1102)
* Don't try to delete an app that wasn't successfully created in the case of failure

* Allow datastore implementations to inject additional annotations on objects

* Allow for datastores transparently adding annotations on apps, fns and triggers. Change NameIn filter to Name for apps.

* Move *List types including JSON annotations for App, Fn and Trigger into models

* Change return types for GetApps, GetFns and GetTriggers on datastore to
be models.*List and ove cursor generation into datastore

* Trigger cursor handling fixed into db layer

Also changes the name generation so that it is not in the same order
as the id (well is random), this means we are now testing our name ordering.

* GetFns now respects cursors

* Apps now feeds cursor back

* Mock fixes

* Fixing up api level cursor decoding

* Tidy up treatment of cursors in the db layer

* Adding conditions for non nil items lists

* fix mock test
2018-06-29 19:14:13 +01:00
CI
fca107c815 fnserver: 0.3.491 release [skip ci] 0.3.491 2018-06-28 00:35:28 +00:00
Owen Cliffe
73d45db443 Fix JSON list responses (#1098) 2018-06-28 01:28:07 +01:00
CI
6bda57199a fnserver: 0.3.490 release [skip ci] 0.3.490 2018-06-26 17:25:11 +00:00
Rik Gibson
64fb6d27b4 Fixed up a couple of incorrect response codes (#1095)
* Fixed up a couple of incorrect response codes

* Standardise all entities on 204 with no return content on successful delete

* Fix failing Fn.delete() test
2018-06-26 18:17:47 +01:00
CI
ad026eb645 fnserver: 0.3.489 release [skip ci] 0.3.489 2018-06-26 11:18:23 +00:00
Tom Coupland
88a674b24b Removing Swaggerv2 error wrapping (#1092)
The code does not produce errors in this shape.
2018-06-26 12:11:36 +01:00