Comments (3)
@shen-tian You can take at this ticket as point if you want. It's somewhat related to what you've been working on recently.
from nrepl.
I have a guess at what this could be, though not sure if this still happens. Think it's related to differentiating between execution errors, disconnection errors, and actual breakages in nrepl.
@sanjayl doesn't seem to be active anymore, but tagging in case..
Will queue this up :)
from nrepl.
Finally had a dig into this one. I can replicate some behaviour (sending unencodable values, e.g. (Object.)
in a message seem to cause a stall. This is not unique to the :value
slot, though I think depending on where in the middleware stack this was done, print
would have stringyfied any unencodable values in the :value
slot. This is caused by how bencode/write-bencode
works: it's recursive. Thus, it will start writing a map, before throwing an Exception that there's unecoded values inside. The fragment of a map, when sent, will cause the reader to stall waiting for "end of the map" that was never written.
- I didn't observe the "nothing sent on the network" effect, but this could be explained by
.flush
not being called after write. - This did throw an exception for me on the middleware side, but not sure how visible this could have been from a client's point of view, as this error kind of wrecks the transport. This might also be affected by where the
caught
middleware is.
I checked the state of the library circa April 2017, and the analysis holds.
I've prepped a PR that makes the bencode writes fail cleaner.
BTW, does anyone know what's the deal with the -unencoded
reading code here?
nrepl/src/clojure/nrepl/transport.clj
Lines 100 to 106 in 9b48053
I can't find any reference to this in cider or cider-nrepl. What would write -unencoded
?
from nrepl.
Related Issues (20)
- ClassCastException raised when connecting to nREPL server via nrepl+unix HOT 18
- nREPL 0.9 HOT 4
- Ability to control the sideloader middleware under a system property HOT 3
- Change groupid to org.nrepl
- Document better the lookup middleware return values HOT 2
- When a test fails, there is a set of parens around the actual result HOT 4
- Dynamically load .class files HOT 6
- Avoid illegal reflective access HOT 14
- Support TLS server sockets HOT 8
- Get repl statistics (most called functions, time spent on execution..) HOT 1
- [EASY] Reflection Warning (with solution)
- Recommended practices for tools to listen to nREPL evaluations HOT 3
- Can't define dynamic var in nrepl HOT 4
- nrepl transports should `read` with `{:read-cond :allow}` options HOT 2
- project.clj on the main branch is still set to 0.9.0 HOT 2
- Document the -f option to nrepl.cmdline
- java.lang.ArithmeticException: long overflow at nrepl.bencode$read_long.invokeStatic(bencode.clj:128) HOT 9
- test suite fails on MS-Windows
- Please add examples to CLI doc
- Interrupt is broken on JVM 20+ HOT 13
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 nrepl.