Forum .LRN Q&A: Guidelines on how to upgrade dotLRN

Collapse
Posted by Nima Mazloumi on
Dear all,

we plan to upgrade dotLRN in January. Therefore I seek your advice. Also my hope is that this thread will serve as a knowledge pool for others interested in the upgrade.

Here our current system:

Aolserver 3.x
PostgreSQL 7.3.4
SuSE Linux Prof. 9.1

We have 5.000 active users and 25.000 registered accounts and the system is in productive use since Nov. 2003.

Any summary of steps taken place, the problems faced and the solutions found during an upgrade to 2.1 would help.

For instance
- How should bug-tracker be upgraded?
- Are there any problems with content-repository?
- Which packages have no upgrade script?
- What about AOLServer 4 and SSL? Is it already working and what steps have to be taken for that upgrade?

Please post your experience here. Thank you very much in advance.

Greetings,
Nima

Collapse
Posted by Malte Sussdorff on
Upgrade Postgresql:

- Install 7.4.6 in paralell
- Either dump/import (works without problems) or do a direct database transfer between both running instances (it is somewhere detailed at the postgres site).

Upgrade AOLserver:

- Use latest code from CVS, especially with nsopenssl involved. Works like a charm with me, but you might want to confirm with MIT. Otherwise install pound for SSL and run AOLserver 4.09 behind it.

Upgrade .LRN:

- Which version do you come from in the first place?
- Bug Tracker upgrade works normally, if you are already at 1.2d1
- Content repository does not provide to be a problem, though I have not tested it with files stored within the database.
- Core .LRN packages have upgrade scripts, at least they have been working on a step by step basis and otherwise been fixed by Galileo, MIT or myself.
- In general: Use the APM (/acs-admin/apm) for the upgrade, not the installer.

Obviously you should run the upgrade on the copied 7.4.6 database so you still have your old data if something goes wrong :). And make at least one test run before, writing down all the steps you did in what order. And follow these steps once you do the final (live migration).

Collapse
Posted by Nima Mazloumi on
Malte,

thank you very much for your guidelines.

Here is what I have
- bug-tracker 1.3d
- dotlrn 2.0.3
- acs-kernel 5.0.4 (like most of the OACS packages)

Is the upgrade of AOLServer and PostgreSQL necessary? Why should I dump the database (except for backup purposes) and run it on 7.4.6? Won't the upgrade work otherwise?

So should we simply replace the packages folder with the latest from oacs-5-1 branch on a running test system and then use the APM? But what exactly should I use in APM? The only

I normally use the upgrade link on /acs-admin/install but I guess that is exactly what we shouldn't do? Why is that?

Greetings,
Nima

Collapse
Posted by Malte Sussdorff on
AOLserver and Postgres is not necessary, but recommended for performance reasons. Furthermore, dumping the database and installing it on 7.4.6 gives you the safe feeling that your old site will still work, even if the upgrade fails.

Please make a fresh checkout of *all* of oacs-5-1 (not only packages) and modify the resulting /www/*.adp to your needs. This is necessary due to changes in blank-master.adp and I think standard-master.adp as well.

Using the APM is the foolproof way. From what I heard, /acs-admin/install does not execute the upgrade APM callback procs correctly (sometimes). But maybe I'm only an old hacker that is attached to the /acs-admin/apm interface :).

Bug Tracker will not give you any trouble, neither should .LRN in my experience and definitely not OpenACS itself. Be warned though to make a check on the ACS Authentication issue which is desribed in the forums quite at length.

Anything else that might go wrong will be seen on the development server where you test the upgrade.

Collapse
Posted by Nima Mazloumi on
How should I use APM?

APM page offeres the following links:
- Create a new package
- Write new specification files for all installed, locally generated packages
- Load a new package from a URL or local directory.
- Install packages

Clicking on a package I am only offered the sections:
- package information
- manage
- reload
- xml .info package specification file
- disable/unistall

I cannot see any upgrade link. So how do you upgrade packages from APM? Via "Reload this package" or "Install packages." link?

Greetings,
Nima

Collapse
Posted by Malte Sussdorff on
Install Packages, it figures out automatically if an upgrade is needed or a new install.
Collapse
Posted by Nima Mazloumi on
Thank you. Why do we have several ways to install/upgrade packages in OpenACS? Wouldn't it make sense to have one working solution? I know this is not the right thread to ask but the UI of APM seems confusing to me. Maybe we can tune that up a little.
Collapse
Posted by Dave Bauer on
Nima,

Since you will test the upgrade first, you can use the regular install/upgrade page. It executes the same code and I have never heard of a callback problem. (Malte, if there is such a problem, please document it, file a bug and we should get it fixed.)

Nima,

The path to the APM is usually through a link called "Developer Admin". If you try the APM installer you will see it allows you to do some additional things, such as: force install if dependencies are not met or skip installation of SQL datamodel files. Obviously one would not want to try those things without knowing what was going to happen, but in most cases normal users installed a released version of OpenACS would not need to try that.

Actually we have found some callback problems (that do not happen if you do the same by *-drop.sql), but not exactly related to .LRN but as general bug in openacs. For instance, before-uninstall simply is not executed. We'll post them in the bug-tracker.
Collapse
Posted by Nima Mazloumi on
Should we upgrade

- Package by package or
- simply replace all packages on a running system
- ...

and then use acs-admin/apm?

Collapse
Posted by Hector Amado on
Hi, I finished the upgrade from 2.0.3 to 2.1.0b4  http://unis.galileo.edu 

 Here are some steps i followed:  
 (I am using cvs, postgresql) 

 Before upgrading the live site, create a copy of your site, a dump, to test
 and fix the problems with the upgrade scripts and your database. 

 - Make a tag of your working code or copy to a secure place. 
   I used
           cvs -q tag nameofyourtagdate

 - Make a dump of your database.

           pg_dump database > todaydate.dump    (verify the instruction for user or host)

 - Make a copy of  content-repository-content-files  if your store file in file
system instead of database.

           cp -r content-repository-files    .. . . 



Testing

  - Clean the new database you will create to test

          dropdb databasename 

  - Create the new database

          createdb -E UNICODE  databasename

  - Fill the database with the dump

          psql -f todaydate.dump  databasename


  - Get the working code

          cvs checkout  -r nameofyourtagdate

          or

          cp -r workingcode .... 


   - Remember to change the config.tcl   (ip, port, dbname, ...)

   - Copy the content-repository-files

   - Start the site


   Get the new code

     Get the fresh code, change your specific files, etc ...
     Use cvs for more convinience ..

     cp -r /path/newcode  .  

     or

     cvs -q update -dA  


   - Now browse to  /acs-admin/apm/packages-install

   - Check the new packages to install/upgrade and wait ...

     If there are errors, write the upgrade script and try to fix it or
     post the problem.   And start again  (dropdb, ...  )


   - If no errors, restart the server  (remember to check the config.tcl)


   - Login again and reload many times your browser (the css may be cached)


   - Check the old information ...



   With the new working code upgrade your live site.
   just update and install packages.



 Problems i had: 
dotlrn:
    tcl/apm-callback-procs.tcl

    I changed the apm_upgrade_logic from  2.0.3 2.1.0  to  2.0.3 2.1.0b4

 workflow:
    upgrade-1.2-2.0d1.sql

    I had a problem with this script because it alters a table:

    alter table workflow_fsm_action_en_in_st add constraint
    workflow_fs_action_en_in_st_pk primary key (action_id, state_id);

    The instruction crash because i had duplicate rows, I deleted the
    rows,

    delete from workflow_fsm_action_en_in_st where action_id='4'; ...

    Check the table before running the script.


file-storage:
   upgrade-5.1.0a6-5.1.0a7.sql

    I had a problem with a constraint, but it was a problem with a
    row in my system, i searched the row and change a title.


   static-portlet:
   upgrade-2.0.3d1-2.0.3d2.sql

    This script was not run in the upgrade, check if it is in the
    list of scripts to run, if not run it manually after the upgrade.

   psql -f      packages/static-portlet/sql/postgresql/upgrade/upgrade-2.0.3d1-2.0.3d2.sql ....  



   Greetings,
   Hector