When upgrading by performing a rolling restart, realized that there was no way to determine the version of a running tserver other than using ps to get start time or maybe a versioned package on the classpath.
A typical deployment structure seems to be lay down the Accumulo directories with a version and then use a symbolic link to point to the version that is used at run-time. As an example:
/usr/local/accumulo/accumulo-latest --> /usr/local/accumulo/accumulo-1.6.3
To upgrade without a complete shutdown, we lay down the new version, update the symbolic link and then perform a rolling restart of the tservers, with scripts, env,... using the symbolic link to specify which version are used.
Realized that if the rolling shutdown failed for any particular tserver, it would keep running the previous version. The only way to determine if we were running the desired version was to use ps and check the running time of the tserver process.
The could also be a situation were a "dead" server would be offline during the upgrade and not receive the new version. If the server was resurrected and services started before updated versions are installed it could be difficult to determine exactly what version of the tserver was running.
It would be nice if there was some way to ask a running tserver what version it is. That way, post-upgrade we could confirm that all running tservers reply with the expected version.
|Add Shell command to display full status of servers||In Progress||