Commit Graph

1728 Commits

Author SHA1 Message Date
Reed Allman
3083415611 Merge pull request #349 from fnproject/pagination
add pagination to all list endpoints
2017-09-26 11:13:35 -07:00
CI
ab4cd5bee9 fnlb: 0.0.82 release [skip ci] fnlb-0.0.82 2017-09-26 02:12:01 +00:00
CI
a85678c542 functions: 0.3.116 release [skip ci] 0.3.116 2017-09-26 02:10:44 +00:00
Travis Reeder
3eaf90949c Added brew install fn to README. (#362) 2017-09-25 21:53:58 -04:00
CI
738233acbf fnlb: 0.0.81 release [skip ci] fnlb-0.0.81 2017-09-25 18:34:24 +00:00
CI
1c1caafad5 functions: 0.3.115 release [skip ci] 0.3.115 2017-09-25 18:33:01 +00:00
CI
76fe2a81c5 fnlb: 0.0.80 release [skip ci] fnlb-0.0.80 2017-09-25 18:20:49 +00:00
CI
90e6c43022 functions: 0.3.114 release [skip ci] 0.3.114 2017-09-25 18:19:34 +00:00
Reed Allman
af28ed9960 Merge pull request #359 from fnproject/hot-py-example
Adding Python 3.5 hot fn sample
2017-09-25 11:05:10 -07:00
Reed Allman
ac132ae918 Merge pull request #358 from fnproject/chad-add-version
adding version under Fn ascii on server launch
2017-09-25 11:04:32 -07:00
Reed Allman
bb7e600053 Merge pull request #356 from fnproject/oom-err
improve ux for ooms
2017-09-25 11:03:43 -07:00
Denis Makogon
1c8120f3f9 Updating route path 2017-09-25 17:54:04 +03:00
Denis Makogon
4c19ad4c96 Adding Python hot fn sample 2017-09-25 17:48:39 +03:00
Chad Arimura
be910fdbe4 adding version under Fn ascii on server launch 2017-09-23 13:15:25 -07:00
CI
fff03d370f fnlb: 0.0.79 release [skip ci] fnlb-0.0.79 2017-09-22 18:07:47 +00:00
CI
9612606d21 functions: 0.3.113 release [skip ci] 0.3.113 2017-09-22 18:06:28 +00:00
Reed Allman
6b7b1e3c63 Merge pull request #354 from fnproject/stats
Extend stats to report Failed calls
2017-09-22 10:50:59 -07:00
CI
71d1d556d3 fnlb: 0.0.78 release [skip ci] fnlb-0.0.78 2017-09-22 17:08:32 +00:00
CI
ecd454d02f functions: 0.3.112 release [skip ci] 0.3.112 2017-09-22 17:07:06 +00:00
Chad Arimura
d6cc0d7ddc Merge pull request #353 from fnproject/zzz-moar
fix slot races
2017-09-22 09:50:40 -07:00
Nigel Deakin
54407f7b74 Extend stats to report Failed calls 2017-09-22 17:36:43 +01:00
Reed Allman
ab7352ce40 Merge pull request #352 from fnproject/346
Fix route headers routine
2017-09-21 15:37:18 -07:00
Denis Makogon
edd0c8453c Fixing tests 2017-09-22 01:23:14 +03:00
Denis Makogon
c39bf31425 Adding API test to valide change 2017-09-22 01:05:56 +03:00
Denis Makogon
0e1140e60c Fix route headers merge
Closes: #346
2017-09-22 00:36:28 +03:00
Reed Allman
169f269ae1 Merge pull request #348 from fnproject/exclude-api-tests-from-test-sh
Run API tests as separate task
2017-09-21 09:42:36 -07:00
Denis Makogon
ef74b82506 Adding all datastores-based API tests 2017-09-21 12:33:16 +03:00
Denis Makogon
482f8423d6 Run API tests as separate task
Before that we tested only SQLite, deployments we do are using MySQL.
 So, it's better to run that set of tests.
2017-09-21 12:33:15 +03:00
CI
0cc4a8f74a fnlb: 0.0.77 release [skip ci] fnlb-0.0.77 2017-09-21 00:19:34 +00:00
CI
9ceda5ec72 functions: 0.3.111 release [skip ci] 0.3.111 2017-09-21 00:18:17 +00:00
Reed Allman
b3157401e8 improve ux for ooms
closes #350
2017-09-20 17:10:42 -07:00
Reed Allman
f7f4d659ea Merge pull request #347 from fnproject/fix-queries-for-mysql-pg
Split queries to make them work on Postgres and MySQL
2017-09-20 17:07:24 -07:00
Denis Makogon
f4699ea0ba Adding API tests that verifies recently changed code bevaviour 2017-09-21 02:25:36 +03:00
Denis Makogon
830c86efe7 Make app delete more stable
We still need to delete app and check how may rows affected in apps table.
 But we don't really care about other tables and rows affected there: routes, calls, logs

 We need to delete app out of loop to check for invalid numbers of rows affected:
 - zero rows means nothing happend

 Despite apps table, zero rows affected if valid case for routes, calls and logs
2017-09-21 02:04:27 +03:00
Denis Makogon
a09159308c Run queries inside one transaction 2017-09-21 01:21:41 +03:00
Denis Makogon
7a9591fd45 Split queries to make them work on Postgres and MySQL
Only SQLite supports multiple deletes in one transaction/statement,
 but other are not.
2017-09-21 00:55:39 +03:00
CI
e47c815b61 fnlb: 0.0.76 release [skip ci] fnlb-0.0.76 2017-09-20 19:51:13 +00:00
CI
950b62994a functions: 0.3.110 release [skip ci] 0.3.110 2017-09-20 19:49:55 +00:00
Reed Allman
38a2baa5d0 Merge pull request #339 from fnproject/app-yaml
Example and documentation for deploying full applications
2017-09-20 12:38:49 -07:00
Travis Reeder
deb2ae8103 Merge branch 'master' into app-yaml 2017-09-20 11:49:33 -07:00
Travis Reeder
904f288ed6 Replace FN_ROUTE with FN_PATH 2017-09-20 11:35:18 -07:00
Reed Allman
22a1b296e3 fix slot races
I'd be pretty surprised if these were happening but meh, a computer running at
capacity can make the runtime scheduler do all kinds of weird shit, so this
locks down the behavior around slot launching.

I didn't load test much as there are cries of 'wolf' running amok, and it's
late, so this could be off a little -- but I think it's about this easy.  cold
is the only one launching slots for itself, so it should always receive its
own slot (provided within time bounds). for hot we just need a way to tell the
ram token allocator that we aren't there anymore, so that somebody can close
the token (important).

If the bug still persists then it seems likely that there is another bug
around timing I'm not aware of (possible, but unlikely) or the more likely
case that it's actually taking up to the timeout to launch a container / find
a ram slot / find a free container. Otherwise, it's not related to the agent
and the http server timeouts may need fiddling with (read / write timeout),
if ruby client is failing to connect though I'm guessing that it's just that
nobody is reading the body (i.e. no function runs) and the error handling
isn't very well done, as we are replying with 504 if we hit a timeout (but if
nobody is listening, they won't get it).
2017-09-20 10:43:12 -07:00
Reed Allman
337e962416 add pagination to all list endpoints
calls, apps, and routes listing were previously returning the entire data set,
which just won't scale. this adds pagination with cursoring forward to each of
these endpoints (see the [docs](docs/definitions.md)).

the patch is really mostly tests, shouldn't be that bad to pick through.

some blarble about implementation is in order:

calls are sorted by ids but allow searching within certain `created_at` ranges
(finally). this is because sorting by `created_at` isn't feasible when
combined with paging, as `created_at` is not guaranteed to be unique -- id's
are (eliding theoreticals). i.e. on a page boundary, if there are 200 calls
with the same `created_at`, providing a `cursor` of that `created_at` will
skip over the remaining N calls with that `created_at`.  also using id will be
better on the index anyway (well, less of them). yay having sortable ids! I
can't discern any issues doing this, as even if 200 calls have the same
created_at, they will have different ids, and the sort should allow paginating
them just fine. ids are also url safe, so the id works as the cursor value
just fine.

apps and routes are sorted by alphabetical order. as they aren't guaranteed to
be url safe, we are base64'ing them in the front end to a url safe format and
then returning them, and then base64 decoding them when we get them. this does
mean that they can be relatively large if the path/app is long, but if we
don't want to add ids then they were going to be pretty big anyway. a bonus
that this kind of obscures them. if somebody has better idea on formatting, by
all means.

notably, we are not using the sql paging facilities, and we are baking our own
based on cursors, which ends up being much more efficient for querying longer
lists of resources. this also should be easy to implement in other non-sql dbs
and the cursoring formats we can change on the fly since we are just exposing
them as opaque strings. the front end deals with the base64 / formatting, etc
and the back end is taking raw values (strfmt.DateTime or the id for calls).
the cursor that is being passed to/by the user is simply the last resource on the
previous page, so in theory we don't even need to return it, but it does make
it a little easier to use, also, cursor being blank on the last page depends
on page full-ness, so sometimes users will get a cursor when there are no
results on next page (1/N chance, and it's not really end of world -- actually
searching for the next thing would make things more complex). there are ample
tests for this behavior.

I've turned off all query parameters allowing `LIKE` queries on certain listing
endpoints, as we should not expose sql behavior through our API in the event
that we end up not using a sql db down the road. I think we should only allow
prefix matching, which sql can support as well as other types of databases
relatively cheaply, but this is not hooked up here as it didn't 'just work'
when I was fiddling with it (can add later, they're unnecessary and weren't
wired in before in front end).

* remove route listing across apps (unused)
* fix panic when doing `/app//`. this is prob possible for other types of
endpoints, out of scope here. added a guard in front of all endpoints for this
* adds `from_time` and `to_time` query parameters to calls, so you can e.g.
list the last hour of tasks. these are not required and default to
oldest/newest.
* hooked back up the datastore tests to the sql db, only run with sqlite atm,
but these are useful, added a lot to them too.
* added a bunch of tests to the front end, so pretty sure this all works now.
* added to swagger, we'll need to re-gen. also wrote some words about
pagination workings, I'm not sure how best to link to these, feedback welcome.
* not sure how we want to manage indexes, but we may need to add some (looking
at created_at, mostly)
* `?route` changed to `?path` in routes listing, to keep consistency with
everything else
* don't 404 when searching for calls where the route doesn't exist, just
return an empty list (it's a query param ffs)

closes #141
2017-09-20 06:50:49 -07:00
CI
5ad17e13f4 fnlb: 0.0.75 release [skip ci] fnlb-0.0.75 2017-09-19 22:41:45 +00:00
CI
6a5b5fbcd4 functions: 0.3.109 release [skip ci] 0.3.109 2017-09-19 22:40:27 +00:00
Derek Schultz
fbb3ed6e9a Merge pull request #343 from fnproject/rollback-mysql
rollback mysql driver
2017-09-19 16:29:57 -06:00
Reed Allman
1a55c8050e rollback mysql driver
this https://github.com/go-sql-driver/mysql/pull/302 seems to have pretty much
crippled the ability to use mysql, so we need to lock a version before that
until that issue gets fixed.
2017-09-19 14:14:42 -07:00
CI
8988d5996c fnlb: 0.0.74 release [skip ci] fnlb-0.0.74 2017-09-19 17:54:45 +00:00
CI
e1248bca5e functions: 0.3.108 release [skip ci] 0.3.108 2017-09-19 17:53:34 +00:00
Reed Allman
4e96232c53 Merge pull request #341 from fnproject/dep-update
Finally rid of capital Sirupsen??
2017-09-19 10:48:14 -07:00