Specification

Update/Dependency manager

Yanel should be able to update itself.

Hence there is a resource-type "update-webapp" which provides an update-manager. The update-manager reads the install.rdf (WEB-INF/classes/install.rdf) of the locally installed/deployed Yanel and gets the update-link (updateURL) from it. The update-link points to an update.rdf file located on the update-server (e.g. http://www.yanel.org/downloads/update.rdf, which is located within a sub-realm of the yanel-website realm) which describes all the relevant changes and the versions accordingly (Also see proposal 1).

The update.rdf describes the updates (version, compatibility, the link where to get the particular update). The update-manager compares the current version (install.rdf) with the version provided by the update.rdf and displays all the version which the current Yanel could update to.

The user can choose which version she wants to update to. The update-manager then does a backup of the current yanel [problem1] downloads the war of the update version, merges the changes in the config files [problem2] (which are listed in the install.rdf) into the downloaded update and deploys it. If the user is not happy with the updated version, then she can revert the update. The update-manager would deploy the backup again.

Problems:
  • [problem1] To backup the current version yanel should block all request while backuping to prevent inconsistency
  • [problem2] To allow a merge of the config all config files should be xml rather than property files
  • If the update would fail and break yanel, the update-manager would not be available anymore to manage the revert. Maybe the update-manager should stay in a separate servlet.
  • If the update-manager should handle every servlet container, then complexity will increase. Maybe we should limit it to tomcat which comes with the binary version.
  Proposals:
  • [Proposal 1] To provide the updates (including update.rdf) there should be a realm which contains the updates. This realm would not be included within yanel.
 


Your comments are much appreciated

Is the content of this page unclear or you think it could be improved? Please add a comment and we will try to improve it accordingly.