1.6.9 > 1.8.9+ Freeze - Scroll to the continue button - Forum module

1.6.9 > 1.8.9+ Freeze - Scroll to the continue button - Forum module

by Andy Hawkins -
Number of replies: 6
Upgrading 1.6.9 to 1.8.9+

OS - W2003 server
PHP 5.2.4
MySQL 5.0.45
Apache 2.2.6

MySQL strict mode OFF
adodb.inc.php edited to strip comments (as per http://moodle.org/mod/forum/discuss.php?d=58264)

Upgrade works OK including database upgrade and role assignments, groups upgrade OK, modules seem to upgrade OK but then stops during forum

Hangs at scroll to continue button but there is not one
Status bar shows page 'done'

Checked forum, especially -
http://docs.moodle.org/en/Upgrading_to_Moodle_1.8

http://moodle.org/mod/forum/discuss.php?d=110351

also
http://docs.moodle.org/en/Installation_FAQ#Installation_hangs_when_setting-up_database_tables

The only non standard module is 'book' - I have put in place v1.8 for this and it reported upgrade/config OK for this module at start of the page

Have checked the following -


MySQL limits - all are set to 0 for the user that connects (assume this is no limit according to http://dev.mysql.com/doc/refman/5.0/en/user-resources.html)
There is no .htaccess file in the root of the moodle folder
(Adding a .htaccess file with the Addtype statement ---- crashes the display in the browser)

The PHP memory limit is 128M
Have changed this to 256M
and increased script timeouts to 120 (more than time it takes until error occurs)

Incremental upgrade - I am upgrading from 1.6.9 to 1.8.9+ as recommended (missing out 1.7)
The upgrade is being tested on the local server (in a copy of the live system) - ie same as setting up locally and then uploading

also checked
http://docs.moodle.org/en/Errors_FAQ
http://docs.moodle.org/en/Installation_FAQ
http://docs.moodle.org/en/Unexpected_installation_halts
http://moodle.org/mod/forum/discuss.php?d=79651#p546720 (same error - but solution not explained - posting here also as that was an old thread)
and many others

Cannot display errors as working with moodle copy but on a server that is running other production php systems
Have set up logging - to file - file shows - nothing at this point

fopen - have looked at the disucssion - seems to affect only when blank page occurs

Always stops in same place.

What module comes next after forum? Maybe that is stopping it?

Any help at all is now very welcome after several hours trying to solve this and applying various fixes to get this far.

Possible we have missed something obvious given all permutations and forum search overload.

TIA

Average of ratings: -
In reply to Andy Hawkins

Re: 1.6.9 > 1.8.9+ Freeze - Scroll to the continue button - Forum module

by Andy Hawkins -
OK - I repaired the tables for the forum module and the glossary module in case of corruption - no change.

Here are the last sections of the output in case they give any clues -
(mysql): SELECT name FROM mdl_resource WHERE id = '3580' LIMIT 1

(mysql): SELECT * FROM mdl_resource WHERE id = '3580' LIMIT 1

(mysql): UPDATE mdl_course SET modinfo = 'a:2:{i:4561;O:8:"stdClass":6:{s:2:"cm";i:4561;s:3:"mod";s:5:"forum";s:7:"section";s:1:"0";s:4:"name";s:10:"News+forum";s:7:"visible";s:1:"1";s:5:"extra";s:0:"";}i:4562;O:8:"stdClass":6:{s:2:"cm";i:4562;s:3:"mod";s:8:"resource";s:7:"section";s:1:"0";s:4:"name";s:30:"Elizabethan+Parliaments+Y13+A2";s:7:"visible";s:1:"1";s:5:"extra";s:0:"";}}' WHERE id = '217'

(mysql): SELECT cm.*, m.name as modname FROM mdl_modules m, mdl_course_modules cm WHERE cm.course = '31' AND cm.module = m.id

(mysql): SELECT * FROM mdl_course_sections WHERE course = '31' ORDER BY section ASC

(mysql): SELECT name FROM mdl_forum WHERE id = '73' LIMIT 1

(mysql): SELECT name FROM mdl_resource WHERE id = '646' LIMIT 1

(mysql): SELECT * FROM mdl_resource WHERE id = '646' LIMIT 1

(mysql): SELECT name FROM mdl_resource WHERE id = '962' LIMIT 1

(mysql): SELECT * FROM mdl_resource WHERE id = '962' LIMIT 1

(mysql): SELECT name FROM mdl_label WHERE id = '134' LIMIT 1

(mysql): SELECT * FROM mdl_label WHERE id = '134' LIMIT 1

(mysql): SELECT name FROM mdl_resource WHERE id = '2246' LIMIT 1

(mysql): SELECT * FROM mdl_resource WHERE id = '2246' LIMIT 1

(mysql): SELECT name FROM mdl_resource WHERE id = '2247' LIMIT 1

(mysql): SELECT * FROM mdl_resource WHERE id = '2247' LIMIT 1

(mysql): SELECT name FROM mdl_resource WHERE id = '3277' LIMIT 1

(mysql): SELECT * FROM mdl_resource WHERE id = '3277' LIMIT 1

(mysql): SELECT name FROM mdl_forum WHERE id = '74' LIMIT 1

(mysql): SELECT name FROM mdl_resource WHERE id = '642' LIMIT 1

(mysql): SELECT * FROM mdl_resource WHERE id = '642' LIMIT 1

(mysql): SELECT name FROM mdl_resource WHERE id = '643' LIMIT 1

(mysql): SELECT * FROM mdl_resource WHERE id = '643' LIMIT 1

(mysql): SELECT name FROM mdl_resource WHERE id = '2959' LIMIT 1

(mysql): SELECT * FROM mdl_resource WHERE id = '2959' LIMIT 1

(mysql): SELECT name FROM mdl_resource WHERE id = '644' LIMIT 1

(mysql): SELECT * FROM mdl_resource WHERE id = '644' LIMIT 1

(mysql): SELECT name FROM mdl_resource WHERE id = '669' LIMIT 1

(mysql): SELECT * FROM mdl_resource WHERE id = '669' LIMIT 1

(mysql): SELECT name FROM mdl_assignment WHERE id = '153' LIMIT 1

(mysql): SELECT * FROM mdl_assignment WHERE id = '153' LIMIT 1

(mysql): SELECT name FROM mdl_resource WHERE id = '292' LIMIT 1

(mysql): SELECT * FROM mdl_resource WHERE id = '292' LIMIT 1

(mysql): SELECT name FROM mdl_assignment WHERE id = '5' LIMIT 1

(mysql): SELECT * FROM mdl_assignment WHERE id = '5' LIMIT 1
[there is a line under this last statement - did not copy/paste]

The ironic thing is that this upgrade is part of the path from 1.5.3 to 1.9.5+ so we can export relevant resources and put them into a new clean and differently structured Moodle - and as we do not want user data, forums will not be transferred. thoughtful

Grateful for any light that can be thrown on this problem

TIA

In reply to Andy Hawkins

Re: 1.6.9 > 1.8.9+ Freeze - Scroll to the continue button - Forum module

by Howard Miller -
Picture of Core developers Picture of Documentation writers Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers
Force Debugging in your config.php file and see if you get any error message (that will hopefully give some clues).
In reply to Howard Miller

Re: 1.6.9 > 1.8.9+ Freeze - Scroll to the continue button - Forum module

by Andy Hawkins -
I added -

$CFG->debug = 6143;
$CFG->debugdisplay = 1;

to config.php (I am guessing the bigger number gives more error messages than 2047)

During role assignments - we got -

INSERT INTO mdl_user_lastaccess ( USERID, COURSEID, TIMEACCESS ) VALUES ( 186, 49, 1205317973 )

* line 1425 of lib\dmllib.php: call to debugging()
* line 1580 of lib\accesslib.php: call to insert_record()
* line 340 of admin\index.php: call to moodle_install_roles()


Duplicate entry '12-70' for key 2

INSERT INTO mdl_user_lastaccess ( USERID, COURSEID, TIMEACCESS ) VALUES ( 12, 70, 1240854682 )

* line 1425 of lib\dmllib.php: call to debugging()
* line 1580 of lib\accesslib.php: call to insert_record()
* line 340 of admin\index.php: call to moodle_install_roles()


Duplicate entry '9-96' for key 2

INSERT INTO mdl_user_lastaccess ( USERID, COURSEID, TIMEACCESS ) VALUES ( 9, 96, 1236160297 )

* line 1425 of lib\dmllib.php: call to debugging()
* line 1580 of lib\accesslib.php: call to insert_record()
* line 340 of admin\index.php: call to moodle_install_roles()


User ID 2395 does not exist!

* line 2203 of lib\accesslib.php: call to debugging()
* line 1584 of lib\accesslib.php: call to role_assign()
* line 340 of admin\index.php: call to moodle_install_roles()

BUT - nothing on the page where it gets stuck.

config.php is here in case it helps -

<?PHP // $Id: config-dist.php,v 1.82.2.2 2005/07/04 17:00:46 skodak Exp $
///////////////////////////////////////////////////////////////////////////
// //
// Moodle configuration file //
// //
// This file should be renamed "config.php" in the top-level directory //
// //
///////////////////////////////////////////////////////////////////////////
// //
// NOTICE OF COPYRIGHT //
// //
// Moodle - Modular Object-Oriented Dynamic Learning Environment //
// http://moodle.org //
// //
// Copyright (C) 1999-2004 Martin Dougiamas http://dougiamas.com //
// //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details: //
// //
// http://www.gnu.org/copyleft/gpl.html //
// //
///////////////////////////////////////////////////////////////////////////
unset($CFG); // Ignore this line

//=========================================================================
// 1. DATABASE SETUP
//=========================================================================
// First, you need to configure the database where all Moodle data //
// will be stored. This database must already have been created //
// and a username/password created to access it. //
// //
// mysql - the prefix is optional, but useful when installing //
// into databases that already contain tables. //
//
// postgres7 - the prefix is REQUIRED, regardless of whether the //
// database already contains tables. //
// //
// A special case exists when using PostgreSQL databases via sockets. //
// Define dbhost as follows, leaving dbname, dbuser, dbpass BLANK!: //
// $CFG->dbhost = " user='muser' password='mpass' dbname='mdata'"; //
//

$CFG->dbtype = 'mysql'; // mysql or postgres7 (for now)
$CFG->dbhost = 'localhost'; // eg localhost or db.isp.com
$CFG->dbname = 'mdlb'; // database name, eg moodle
$CFG->dbuser = 'xxxxxx'; // your database username ****
$CFG->dbpass = 'xxxxxx'; // your database password ****

$CFG->dbpersist = true; // Use persistent database connection?
// (should be 'true' for 99% of sites)

$CFG->prefix = 'mdl_'; // Prefix to use for all table names

$CFG->dbpersist = true; // Should database connections be reused?
// "false" is the most stable setting
// "true" can improve performance sometimes


//=========================================================================
// 2. WEB SITE LOCATION
//=========================================================================
// Now you need to tell Moodle where it is located. Specify the full
// web address to where moodle has been installed. If your web site
// is accessible via multiple URLs then choose the most natural one
// that your students would use. Do not include a trailing slash

$CFG->wwwroot = 'http://www.st-bedes.surrey.sch.uk/mdl189';


//=========================================================================
// 3. SERVER FILES LOCATION
//=========================================================================
// Next, specify the full OS directory path to this same location
// Make sure the upper/lower case is correct. Some examples:
//
// $CFG->dirroot = 'c:\program files\easyphp\www\moodle'; // Windows
// $CFG->dirroot = '/var/www/html/moodle'; // Redhat Linux
// $CFG->dirroot = '/home/example/public_html/moodle'; // Cpanel host

$CFG->dirroot = 'W:\wwwroot\mdl189';


//=========================================================================
// 4. DATA FILES LOCATION
//=========================================================================
// Now you need a place where Moodle can save uploaded files. This
// directory should be readable AND WRITEABLE by the web server user
// (usually 'nobody' or 'apache'), but it should not be accessible
// directly via the web.
//
// - On hosting systems you might need to make sure that your "group" has
// no permissions at all, but that "others" have full permissions.
//
// - On Windows systems you might specify something like 'c:\moodledata'

$CFG->dataroot = 'X:\webdata\mdl-b-data';


//=========================================================================
// 5. DATA FILES PERMISSIONS
//=========================================================================
// The following parameter sets the permissions of new directories
// created by Moodle within the data directory. The format is in
// octal format (as used by the Unix utility chmod, for example).
// The default is usually OK, but you may want to change it to 0750
// if you are concerned about world-access to the files (you will need
// to make sure the web server process (eg Apache) can access the files.
// NOTE: the prefixed 0 is important, and don't use quotes.

$CFG->directorypermissions = 02777;


//=========================================================================
// 6. DIRECTORY LOCATION (most people can just ignore this setting)
//=========================================================================
// A very few webhosts use /admin as a special URL for you to access a
// control panel or something. Unfortunately this conflicts with the
// standard location for the Moodle admin pages. You can fix this by
// renaming the admin directory in your installation, and putting that
// new name here. eg "moodleadmin". This will fix admin links in Moodle.

$CFG->admin = 'admin';


//=========================================================================
// 7. OTHER MISCELLANEOUS SETTINGS (ignore these for new installations)
//=========================================================================
//
// These are additional tweaks for which no GUI exists in Moodle yet.
//
//
// Prevent users from updating their profile images
// $CFG->disableuserimages = true;
//
// Prevent scheduled backups from operating (and hide the GUI for them)
// Useful for webhost operators who have alternate methods of backups
// $CFG->disablescheduledbackups = true;
//
// Restrict certain usernames from doing things that may mess up a site
// This is especially useful for demonstration teacher accounts
// $CFG->restrictusers = 'teacher,fred,jim';
//
// Turning this on will make Moodle filter more than usual, including
// forum subjects, activity names and so on (in ADDITION to the normal
// texts like forum postings, journals etc). This is mostly only useful
// when using the multilang filter. This feature may not be complete.
// $CFG->filterall = true;
//
// Setting this to true will enable admins to edit any post at any time
$CFG->admineditalways = true;
//
// These variables define DEFAULT block variables for new courses
// If this one is set it overrides all others and is the only one used.
// $CFG->defaultblocks_override = 'participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity';
//
// These variables define the specific settings for defined course formats.
// They override any settings defined in the formats own config file.
// $CFG->defaultblocks_site = 'site_main_menu,admin,course_list:course_summary,calendar_month';
// $CFG->defaultblocks_social = 'participants,search_forums,calendar_month,calendar_upcoming,social_activities,recent_activity,admin,course_list';
// $CFG->defaultblocks_topics = 'participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity';
// $CFG->defaultblocks_weeks = 'participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity';
//
// These blocks are used when no other default setting is found.
// $CFG->defaultblocks = 'participants,activity_modules,search_forums,admin,course_list:news_items,calendar_upcoming,recent_activity';
//
//
// This setting will put Moodle in Unicode mode. It's very new and
// most likely doesn't work yet. THIS IS FOR DEVELOPERS ONLY, IT IS
// NOT RECOMMENDED FOR PRODUCTION SITES
// $CFG->unicode = true;
//
// Seconds for files to remain in caches. Decrease this if you are worried
// about students being served outdated versions of uploaded files.
// $CFG->filelifetime = 86400;
//
// This setting will prevent the 'My Courses' page being displayed when a student
// logs in. The site front page will always show the same (logged-out) view.
// $CFG->disablemycourses = true;
//
// If this setting is set to true, then Moodle will track the IP of the
// current user to make sure it hasn't changed during a session. This
// will prevent the possibility of sessions being hijacked via XSS, but it
// may break things for users coming using proxies that change all the time,
// like AOL.
// $CFG->tracksessionip = true;
//
//
// The following lines are for handling email bounces.
// $CFG->handlebounces = true;
// $CFG->minbounces = 10;
// $CFG->bounceratio = .20;
// The next lines are needed both for bounce handling and any other email to module processing.
// mailprefix must be EXACTLY four characters.
// Uncomment and customise this block for Postfix
// $CFG->mailprefix = 'mdl+'; // + is the separator for Exim and Postfix.
// $CFG->mailprefix = 'mdl-'l // - is the separator for qmail
// $CFG->maildomain = 'youremaildomain.com';
//
// The following setting will tell Moodle to respect your PHP session
// settings. Use this if you want to control session configuration
// from php.ini, httpd.conf or .htaccess files.
// $CFG->respectsessionsettings = true;
//
// This setting will cause the userdate() function not to fix %d in
// date strings, and just let them show with a zero prefix.
// $CFG->nofixday = true;
//
// This setting will make some graphs (eg user logs) use lines instead of bars
// $CFG->preferlinegraphs = true;
//
// Enabling this will make most text-based filters only match the first time
// a phrase occurs in a given text. Otherwise all are matched.
// $CFG->filtermatchonepertext = true;
//
// Enabling this will make most text-based filters only match the first time
// a phrase occurs in a given page. Otherwise all are matched.
// $CFG->filtermatchoneperpage = true;
//
// Performance profiling
//
// If you set Debug to "Yes" in the Configuration->Variables page some
// performance profiling data will show up on your footer (in default theme).
// With these settings you get more granular control over the capture
// and printout of the data
//
// Capture performance profiling data
// define('MDL_PERF' , true);
//
// Capture additional data from DB
// define('MDL_PERFDB' , true);
//
// Print to log (for passive profiling of production servers)
// define('MDL_PERFTOLOG' , true);
//
// Print to footer (works with the default theme)
// define('MDL_PERFTOFOOT', true);
//
// Force displayed usernames
// A little hack to anonymise user names for all students. If you set these
// then all non-teachers will always see these for every person.
// $CFG->forcefirstname = 'Bruce';
// $CFG->forcelastname = 'Simpson';
//
// The following setting will turn SQL Error logging on. This will output an
// entry in apache error log indicating the position of the error and the statement
// called. This option will action disregarding error_reporting setting.
// $CFG->dblogerror = true;
//
// The following setting will turn on username logging into Apache log. For full details regarding setting
// up of this function please refer to the install section of the document.
// $CFG->apacheloguser = 0; // Turn this feature off. Default value.
// $CFG->apacheloguser = 1; // Log user id.
// $CFG->apacheloguser = 2; // Log full name in cleaned format. ie, Darth Vader will be displayed as darth_vader.
// $CFG->apacheloguser = 3; // Log username.
// To get the values logged in Apache's log, add to your httpd.conf
// the following statements. In the General part put:
// LogFormat "%h %l %{MOODLEUSER}n %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"" moodleformat
// And in the part specific to your Moodle install / virtualhost:
// CustomLog "/your/path/to/log" moodleformat
// CAUTION: Use of this option will expose usernames in the Apache log,
// If you are going to publish your log, or the output of your web stats analyzer
// this will weaken the security of your website.
//


//=========================================================================
// ALL DONE! To continue installation, visit your main page with a browser
//=========================================================================
if ($CFG->wwwroot == 'http://example.com/moodle') {
echo "<p>Error detected in configuration file</p>";
echo "<p>Your server address can not be: \$CFG->wwwroot = 'http://example.com/moodle';</p>;";
die;
}

if (file_exists("$CFG->dirroot/lib/setup.php")) { // Do not edit
include_once("$CFG->dirroot/lib/setup.php");
} else {
if ($CFG->dirroot == dirname(__FILE__)) {
echo "<p>Could not find this file: $CFG->dirroot/lib/setup.php</p>";
echo "<p>Are you sure all your files have been uploaded?</p>";
} else {
echo "<p>Error detected in config.php</p>";
echo "<p>Error in: \$CFG->dirroot = '$CFG->dirroot';</p>";
echo "<p>Try this: \$CFG->dirroot = '".dirname(__FILE__)."';</p>";
}
die;
}

$CFG->debug = 6143;
$CFG->debugdisplay = 1;

// MAKE SURE WHEN YOU EDIT THIS FILE THAT THERE ARE NO SPACES, BLANK LINES,
// RETURNS, OR ANYTHING ELSE AFTER THE TWO CHARACTERS ON THE NEXT LINE.
?>




In reply to Andy Hawkins

Re: 1.6.9 > 1.8.9+ Freeze - Scroll to the continue button - Forum module

by Andy Hawkins -
I changed the debug value to 32768 to see if it found any more messages. No luck

Is that the correct interpretation of that number? Can it go higher?

TIA
In reply to Andy Hawkins

Re: 1.6.9 > 1.8.9+ Freeze - Scroll to the continue button - Forum module

by Howard Miller -
Picture of Core developers Picture of Documentation writers Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers
You should have got something with the high setting in the docs. Did you also check your web server log files.. sometimes the error ends up there.

Just a thought.... I wouldn't enable persistent database connections. I have some issues with this at the best of times.

I take it you are seeing the assignment issue 'before' you attempt to upgrade? I would possibly post that in the roles forum - it won't hurt at all to get to the bottom of that one.

In reply to Howard Miller

Re: 1.6.9 > 1.8.9+ Freeze - Scroll to the continue button - Forum module

by Andy Hawkins -
The roles assignment issues appear as the progress bar does whatever it is doing/indicating - I think that is the first part of the upgrade before I log in and do the rest.

Is that what you mean by 'before'?

Will post that in roles as well.

Changed persistent database setting to false and ran again
>>>
nothing I can see in web server logs - (I cleared them and restarted apache to make it obvious)

httpd.pid shows 9028 - whatever that means

error_log and error.log do not refer to the ip where I am doing the work
access.log shows >

172.25.250.4 - - [03/Jun/2009:22:27:57 +0100] "POST /mdl189/admin/index.php HTTP/1.1" 200 2492411

as the last entry from the ip address - looks like the request to run that last page

access_log is empty

(do not know apache well enough to understand all the logs)

Nothing in MySQL error log.

I am thinking I may need to extract the data we want from this v1.6.9 and import to a clean 1.6.9 install and then upgrade that so we can repeat the operation for 1.9.5 to the new restructured 1.9.5

Not exactly what we want as labour intensive.

Any other ideas gratefully received.

TIA