Table of Contents
This document is a complete list of things that may have to be considered when updating a BASE installation to a newer version. The Section 21.1, “Upgrade instructions” section only include the most recent information that is needed for updating the previous BASE version to the current version.
If you are upgrading from BASE 2.8 or lower and your existing
database is not using UTF-8 you must convert the database to
UTF-8 before you execute the ./updatedb.sh
script.
BASE 2.9 includes a utility that can convert an existing MySQL
database. After installing the BASE 2.9 files, but before
running the ./updatedb.sh
script, execute the following
on the command line:
cd <base-dir>/bin ./onetimefix.sh utf8 -x
The -x
option makes the script update the database immediately.
You can leave this option out to have it generate a SQL script file
(convert-to-utf8.sql
) instead. The script will by default
not try to convert tables that it already thinks are using UTF-8. If the script
for some reason is incorrect when detecting this, you can use the option
-f
to force conversion of all tables.
The conversion utility only works with MySQL. PostgreSQL users should instead use a backup and restore using as described in the PostgreSQL manual. Eg. dump the existing BASE database, create a new database that uses UTF8 and restore the backup into the new database.
BASE 2.7.2 fixes a serious bug in the LOWESS plug-in shipped as a part of the BASE package. The bug is found in all BASE versions between 2.0 and 2.7.1, and has caused incorrect normalization values to be calculated. All data that has been normalized with the LOWESS plug-in prior to BASE 2.7.2 should be considered invalid and needs to be re-normalized with the fixed version. Downstream analysis steps that has used the incorrectly normalized data also needs to be redone. For more information about the bug see http://base.thep.lu.se/ticket/1077
BASE 2.7.2 includes a utility for finding all experiments/bioassay sets that
includes data normalized with the LOWESS plug-in. An administrator can use
this utility to extract a list of all experiments/bioassay sets that needs to be fixed.
The utility can also tag the name of the found experiments/bioassay sets with
FIX LOWESS
to make it easier to find data that needs to be fixed.
The utility can't see any difference between data normalized with the old version and the fixed version. It will simply report all data that has been normalized with the LOWESS plug-in. Only use the utility a single time right after the upgrade to BASE 2.7.2.
The utility is a command line program that should be executed on the BASE application (web) server.
cd <base-dir>/bin ./onetimefix.sh lowess_warn -u <login> -p <password> -f
We recommend running the utility as the root user. The -f
option is optional. If it is included the found experiments/bioassay sets
are tagged with FIX LOWESS
, otherwise only a list with the
information is generated.
If you are upgrading from older BASE versions to BASE 2.7 or higher you must also make sure that you are running Tomcat 6 or higher. Earlier BASE versions only required Tomcat 5.5. If you are not already running Tomcat 6 you need to upgrade. Other servlet engines may work if they implement the Servlet 2.5 and JSP 2.1 specifications.
Older releases of BASE 2 used to create indexes for many columns in the dynamic database. The same columns are part of the primary key for the tables so the indexes are not really needed. The result is very bad performance since the database engine sometimes get stuck in "index update" mode making the entire server very slow. BASE 2.4.4 no longer creates the indexes. Indexes on existing tables should be dropped to increase the performance. Tests have shown a 50-90% decrease in execution time for some plug-ins (http://base.thep.lu.se/ticket/294).
Removing the indexes is very simple. After the server has been upgraded following the usual instructions below, issue the the following commands:
cd <basedir>/bin ./dynamicdb.sh -v -dropindexes
Skip the -dropindexes
option to do a dry
run without actually deleting the indexes.