Infinite loop on CLI initiated profile deletion for local users

profile deleting user deleting profile deleting user...
This commit is contained in:
Mikael Nordfeldth 2015-07-18 02:16:52 +02:00
parent 9fdf6474f8
commit 6f62adedfc
3 changed files with 16 additions and 4 deletions

View File

@ -877,6 +877,11 @@ class Profile extends Managed_DataObject
function delete($useWhere=false)
{
// just in case it hadn't been done before... (usually set before adding deluser to queue handling!)
if (!$this->hasRole(Profile_role::DELETED)) {
$this->grantRole(Profile_role::DELETED);
}
$this->_deleteNotices();
$this->_deleteSubscriptions();
$this->_deleteTags();

View File

@ -598,8 +598,10 @@ class User extends Managed_DataObject
}
try {
$profile = $this->getProfile();
$profile->delete();
if (!$this->hasRole(Profile_role::DELETED)) {
$profile = $this->getProfile();
$profile->delete();
}
} catch (UserNoProfileException $unp) {
common_log(LOG_INFO, "User {$this->nickname} has no profile; continuing deletion.");
}

View File

@ -74,8 +74,13 @@ class DelUserQueueHandler extends QueueHandler
$qm = QueueManager::get();
$qm->enqueue($user, 'deluser');
} else {
// Out of notices? Let's finish deleting this guy!
$user->delete();
// Out of notices? Let's finish deleting this profile!
try {
$user->getProfile()->delete();
} catch (UserNoProfileException $e) {
// in case a profile didn't exist for some reason, just delete the User directly
$user->delete();
}
common_log(LOG_INFO, "User $user->id $user->nickname deleted.");
return true;
}