Bug #54104 | WB should not use a fixed tcp port for its internal docs http server | ||
---|---|---|---|
Submitted: | 31 May 2010 13:16 | Modified: | 11 Jun 2010 10:47 |
Reporter: | Hartmut Holzgraefe | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Workbench | Severity: | S4 (Feature request) |
Version: | WB 5.2.21rc | OS: | Linux |
Assigned to: | Alfredo Kojima | CPU Architecture: | Any |
[31 May 2010 13:16]
Hartmut Holzgraefe
[31 May 2010 13:18]
Hartmut Holzgraefe
=== modified file 'plugins/wb.doclib/wb_doclib_grt.py' --- plugins/wb.doclib/wb_doclib_grt.py 2010-05-29 10:07:07 +0000 +++ plugins/wb.doclib/wb_doclib_grt.py 2010-05-29 10:35:49 +0000 @@ -58,9 +58,30 @@ App.get().set_status_text("Doc Library Opened") -def run_server(datadir, server_port, ready_event): +def get_free_port(bind = ''): + import socket + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.bind((bind,0)) # binding to port zero will actually bind to a free user port + port = s.getsockname()[1] + s.close() + return port + + +def run_server(datadir, ready_event): import mysqldoclib - mysqldoclib.serve_docs(server_port, bind='localhost', datadir=datadir, ready_event=ready_event) + import pprint + global server_port; + + retries = 10 + + while server_port is None and --retries > 0: + try: + server_port = get_free_port() + # there is a slight chance that the port gets taken before we use it again + # which is the main reason for the retry loop + mysqldoclib.serve_docs(server_port, bind='localhost', datadir=datadir, ready_event=ready_event) + except: + server_port = None server_port = None @@ -89,11 +110,11 @@ if server_port is None: ready_event = Event() - server_port = 8811 #datadir = "./modules/data/DocLibrary/" datadir = os.path.join(app.get_resource_path(""), "modules/data/DocLibrary") - thread.start_new_thread(run_server, (datadir, server_port, ready_event)) + + thread.start_new_thread(run_server, (datadir, ready_event)) # wait up to 1s for the doclib server to start ready_event.wait(1)
[2 Jun 2010 12:14]
Alfredo Kojima
Patch was applied, thanks for it!
[9 Jun 2010 13:01]
Johannes Taxacher
fix confirmed in repository. WB now starts the doc-pages-server on random free port on localhost
[11 Jun 2010 10:47]
Tony Bedford
An entry has been added to the 5.2.23 changelog: The integrated docs webserver listened on a fixed port - 8811, and was not able to handle the situation where this port may be used by another service, such as another MySQL Workbench instance.