incubator-couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul Joseph Davis (JIRA)" <j...@apache.org>
Subject [jira] Commented: (COUCHDB-393) Cannot discover currently running http port if ini file specifies port 0
Date Sun, 12 Jul 2009 22:57:14 GMT

    [ https://issues.apache.org/jira/browse/COUCHDB-393?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12730159#action_12730159
] 

Paul Joseph Davis commented on COUCHDB-393:
-------------------------------------------

The way I implemented this uses Erlang's RPC calls to query the value of a running CouchDB
node. To simply switch the -p flag back to couchdb would probably require dropping the entire
implementation and going with writing a file after the server socket is opened etc etc. Going
to a file based system would also mean that it wouldn't make any sense to keep around the
-n flag.

So basically, if you think we should do file writing then that's cool, but if we want the
RPC style so that we can add different types of introspection for sysadmins then the current
system would probably be more future proof.

For reference, I was pulling this pattern from rabbitmq's rabbitmqctl command that does similar
things.

> 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
>            Assignee: Noah Slater
>         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.


Mime
View raw message