1
0
mirror of https://github.com/ohwgiles/laminar.git synced 2024-10-27 20:34:20 +00:00
Commit Graph

321 Commits

Author SHA1 Message Date
Oliver Giles
078e0e9882 improve websocket handling
The previous implementation meant that messages could get lost if
both sending and receiving were scheduled to be processed in the
same event loop cycle. This commit separates the two channels
more clearly, while still allowing the close event in the receive
side to cancel the whole pipeline

Part of #49 refactor
2018-07-06 12:33:04 +03:00
Oliver Giles
4c2aa2680f Implement websocket communication with kj-http
Now that capnp/kj provides http and websocket functions, replace
the excellent websocketpp library with the kj functions. This
removes a dependency and allows for more consistent idiomatic
code. Thanks websocketpp, it was great to have you along!

This should enable parts of the refactor described in #49
2018-06-30 20:34:56 +03:00
Oliver Giles
0b15939f90 resolves #59: pagination doesn't work after reconnect
A subtle tweak to the websocket logic needed to handle
this edge case. Better comments added.
2018-06-30 20:19:54 +03:00
Oliver Giles
d241d6757f resolves #58: 'connecting' overlay not removed
Now that the 'status' message can be used also as an update
(since 2a14567), extra care has to be taken with the popup
reconnecting overlay
2018-06-30 19:42:11 +03:00
Oliver Giles
b1dc0d62a0 Link binary resources rodata with GNU-stack note
Improve the linking of binary resources so the content is in .rodata
and the object contains a read-only flagged GNU-stack note. This causes
GNU ld to not mark the stack executable in the final binary.

Resolves #55
2018-06-23 14:36:31 +03:00
Oliver Giles
2a14567b79 resolves #54: page number remembered between jobs 2018-06-16 17:07:04 +03:00
Oliver Giles
a0f586581d resolves #38: implement pagination for the job page 2018-06-01 14:51:34 +03:00
Oliver Giles
d1ca6392a4 resolves #43: limit the results displayed on home page
Limit "runs per job in last 24h" and "average runtime per job"
graphs to the top 5 in each case
2018-06-01 10:33:25 +03:00
Vaclav Valicek
fba2d226ef Show file sizes of artifacts (#53)
Show artifacts sizes in webui
2018-06-01 10:14:59 +03:00
Oliver Giles
bbbef11304 update UserManual for 0.6 2018-05-18 12:42:43 +03:00
Oliver Giles
568435cc8e docker scripts: cache the build environment 2018-05-14 21:15:53 +03:00
Oliver Giles
f5ca5a3d7c centos: fix rpm building for mid-release versions 2018-05-14 21:15:17 +03:00
Oliver Giles
40ecc2a132 docker scripts: fix OS version numbers 2018-05-14 21:13:51 +03:00
Oliver Giles
806947ca2f Update manual for queue/start/run commands
As implemented in #36
2018-05-14 21:12:25 +03:00
Oliver Giles
bfac7bc397 CMakeLists: Allow passing in the systemd unit dir
This is now necessary on centos, where /lib is a symlink to /usr/lib
2018-05-14 21:09:28 +03:00
Oliver Giles
180b5b7117 fix: spell out the constructor for gcc4.8 2018-05-14 20:54:12 +03:00
Oliver Giles
f1e4d10be3 resolves #36: queue/start/run 2018-05-12 17:56:56 +03:00
Oliver Giles
828b66682d correct path to new docs page 2018-05-12 17:49:29 +03:00
Oliver Giles
479c519ef3 Split README into UserManual.md 2018-05-12 16:07:43 +03:00
Oliver Giles
649caee297 resolves #30: job execution timeout
Add the ability to configure a timeout in seconds
after which a job run will be automatically aborted
2018-05-12 13:25:19 +03:00
Oliver Giles
ce81be85c7 resolves #48: custom css ineffectual behind reverse proxy
Caddy (and probably other webservers) add a Content-Type header
when one was not supplied by the application backend. Under Chromium,
the css file is not interpreted if the webserver delivers it with
Content-Type: text/plain, althugh it does work if no Content-Type
header is set. To prevent the frontend proxy from adding the wrong
header, set it correctly in the first place
2018-05-04 07:48:48 +03:00
Oliver Giles
083f136186 resolves #41: strange behaviour of limits
On a configuration change, update existing Nodes in Laminar's NodeMap
rather than replacing it with a new map.
2018-04-20 14:18:10 +03:00
Oliver Giles
c937362961 Update comment about loading configuration files
Dynamic reloading of config files was implemented in 216ecee7c5
2018-04-20 12:54:39 +03:00
Oliver Giles
216ecee7c5 resolves #34: watch for configuration changes
Reload the configuration if a change is detected
without requiring a server restart
2018-04-06 18:04:50 +03:00
Oliver Giles
a5d8b985f1 laminarc: replace start with run 2018-04-06 13:43:38 +03:00
Oliver Giles
4d2388c271 resolves #33: laminar start output should reference run number 2018-04-06 13:35:02 +03:00
Oliver Giles
68d08f369b resolves #32: build failure
Update to latest capnproto version
2018-02-27 08:54:22 +02:00
Oliver Giles
9c256815e4 resolves #29: graceful shutdown
on SIGINT/SIGTERM:
1. stop accepting new connections
2. send SIGTERM to all child tasks
3. wait for processes to end
4. drop all websockets
2018-02-24 18:53:11 +02:00
Oliver Giles
30f2203a3b resolves #28: compensate for server/client clock skew 2018-02-03 16:52:46 +02:00
Oliver Giles
46efb07285 test: add LaminarTest stub 2018-02-03 16:47:41 +02:00
Oliver Giles
e7cba68879 tests: extract pointer to kj::AsyncIoStream
Fixes a crash that happens on g++ 6.3 under debian but not
g++ 7.2.1 under arch. Instead of trying to move kj::AsyncIoStream
between each promise handler, just extract and use the raw
pointer and let attach() clean up the Own<> at the end
2018-01-27 19:13:53 +02:00
Oliver Giles
3b267967cf resolves #31: exception thrown on bad file descriptor
Read or writes to bad file descriptors threw exceptions, just log
this instead. Also make sure that LaminarClients are removed from
the list of clients when a connection is aggressively dropped, and
add test
2018-01-27 13:11:40 +02:00
Oliver Giles
ade58a202a tests: env lives in /usr/bin 2018-01-27 13:06:06 +02:00
Oliver Giles
3bc60ec8f4 add basic server test 2018-01-27 12:59:39 +02:00
Oliver Giles
5ff3bbe2bb add basic tests for conf, database and run 2018-01-26 13:07:02 +02:00
David Kalnischkies
ae961b97cb replace gif status indicators with unicode symbols 2018-01-08 08:03:46 +02:00
Oliver Giles
6e4c89bd73 improve web notification format 2018-01-05 10:50:50 +02:00
Oliver Giles
d7351c0c70 fix compile error on 32-bit Linux
On 32-bit Linux, time_t is a long. Laminar extensively uses
time_t but provided only int and int64 db access, making the
use of long ambiguous. Since there is no explicit use of int64,
and because on 32-bit Linux long and int are recognized as
different types despite being the same width, replacing the
int64 handlers with long handlers fixes the compile error
2018-01-04 08:40:10 +02:00
Oliver Giles
3b0efcac9d resolves #23: In-browser notification
This implements web notifications on job completion. Opt-in
by default, the preference is saved in js localStorage and
can be toggled directly on any page
2017-12-29 17:18:43 +02:00
Oliver Giles
93b428529e webui may be modified with custom style.css 2017-12-29 11:14:20 +02:00
Oliver Giles
6919a74d0a correct install dir for systemd laminar.service 2017-12-29 09:12:51 +02:00
Oliver Giles
e1a0c7bd0b resolves #24: notify and reconnect interrupted connections
A notification is shown on the webui when the websocket
connection is lost, and periodic retry is attempted
2017-12-23 17:15:48 +02:00
Oliver Giles
9eb90de5b1 readme: add note about github webhooks 2017-12-22 17:10:46 +02:00
Václav Valíček
1bd4300d1b Enable colored output for output logs 2017-12-21 08:57:24 +02:00
Oliver Giles
1f23ec5fb2 escape html tags in log output
While normally this isn't enough to prevent XSS, this output will only
appear in the body of a <pre>, and anyway the scripts are semi-privileged
2017-12-21 08:46:00 +02:00
Oliver Giles
3129f0e73b fix pedantic compiler warnings 2017-12-21 08:19:45 +02:00
Oliver Giles
e0a130f33d add named getters to RunSet
this improves readability by removing the index-based
get<> methods in favour of explicitly named methods
2017-12-20 09:02:15 +02:00
Oliver Giles
bb9486e066 use compliant include guards 2017-12-20 08:24:25 +02:00
Oliver Giles
9e1a65ccee server: minor websocket client handler refactor
Now explicitly closed connections on the client side are
closed with a clean error code. This is motivated by upcoming
work to detect broken websockets and automatically reconnect
2017-12-16 18:21:33 +02:00
Oliver Giles
eb5b900849 update README for 0.5 2017-12-11 19:06:32 +02:00