Cannot discover currently running http port if ini file specifies port 0
------------------------------------------------------------------------

                 Key: COUCHDB-393
                 URL: https://issues.apache.org/jira/browse/COUCHDB-393
             Project: CouchDB
          Issue Type: Improvement
          Components: HTTP Interface
    Affects Versions: 0.9
         Environment: Ubuntu 9.04
            Reporter: Stuart Langridge


It is currently not possible, if the ini file specifies port 0 as the http port 
(so that the OS chooses a random port) to discover which port the OS actually 
chose.

It would be nice if the currently running port was made available in the 
statusline output (couchdb -s), but a log statement would be adequate; some way 
that an external script can discover which port a running CouchDB is listening 
on.

Edited discussion from #couchdb:

<bitdiddle> aquarius: well at a glance it appears couch_http passes the 0 to 
mochiweb_http which passes it to the mochiweb_socket_server, which passes it to 
gen_tcp, an erlang module that lets the underlying OS assign it. 
mochiweb_socket_server then grabs that port and stores it. It has a get method 
to retrieve properties but that needs to be exposed to mochiweb_http so it 
would take a little work to do it. It's probably a JIRA ticket, unless someone 
else sees a quicker approach
<davisp> bitdiddle: you got that far and didn't find it?
<aquarius> davisp: is there a better way to find the port?
<davisp> oh, is that not the bind port?
 I was just thinking a log statement
<aquarius> davisp: the problem is if you specify 0 as the bind port (so the OS 
chooses a port), how do you find out what was chosen?
<davisp> aquarius: you have to look at the port returned by the socket
 aquarius: in other words, CouchDB was never written to do that
<davisp> AFAIK
<bitdiddle> davisp: I found it, just needs some work to expose it
<davisp> aquarius: and by do that, I mean, we never put in a statement to log 
that
<bitdiddle> mochiweb_http is the module that needs to bubble it up
<aquarius> davisp: I don't really mind whether it's a log statement or it's 
exposed to couchdb -s (the latter seems tidier to me, but whichever), I just 
want to be able to start couch on port 0 and then later find out which port got 
chosen :)
<davisp> aquarius: for the time being you can use something like netstat or 
lsof, but we'll get a log statement in there or something



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to