Comments (3)
Hi Kyle- I'm not aware off-hand of any reason why a request would both complete successfully and throw.
From a quick skim of the code, there's a retry mechanism here that seems to be intended to work around connections incorrectly marked as keep-alive.
It's not immediately obvious to me how that'd cause a problem, but it's possible there's a bug somewhere - would need to look more closely.
Can you share any more info re: your http-kit version, OS, and what you've observed that makes you suspicious?
from http-kit.
This is with httpkit 2.7.0, OpenJDK 21.0.1 2023-10-17, Linux Mint 21.2 "Victoria". I'm seeing odd behavior in a Jepsen test: sometimes an HTTP request throws "connection refused", but the request's effects (which are unique) are nonetheless visible in future reads of the system. Sometimes this sort of thing happens when a client, say, issues a request, the request arrives at the server and is processed, but the connection fails before receiving an ack, the client issues a retry, the retry hits conn-refused, and the client throws that error instead of the original timeout/reset. I'm really not sure about this though--it seems odd that we'd ever retry a POST request at all, I don't have a reliable repro case, and the test suite that I'm seeing this behavior with is kind of a pain in the ass to run.
It's entirely possible this is some kind of mistake on my end--I just haven't caught it yet. Figured I'd ask in case there was an obvious answer at hand. ;-)
from http-kit.
Thanks for the extra context 👍
Figured I'd ask in case there was an obvious answer at hand. ;-)
Nothing immediately obvious that I know of, but I'm also not too familiar with http-kit's client code so would need to look closer to be sure.
Are you able to reliably reproduce the odd behaviour?
If so, one idea might be to try replace http-kit client with an alternative if feasible (e.g. clj-http) to see if the problem persists or not. If that'd be too cumbersome, might be worth at least trying http-kit v2.8.0-beta3 just to rule out the possibility of some bug that's already been fixed.
Otherwise will try take a closer look at this the next time I'm doing batched work on http-kit.
Good luck!
from http-kit.
Related Issues (20)
- Outdated http.async.client fails to compile HOT 2
- 2.8.0 beta1 blows up size of babashka image HOT 1
- Capture number of processors at runtime in a graalvm binary HOT 2
- http-kit client accepts some bad SSL certificates by default HOT 2
- Issue preventing non-keep-alive benchmarks HOT 1
- Race condition in TimerService.scheduleTask HOT 2
- Ring websocket API support HOT 4
- Problem in native-image and HttpUtils when using virtual threads HOT 11
- 2.8.0-beta2 has CIDER dependencies HOT 3
- CURL and finagle failing to parse :set-cookies with '\n' HOT 13
- Unix socket benchmark HOT 1
- It will turn headers into camel format HOT 2
- logger-warn gets rebound HOT 1
- logger-warn and error-warn are passed in wrong order to HttpServer constructor HOT 1
- Request Map doesn't contain information about authority HOT 8
- http-kit v2.8.0-RC1 HOT 1
- http-kit v2.8.0 final HOT 1
- Consider adding `Content-Type: text/plain` to HTTP 500 response in `org.httpkit.server.HttpHandler#run` HOT 6
- v2.7.0 SNI change broke connections to plain IP addresses with SSLHandshakeException "Hostname or IP address is undefined." HOT 8
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 http-kit.