[ 
https://issues.apache.org/jira/browse/COUCHDB-393?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul Joseph Davis updated COUCHDB-393:
--------------------------------------

    Attachment: couchctl.patch

This patch is a completely working implementation of grabbing the port using 
RPC. It adds an installed 'couchctl' command that you can use to print the 
port. Currently, this is the only functionality supported but if there's other 
stuff needed then that can be added easily.

Of note is that this patch now gives couchdb a default node name of 
'co...@host' so that it can be pinged by the RPC call. As such I included the 
patch on COUCHDB-381 so that the node name can be set to something else. 
couchctl requires knowing the node name to ping.

This patch adds some bits to the build system so I'm adding it and assigning to 
Noah to get his opinion before committing.

> 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
>         Attachments: couchctl.patch
>
>
> 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