Uploaded image for project: 'CouchDB'
  1. CouchDB
  2. COUCHDB-393

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

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Blocker
    • Resolution: Fixed
    • 0.9
    • 1.0
    • HTTP Interface
    • None
    • Ubuntu 9.04

    Description

      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

      Attachments

        1. couch_uri_var_run_couch.patch
          2 kB
          Filipe David Borba Manana
        2. couch_uri.patch
          1 kB
          Benoit Chesneau
        3. couchctl.patch
          12 kB
          Paul Joseph Davis

        Activity

          People

            nslater Naomi Slater
            aquarius Stuart Langridge
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: