This commit:
- Splits the reinitialization code for DirectoryServer.restart() method into a different method that can be called separately. This is necessary because quicksetup applications register writers with the log publishers before starting the server in order to listen for startup messages. Since the call to bootstrapServer removes all currently registered log publishers so there needs to be a way to re-register the writers with the server before calling startServer().
- Adds an upgrader step 'Preparing Customizations...' to give the user something to look at during the somewhat time-consuming process of starting starting the server prior to making customization changes.
- Adds a check for port access before the upgrader starts the server for the last time. If the port check fails, the upgrader exits successfully but with a warning. I have discovered that there are problems with the server's stopping and starting connection handlers asynchronously and the upgrader requesting quick stopping and starting of the server as it does to apply customizations and verify the upgrade. This is somewhat mitigated by the InProcessServerController having some sleep time added to the startServer and stopServer methods. Neil mentions that this should be resolved in the server code in the near future at which time we can remove the sleep calls.
- Added code to make sure the server has been stopped before upgrade continues.
- Changed the way the InProcessServerController writers are registered with the server after discovering that the set of log publishers is reinitialized when the server is bootstrapped.