New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
initial minimal h2o webserver integration #14585
Conversation
To enable it as I see its |
Yep i have to also fix couple of bugs and child support |
Can you add a small list of pending tasks in the description so that we can follow along? |
81fcb36
to
2c6e6c6
Compare
added, child support is working now (I redid it with "uberhandler" as opposed to registering paths for every child as I had it working previously, this way it is more effective) |
|
@underhood would it make sense to add this to buildinfo or anything like that if there could be some period of time where both old and new webserver can be run in parallel by users? |
It’s failing on 64-bit ARM due to undefined function references, not on POWER (the POWER build job is just getting cancelled due to the 64-bit ARM build failing). Link to the failing logs for the most recent build as-of this comment: https://github.com/netdata/netdata/actions/runs/4279728307/jobs/7455048379 That said, this needs to be fixed before this gets merged, period. Without the all the static builds working, we do not publish any static builds for nightlies or releases (or any source tarballs for that matter), due to limitations in how GitHub Actions dependency handling between jobs works. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Is there some reason the Makefile components need to be in the main Makefile instead of a sub-directory for the new web server?
- Is there a particular reason that we are not even trying to support using a system copy of libh2o? I get that this may be a bit tricky, but I was under the impression that it was understood at this point that we need to have such support for any dependency that is both widely available and does not involve a custom patches (and AFAICT, libh2o fits both requirements) so that the few cases of third-party packaging that we do functionally support will actually build the relevant features. The fact that libh2o is going to ultimately be a mandatory dependency does not sidestep that issue with vendoring.
EDIT: just noticed it is failing 64-bit arm now, previously it was always failing ppc64le. so yep I will have to investigate this and fix.
|
I plan to add that in following PR. For now I went with what h2o itself recommends and that is static linking and intgrating h2o into the project |
@Ferroin how to see here https://github.com/netdata/netdata/actions/runs/4279728307/jobs/7455048379 |
after latest changes I seem to have correct behavior:
Since I am not really sure what CI is doing here as it is using some caches etc. (by looking at the output it seems it is starting build from middle) and I dont see a way how to actually see commands used to build netdata and/or output of configure script I am not sure how to diagnose this. |
@Ferroin @tkatsoulas I can't really follow the CI process here as it seems to use some kind of cache for the ppc64le. Can the problem be there, how was that cache generated? It looks like we are not doing full build here. How do I reproduce this locally? |
Hello @underhood , I am starting testing your PR today, and I observed that we are having different warning when we compile with CFLAGS: CFLAGS="-Og -ggdb -Wall -Wextra -fno-omit-frame-pointer -Wformat-signedness -fstack-protector-all -Wformat-truncation=2 -Wunused-result -DHAVE_BACKTRACE=1 -DNETDATA_TRACE_ALLOCATIONS=1 -DNETDATA_DEV_MODE=1 -DNETDATA_VERIFY_LOCKS=1" In this file you have what was written in my Of course the majority, if not all, are from H2O. Can we hide this? |
I am already hiding some (mostly ssl 3 deprecation warnings) i can add |
This reverts commit f18d57e.
a6e15d9
to
cd29c78
Compare
@stelfrag fixed merge conflict caused by ML BUT the WEBRTC PR went in meanwhile and changed the struct web_client so I will have to do some changes |
ok should be updated |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I only could retest this PR after disable ML, but issue is not related to it, LGTM!
thanks for review I will merge immediately after new release (to not delay current one in case of trouble) |
Summary
Uses h2o as webserver for netdata. Currently will run alongside (on port 19998) the old webserver (port 19999) if enabled.
By default disabled. Enable by
netdata.conf
:Recommended to use SSL with:
In such case if you do
https://127.0.0.1:19998
you will get HTTP 2 support (which works only over SSL).Currently biggest limitation is no support for streaming. I will have to investigate how to do this without modifying h2o.
TODO:
libh2o.a
ourselves insteadThis also uncovered multiple bugs on local dashboard code e.g.:
127.0.0.1//api/v1/info
that is requested by dashboarhost/uuid
instead ofhost/uuid/
our new webserver handles both url correctly (by sending index page for a chile) but dashboard will send subsequent request wrong if former URL form is used.Test Plan
Additional Information
For users: How does this change affect me?