-
Notifications
You must be signed in to change notification settings - Fork 552
ApacheUnixSocket throws Unimplemented instead of calling appropriate JNR-unixsocket methods #146
Comments
So that |
Yeah here's the stack trace:
|
I should also mention that I do not have the docker remote api enabled. I'm running on arch linux |
Are you running docker? If so, how can you run docker without the docker On Tue, Mar 24, 2015 at 12:50 PM, Chris Holcombe notifications@github.com
David Xia |
Yup I'm running docker. I probably misspoke about the remote api. My docker socket looks liked: Here's my systemd files: docker.socket: |
From the stack trace it seems like something is happening at "jersey.repackaged.com.google.common.util.concurrent.AbstractFuture". What version of java are you using? |
|
Hi, I'm second pair of eyes with Chris on this one: When we type 'docker ps' at the commandline, we get both docker logs and a response. When we run the docker test client, we get neither. It appears that Jersey is getting something which is causing it to throw Unimplemented (404?) The ExecutionException is the consequence of async() going off and setting a SettableFuture. We didn't manage to debug into async() yet. That might be today's exercise - something is clearly going wrong in the async thread and is losing a stack trace. Is it possible to either And we will: Actually, (d) is the first thing we must do: Don't just log the exception; manually walk the cause chain and log each one. Might be something in there. |
Update: i backed off to version 2.7.0 and that seems to work. I get a ping response back from the docker service. |
The reason for using Another thing would be to check your |
Interesting that 2.7.0 works. If you have time to do something kind of like Alternatively, if you're using Maven, perhaps you need the shaded artifact instead of the normal one: The shaded artifact was the default with v2.7.0, but is not with the latest versions (see link above). |
I'm using gradle for the build. It looks like version 2.7.18 doesn't reach docker. The docker logs don't show any activity. With 2.7.0 it shows normal activity and gets the ping back. |
With gradle it would still be the same thing with the shaded artifact being the default prior to v2.7.7. You can explicitly specify the shaded version for 2.7.18 like so: |
Err, take my advice on gradle with a bit of salt actually — syntax might be wrong. But the basic idea is that you want to specify |
2.7.6 is the broken version. I'll bisect to see what I can find. |
2.7.5 works OK. :) |
This was introduced in 2.7.6: |
Heh. While I really love JNR and its implementations and policies, the gesellix unix socket code has always been my favourite for that particular task. We're working on finding you more information about this bug. |
|
apache httpclient version: |
It appears that JNR does provide the method we need: |
Hey, sorry for missing this thread. I've run into this exact issue. In order for it to happen, one must be using httpclient > 4.3.2 and there needs to be some package that enables debug-level logging. Basically httpclient added an extra debug statement to print out connection information ( https://issues.apache.org/jira/browse/HTTPCLIENT-1462, apache/httpcomponents-client@338b0bd ). This seems to attempt to call getRemoteSocketAddress(). I started implementing some more methods that might be called somehow by other parts of httpclient : rgrunber@a9ca94e but got sidetracked for a while with other things so didn't have the chance to open a pull request. If it looks reasonable to you, I could open a pull request for review. |
I'd love to review a pull request but I can't verify any longer that it works. The source I was working on a nebula is now gone. The company closed down :( |
Is this still an issue for folks? |
I can reproduce by running
from the master branch. The build should fail with the various test runs hitting
If I apply rgrunber/docker-client@a9ca94e and re-run the command, things seem to work as expected. |
Yes, not working for me. |
ApacheUnixSocket provides API for a client to communicate with an existing unix socket, so the API related to the server-side 'bind' command isn't necessary. They can simply be made to return whichever values indicate an unbound state. Fixes #146
ApacheUnixSocket provides API for a client to communicate with an existing unix socket, so the API related to the server-side 'bind' command isn't necessary. They can simply be made to return whichever values indicate an unbound state. Fixes #146
@rgrunber I'm unable to repro on my machine (Mac OSX 10.10.3, boot2docker 1.6.0, docker 1.6.0) with the command you gave above. Nonetheless, I opened a PR here (#191). @SaschaMoellering @cholcombe973 @shevek-nebula can you guys try the PR out and see if it fixes the issue for you? |
@davidxia On my Mac it's working perfectly fine, I just have problems on our Jenkins slaves running Debian Linux. Thanks for the PR, I'll try it. |
This seems to solve the problem, thx. |
I'm running arch linux and I'm unable to get the example working. I'm using docker version:
Docker version 1.5.0, build a8a31ef
It seems to ignore this URI that I give it and tries to connect to localhost:80
Then it fails with this:
Any insights? I went deep with the debugger but couldn't figure out why this was happening.
The text was updated successfully, but these errors were encountered: