Bug #44444 Service Manager upgrade installer does not read tomcat port from server.xml file
Submitted: 23 Apr 2009 18:06 Modified: 25 Jun 2009 13:53
Reporter: Diego Medina Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Enterprise Monitor: Installing Severity:S2 (Serious)
Version:2.1.0.1030 OS:Any
Assigned to: BitRock Merlin CPU Architecture:Any

[23 Apr 2009 18:06] Diego Medina
Description:
If you edited the server.xml file inside the tomcat/conf/ folder, and changed the tomcat port, running an upgrade will not show you the new port number, but the one you used at the installation time.

It also does not remember that you enabled SSL

How to repeat:
1- Install the service manager (default ports and enable SSL)
2- Edit the file apache-tomcat/conf/server.xml

Look for 
   <Connector port="18080" maxHttpHeaderSize="8192"

and replace it by 

   <Connector port="28080" maxHttpHeaderSize="8192"

3- Restart the service manager
4- Run the upgrade installer 
5- Note that the SSL check box was not enabled and the tomcat port shows 18080 instead of 28080

Suggested fix:
Read the server.xml file when filling in the default values for an upgrade
[24 Apr 2009 13:11] BitRock Merlin
The current upgrade installer is taking the port information from the previous "server.xml" file. The problem is that it is not possible to take the port directly from the Connector entry in the "server.xml" file, since there is no way of differentiating them. The work around that we are using is taking the ports from comments in the file. The upgrade installer takes the ports and whether SSL is enabled or not from the following comments:

<!-- Define a non-SSL HTTP/1.1 Connector on port 18080 -->

<!-- Define a SSL HTTP/1.1 Connector on port 18443 -->

<!-- MERLIN_SSL_ENABLED -->

What we suggest is to document this behavior and if the user needs to
upgrade an installation whose ports have changed, ask them to also
change the port values in the comments and include/remove a
MERLIN_SSL_ENABLED tag as needed
[27 Apr 2009 23:59] Mark Matthews
SSL connectors have "sslProtocol="TLS"" in the element that defines the connector. This should be relatively straightforward to either pick off using XPath, or via whatever you're using to parse things now.

I'd prefer to see a more robust approache, we all know that comments *drift* from the sources they refer to! :)
[28 Apr 2009 0:00] Mark Matthews
(Note, there's also an "SSLEnabled='true'" in the same element.)
[1 May 2009 21:38] Andy Bang
I believe the fix for this (as well as the related Bug #44525) is to just use (or copy over) the existing server.xml file, and only overwrite the things we ask for during installation (i.e. the 3 Tomcat ports as well as whether SSL is enabled or not).  As Mark has noted, you should be able to use XPath to get to the correct things.
[21 May 2009 15:32] BitRock Merlin
Patch sent to Keith.
[27 May 2009 15:17] Keith Russell
Patch installed in versions => 2.1.0.1050.
[29 May 2009 18:39] Marcos Palacios
Verified fixed in Monitor build 2.1.0.1050.

However, due to new bug http://bugs.mysql.com/bug.php?id=45198, it is recommended to re-test this fix after the 45198 bug is fixed.
[2 Jun 2009 16:23] Marcos Palacios
Verified still fixed in build 2.1.0.1053.
[25 Jun 2009 13:53] Tony Bedford
An entry was added to the 2.1.0 changelog:

f you edited the server.xml file inside the tomcat/conf/ folder, and changed the Tomcat port, running the upgrade installer did not show you the new port number, but the one you used at the installation time.

It also did not remember that you had enabled SSL.