Comments (11)
Can you check whether this happened with previous commits? (might be hard to find it in the logs but I hope my fix for the intl flaky tests is not the culprit actually)
from sphinx.
Hm, now that I check, I do see another occurrence of it two weeks ago here: https://github.com/sphinx-doc/sphinx/actions/runs/7902157054/job/21567184034
I'm 99.9% confident that it's nothing to do with your changes; I think that the flakiness bug you fixed was a much more common cause of test failures and is properly resolved.
from sphinx.
The timeouts that are occuring here are reported by the requests
library, and are a timeout while waiting to receive response bytes from the server.
There doesn't appear to be any systematic problem during creation of test in-process HTTP(S) servers -- generally that seems to work. For whatever reason, though, this particular test appears flaky. My guess is that it's because it introduces marginally more complexity than some other tests that would otherwise, in theory, be equally affected.
Given the timeout-detection logic, it may be possible to wait for socket-response connectivity before yield
ing the server thread for testing -- basically, to run a form of test-server healthcheck on the thread to ensure that it's up-and-running before allowing the test suite to communicate with it.
In practice however, that would reduce to introducing another level of timeout; we can't wait forever for that healthcheck, because then the test suite itself could become susceptible to indefinite delays.
So I think what we should do is simply increase the timeout for the affected test. If we see it occur elsewhere perhaps we can increase the timeouts there too -- but I would prefer to localize the changes so that we can more easily determine whether there is indeed any common root cause or whether this is happenstance.
edit: add test server setup source code hyperlink
from sphinx.
In practice however, that would reduce to introducing another level of timeout; we can't wait forever for that healthcheck, because then the test suite itself could become susceptible to indefinite delays.
It seems that simply increasing the timeout for the affected test does not work reliably; other tests are indeed affected too (see test failures in #12050 for commit 396b8df for example).
So perhaps it would be worthwhile to add a healthcheck step, despite the duplication of timeouts. A larger timeout could be configured for the test HTTP(S) server healthcheck/setup phase, with a smaller timeout configured for the Sphinx linkcheck
build test cases.
from sphinx.
Would it work if we use different ports and not always the 7777? We coule rotate the ports being used from tests to tests.
from sphinx.
Would it work if we use different ports and not always the 7777? We coule rotate the ports being used from tests to tests.
I think that would only make a difference if the operating system waits/retries when binding to that specific port -- my understanding is that most operating systems do not do that, and simply return an error code if the port is already bound (in use). Since we don't see that error occur, the timeout appears to be unrelated.
from sphinx.
(I do think we might want to consider port rotation when parallelizing the tests.. but that's a different story :))
from sphinx.
Related Issues (20)
- Minify css and js HOT 2
- Autosummary lists functions but does not generate documentation pages HOT 3
- New line and line-brack doesn't work in cnfluance. HOT 10
- `objects.inv` is not generated deterministically when there are duplicate references HOT 3
- add_css = getattr(app, "add_css_file", app.add_stylesheet) HOT 3
- <short description for the feature>
- Unify docutils type annotations HOT 10
- Intersphinx cannot link to section headers with uppercase names HOT 8
- Add toc entry autofunction
- pre_border-radius not translating to latexpdf for .. warning HOT 7
- Imported string constant has wrong docstring of `str` HOT 4
- In autosummary, expose complete objtype information to templates
- Sphinx Viewcode.py IndexError list index out of range if child class file (.py) is smaller than parent class file. HOT 5
- Test suite: search: test fixture does not accurately represent the JS search index format HOT 2
- linkcheck inconsistent behavior from client HOT 1
- HTML Search: partially-matched titles are not included in search results.
- [HTML search] optimization: don't loop over all document terms and title terms during search. HOT 1
- Nested toc produces multiply-defined labels in LaTeX output HOT 4
- Can't extend builtin theme if it doesn't have explicit layout.html HOT 22
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sphinx.