Log in

View Full Version : Slave + Registration problem


Rpgplayer8
04-27-2012, 01:33 PM
Hi guys, I've recently configured master/slave for my forum, and I'm having a problem with new registrations.

When a new user registers, it inputs their user data into the database, then tries to get their user info to send the activation email. The problem is, it tries to get that user info from the slave server, which hasn't actually recieved it yet I believe, leading to an error.

So my question is, how would I remove slave functions for the following trace:

The error starts in register.php

if ($userid)
{
$userinfo = fetch_userinfo($userid);
$userdata_rank =& datamanager_init('User', $vbulletin, ERRTYPE_SILENT);
$userdata_rank->set_existing($userinfo);
$userdata_rank->set('posts', 0);
$userdata_rank->save();


Where the problem is $userinfo = fetch_userinfo($userid);

Moving along to functions.php inside includes:



function fetch_userinfo(&$userid, $option = 0, $languageid = 0)
{
global $vbulletin, $usercache, $vbphrase, $permissions, $phrasegroups;

if ($userid == $vbulletin->userinfo['userid'] AND $option != 0 AND isset($usercache["$userid"]))
{
// clear the cache if we are looking at ourself and need to add one of the JOINS to our information.
unset($usercache["$userid"]);
}

$userid = intval($userid);

// return the cached result if it exists
if (isset($usercache["$userid"]))
{
return $usercache["$userid"];
}

$hook_query_fields = $hook_query_joins = '';
($hook = vBulletinHook::fetch_hook('fetch_userinfo_query')) ? eval($hook) : false;

// no cache available - query the user
$user = $vbulletin->db->query_first_slave("
SELECT " .
iif(($option & FETCH_USERINFO_ADMIN), ' administrator.*, ') . "

You can see it's using the slave to get the user info (red highlight), which is too slow (even over the local network). How would I make it not use the slave for this so I can have registrations work properly? Thanks in advance to anybody that helps!

kh99
04-27-2012, 02:06 PM
You might want to post over on vbulletin.com in the server forum https://www.vbulletin.com/forum/forumdisplay.php/14-Server-Configuration to make sure it's not some configuration issue before changing the code.

ETA: Just thought I'd add, it's OK to ask your question here as well, someone here might have some idea. I was just thinking that if you have everything set up correctly you might have found a (possibly known) bug or issue.

The obvious thing (which I'm sure you thought of) would be to take "_slave" off the call you highlighted in red, but then obviously you start to undo the benefit of having a slave server.