Skip to content

v3.3.0

Compare
Choose a tag to compare
@nilskuhn nilskuhn released this 19 Nov 15:48
· 5231 commits to master since this release

Changes from previous release

  • Intgerated Liquibase for automatic database updates. Removed Hibernates dbCreate configuration from all DataSources. From now on all scheme and/or data updates get applied via liquibase changelogs at startup, automatically.
  • Arbitrary sets of jobs can now be saved as job sets in job list view. These sets can be used to undo or repeat updates like activation or deactivation for exact the same group of jobs.
  • Added matrix view for visualisation of browser-connectivity-weights.
  • Bugfix: NextRun in jobList is now correct when using german language.
  • Bugfix: Legends of graphs on CSI- and EventResultDashboard are now correctly summarized for all cases.

Database updates

With this release we integrated Liquibase via database-migration plugin.

This release contains a root changelog with all the change sets to create the complete osm database for this release version: grails-app/migrations/changelog.groovy. If you start with a fresh installation without a legacy database you can just start your application, the scheme gets created automatically and the changelog get marked as applied in your database. On subsequent startups with the same osm version no database change sets get applied.

No more manual database updates from now on.

Initially update legacy database

If you have to update a legacy database of a previous osm version you will have to do the following steps once to update your database scheme to the actual state. Because your database can be in very different states dependent on the osm version you are running, nobody can guarantee these steps will lead to a valid database in all cases.
So if you care about your synthetic performance measurements results DUMP YOUR ACTUAL DATABASE before working out the following steps.

  1. For documentation purposes you should create a liquibase changelog of your actual database and your actual domain classes before you start with the update. These changelogs can help to reproduce problems with the update.

    Within your version of OpenSpeedMonitor before updating the software:

    grails dbm-generate-gorm-changelog <date>-GORM-complete-changelog.groovy
    grails dbm-generate-changelog <date>-DATABASE-complete-changelog.groovy
    

    <date> should be replaced with an actual timestamp.

  2. Update your version of OpenSpeedMonitor to this release version.

  3. Create a changelog containing all changesets necessary to update your database to the latest domain class state:

    grails dbm-gorm-diff legacy.groovy
    
  4. Add this changelog to your root changelog

    grails dbm-register-changelog legacy.groovy
    
  5. Remove imports of all other (official) liquibase changelogs temporarily from root changelog. Root changelog should look like this:

    databaseChangeLog = {
        //include file: '2015-11-18-SCHEME-initial-liquibase.groovy'
        //include file: '2015-11-18-DATA-set-initial-csi-transformation.groovy'
        //include file: '2015-11-18-DATA-multiply-csi-values-by-100.groovy'
        include file: 'legacy.groovy'
    }
    
  6. Apply changelog by running grails dbm-update. All the change sets necessary to update your legacy database scheme get applied to your database. Dependent on the age of your database scheme this can last a while.

  7. After successful dbm-update your database scheme should be in sync with the domain classes/gorm now. Add the actual SCHEME liquibase changelog again. (Optional: Remove import of already applied legacy changelog from root changelog.) Root changelog should look like this:

    databaseChangeLog = {
        include file: '2015-11-18-SCHEME-initial-liquibase.groovy'
        //include file: '2015-11-18-DATA-set-initial-csi-transformation.groovy'
        //include file: '2015-11-18-DATA-multiply-csi-values-by-100.groovy'
    }
    
  8. Now, you can mark the actual SCHEME liquibase changelog as already applied. Otherwise it will run with the next start of OpenSpeedMonitor again, failing because all the db artefacts already exist.

    grails dbm-changelog-sync
    
  9. Add the two DATA liquibase changelogs again:

    databaseChangeLog = {
        include file: '2015-11-18-SCHEME-initial-liquibase.groovy'
        include file: '2015-11-18-DATA-set-initial-csi-transformation.groovy'
        include file: '2015-11-18-DATA-multiply-csi-values-by-100.groovy'
    }
    

    They apply some data updates necessary to run the actual version of OpenSpeedMonitor and will run with the next start of the application.

You are ready to go now - No more manual database updates from now on.