Fix avatar cleanup on user delete #34147
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Regression from 812016d (merged with 1 review only 🐱 )
Currently integration tests spam a huge log stack when deleting a user as the getAvatar in the listener fails to get the user from the user manager because it was wiped already now that the listener is a "post" listener.
So moving to the Before… event now which was the case before #32973 as well.
[Mon Sep 19 21:29:14 2022] {"Exception":"Exception","Message":"user does not exist","Code":0,"Trace":[{"file":"\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/User\/Listeners\/UserDeletedListener.php","line":54,"function":"getAvatar","class":"OC\\Avatar\\AvatarManager","type":"->"},{"file":"\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/EventDispatcher\/ServiceEventListener.php","line":87,"function":"handle","class":"OC\\User\\Listeners\\UserDeletedListener","type":"->"},{"file":"\/home\/nickv\/Nextcloud\/25\/server\/3rdparty\/symfony\/event-dispatcher\/EventDispatcher.php","line":251,"function":"__invoke","class":"OC\\EventDispatcher\\ServiceEventListener","type":"->"},{"file":"\/home\/nickv\/Nextcloud\/25\/server\/3rdparty\/symfony\/event-dispatcher\/EventDispatcher.php","line":73,"function":"callListeners","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/EventDispatcher\/EventDispatcher.php","line":88,"function":"dispatch","class":"Symfony\\Component\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/EventDispatcher\/EventDispatcher.php","line":100,"function":"dispatch","class":"OC\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/User\/User.php","line":315,"function":"dispatchTyped","class":"OC\\EventDispatcher\\EventDispatcher","type":"->"},{"file":"\/home\/nickv\/Nextcloud\/25\/server\/apps\/provisioning_api\/lib\/Controller\/UsersController.php","line":1083,"function":"delete","class":"OC\\User\\User","type":"->"},{"file":"\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/AppFramework\/Http\/Dispatcher.php","line":225,"function":"deleteUser","class":"OCA\\Provisioning_API\\Controller\\UsersController","type":"->"},{"file":"\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/AppFramework\/Http\/Dispatcher.php","line":133,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/AppFramework\/App.php","line":172,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/Route\/Router.php","line":298,"function":"main","class":"OC\\AppFramework\\App","type":"::"},{"file":"\/home\/nickv\/Nextcloud\/25\/server\/ocs\/v1.php","line":62,"function":"match","class":"OC\\Route\\Router","type":"->"},{"file":"\/home\/nickv\/Nextcloud\/25\/server\/ocs\/v2.php","line":23,"args":["\/home\/nickv\/Nextcloud\/25\/server\/ocs\/v1.php"],"function":"require_once"}],"File":"\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/Avatar\/AvatarManager.php","Line":114,"message":"Could not cleanup avatar of participant3","exception":{"xdebug_message":"<tr><th align='left' bgcolor='#f57900' colspan=\"5\"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )<\/span> Exception: user does not exist in \/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/Avatar\/AvatarManager.php on line <i>114<\/i><\/th><\/tr>\n<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack<\/th><\/tr>\n<tr><th align='center' bgcolor='#eeeeec'>#<\/th><th align='left' bgcolor='#eeeeec'>Time<\/th><th align='left' bgcolor='#eeeeec'>Memory<\/th><th align='left' bgcolor='#eeeeec'>Function<\/th><th align='left' bgcolor='#eeeeec'>Location<\/th><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>1<\/td><td bgcolor='#eeeeec' align='center'>0.0000<\/td><td bgcolor='#eeeeec' align='right'>356528<\/td><td bgcolor='#eeeeec'>{main}( )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/ocs\/v2.php' bgcolor='#eeeeec'>...\/v2.php<b>:<\/b>0<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>2<\/td><td bgcolor='#eeeeec' align='center'>0.0000<\/td><td bgcolor='#eeeeec' align='right'>357424<\/td><td bgcolor='#eeeeec'>require_once( <font color='#00bb00'>'\/home\/nickv\/Nextcloud\/25\/server\/ocs\/v1.php<\/font> )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/ocs\/v2.php' bgcolor='#eeeeec'>...\/v2.php<b>:<\/b>23<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>3<\/td><td bgcolor='#eeeeec' align='center'>0.0652<\/td><td bgcolor='#eeeeec' align='right'>4453992<\/td><td bgcolor='#eeeeec'>OC\\Route\\Router->match( <span>$url = <\/span><span>'\/ocsapp\/cloud\/users\/participant3'<\/span> )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/ocs\/v1.php' bgcolor='#eeeeec'>...\/v1.php<b>:<\/b>62<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>4<\/td><td bgcolor='#eeeeec' align='center'>0.0734<\/td><td bgcolor='#eeeeec' align='right'>5525320<\/td><td bgcolor='#eeeeec'>OC\\AppFramework\\App::main( <span>$controllerName = <\/span><span>'UsersController'<\/span>, <span>$methodName = <\/span><span>'deleteUser'<\/span>, <span>$container = <\/span><span>class OC\\AppFramework\\DependencyInjection\\DIContainer { private $middleWares = [0 => 'OCA\\\\Provisioning_API\\\\Middleware\\\\ProvisioningApiMiddleware']; private $server = class OC\\Server { private $webRoot = ''; protected $appContainers = [...]; protected $hasNoAppContainer = [...]; protected $namespaces = [...]; private ${OC\\AppFramework\\Utility\\SimpleContainer}container = class Pimple\\Container { ... } }; private ${OC\\AppFramework\\Utility\\SimpleContainer}container = class Pimple\\Container { private $values = [...]; private $factories = class SplObjectStorage { ... }; private $protected = class SplObjectStorage { ... }; private $frozen = [...]; private $raw = [...]; private $keys = [...] } }<\/span>, <span>$urlParams = <\/span><span>['userId' => 'participant3', '_route' => 'ocs.provisioning_api.Users.deleteUser']<\/span> )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/Route\/Router.php' bgcolor='#eeeeec'>...\/Router.php<b>:<\/b>298<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>5<\/td><td bgcolor='#eeeeec' align='center'>0.0841<\/td><td bgcolor='#eeeeec' align='right'>5756288<\/td><td bgcolor='#eeeeec'>OC\\AppFramework\\Http\\Dispatcher->dispatch( <span>$controller = <\/span><span>class OCA\\Provisioning_API\\Controller\\UsersController { protected $urlGenerator = class OC\\URLGenerator { private $config = class OC\\AllConfig { ... }; public $userSession = class OC\\User\\Session { ... }; private $cacheFactory = class OC\\Memcache\\Factory { ... }; private $request = class OC\\AppFramework\\Http\\Request { ... }; private $router = class OC\\Route\\Router { ... }; private $baseUrl = 'http:\/\/localhost:8080'; private ?OCP\\App\\IAppManager $appManager = NULL }; private $logger = class OC\\AppFramework\\ScopedPsrLogger { private $inner = class OC\\Log\\PsrLoggerAdapter { ... }; private $appId = 'provisioning_api' }; protected $l10nFactory = class OC\\L10N\\Factory { protected $requestLanguage = 'de_DE'; protected $instances = [...]; protected $availableLanguages = [...]; protected $localeCache = [...]; protected $availableLocales = [...]; protected $pluralFunctions = [...]; protected $config = class OC\\AllConfig { ... }; protected $request = class OC\\AppFramework\\Http\\Request { ... }; protected $userSession = class OC\\User\\Session { ... }; protected $serverRoot = '\/home\/nickv\/Nextcloud\/25\/server' }; private $newUserMailHelper = class OCA\\Settings\\Mailer\\NewUserMailHelper { private $themingDefaults = class OCP\\Defaults { ... }; private $urlGenerator = class OC\\URLGenerator { ... }; private $l10nFactory = class OC\\L10N\\Factory { ... }; private $mailer = class OC\\Mail\\Mailer { ... }; private $secureRandom = class OC\\Security\\SecureRandom { ... }; private $timeFactory = class OC\\AppFramework\\Utility\\TimeFactory { ... }; private $config = class OC\\AllConfig { ... }; private $crypto = class OC\\Security\\Crypto { ... }; private $fromAddress = '[email protected]' }; private $secureRandom = class OC\\Security\\SecureRandom { }; private $remoteWipe = class OC\\Authentication\\Token\\RemoteWipe { private $tokenProvider = class OC\\Authentication\\Token\\Manager { ... }; private $eventDispatcher = class OC\\EventDispatcher\\EventDispatcher { ... }; private $logger = class OC\\Log\\PsrLoggerAdapter { ... } }; private $knownUserService = class OC\\KnownUser\\KnownUserService { protected $mapper = class OC\\KnownUser\\KnownUserMapper { ... }; protected $knownUsers = [...] }; private $eventDispatcher = class OC\\EventDispatcher\\EventDispatcher { private $dispatcher = class Symfony\\Component\\EventDispatcher\\EventDispatcher { ... }; private $container = class OC\\Server { ... }; private $logger = class OC\\Log\\PsrLoggerAdapter { ... } }; protected $userManager = class OC\\User\\Manager { private $backends = [...]; private $cachedUsers = [...]; private $config = class OC\\AllConfig { ... }; private $dispatcher = class OC\\EventDispatcher\\SymfonyAdapter { ... }; private $cache = class OC\\Memcache\\NullCache { ... }; private $eventDispatcher = class OC\\EventDispatcher\\EventDispatcher { ... }; private OC\\User\\DisplayNameCache $displayNameCache = class OC\\User\\DisplayNameCache { ... }; protected $listeners = [...] }; protected $config = class OC\\AllConfig { private OC\\SystemConfig $systemConfig = class OC\\SystemConfig { ... }; private ?OCP\\IDBConnection $connection = class OC\\DB\\ConnectionAdapter { ... }; private OCP\\Cache\\CappedMemoryCache $userCache = class OCP\\Cache\\CappedMemoryCache { ... } }; protected $groupManager = class OC\\Group\\Manager { private $backends = [...]; private $userManager = class OC\\User\\Manager { ... }; private $dispatcher = class OC\\EventDispatcher\\SymfonyAdapter { ... }; private Psr\\Log\\LoggerInterface $logger = class OC\\Log\\PsrLoggerAdapter { ... }; private $cachedGroups = [...]; private $cachedUserGroups = [...]; private $subAdmin = class OC\\SubAdmin { ... }; protected $listeners = [...] }; protected $userSession = class OC\\User\\Session { private $manager = class OC\\User\\Manager { ... }; private $session = class OC\\Session\\CryptoSessionData { ... }; private $timeFactory = class OC\\AppFramework\\Utility\\TimeFactory { ... }; private $tokenProvider = class OC\\Authentication\\Token\\Manager { ... }; private $config = class OC\\AllConfig { ... }; protected $activeUser = class OC\\User\\User { ... }; private $random = class OC\\Security\\SecureRandom { ... }; private $lockdownManager = class OC\\Lockdown\\LockdownManager { ... }; private Psr\\Log\\LoggerInterface $logger = class OC\\Log\\PsrLoggerAdapter { ... }; private $dispatcher = class OC\\EventDispatcher\\EventDispatcher { ... } }; protected $accountManager = class OC\\Accounts\\AccountManager { private $connection = class OC\\DB\\ConnectionAdapter { ... }; private $config = class OC\\AllConfig { ... }; private $table = 'accounts'; private $dataTable = 'accounts_data'; private $eventDispatcher = class OC\\EventDispatcher\\SymfonyAdapter { ... }; private $jobList = class OC\\BackgroundJob\\JobList { ... }; private $logger = class OC\\Log\\PsrLoggerAdapter { ... }; private $verificationToken = class OC\\Security\\VerificationToken\\VerificationToken { ... }; private $mailer = class OC\\Mail\\Mailer { ... }; private $defaults = class OCP\\Defaults { ... }; private $l10n = NULL; private $urlGenerator = class OC\\URLGenerator { ... }; private $crypto = class OC\\Security\\Crypto { ... }; private $l10nfactory = class OC\\L10N\\Factory { ... }; private OCP\\Cache\\CappedMemoryCache $internalCache = class OCP\\Cache\\CappedMemoryCache { ... } }; private ${OCP\\AppFramework\\OCSController}ocsVersion = 2; private ${OCP\\AppFramework\\ApiController}corsMethods = 'PUT, POST, GET, DELETE, PATCH'; private ${OCP\\AppFramework\\ApiController}corsAllowedHeaders = 'Authorization, Content-Type, Accept'; private ${OCP\\AppFramework\\ApiController}corsMaxAge = 1728000; protected $appName = 'provisioning_api'; protected $request = class OC\\AppFramework\\Http\\Request { protected $inputStream = 'php:\/\/input'; protected $content = NULL; protected $items = [...]; protected $allowedKeys = [...]; protected $requestId = class OC\\AppFramework\\Http\\RequestId { ... }; protected $config = class OC\\AllConfig { ... }; protected $crypto = NULL; protected $csrfTokenManager = class OC\\Security\\CSRF\\CsrfTokenManager { ... }; protected $contentDecoded = TRUE }; private ${OCP\\AppFramework\\Controller}responders = ['json' => class Closure { virtual $closure = "$this->OCP\\AppFramework\\{closure}", ... }, 'xml' => class Closure { virtual $closure = "$this->OCP\\AppFramework\\{closure}", ... }] }<\/span>, <span>$methodName = <\/span><span>'deleteUser'<\/span> )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/AppFramework\/App.php' bgcolor='#eeeeec'>...\/App.php<b>:<\/b>172<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>6<\/td><td bgcolor='#eeeeec' align='center'>0.0861<\/td><td bgcolor='#eeeeec' align='right'>5782400<\/td><td bgcolor='#eeeeec'>OC\\AppFramework\\Http\\Dispatcher->executeController( <span>$controller = <\/span><span>class OCA\\Provisioning_API\\Controller\\UsersController { protected $urlGenerator = class OC\\URLGenerator { private $config = class OC\\AllConfig { ... }; public $userSession = class OC\\User\\Session { ... }; private $cacheFactory = class OC\\Memcache\\Factory { ... }; private $request = class OC\\AppFramework\\Http\\Request { ... }; private $router = class OC\\Route\\Router { ... }; private $baseUrl = 'http:\/\/localhost:8080'; private ?OCP\\App\\IAppManager $appManager = NULL }; private $logger = class OC\\AppFramework\\ScopedPsrLogger { private $inner = class OC\\Log\\PsrLoggerAdapter { ... }; private $appId = 'provisioning_api' }; protected $l10nFactory = class OC\\L10N\\Factory { protected $requestLanguage = 'de_DE'; protected $instances = [...]; protected $availableLanguages = [...]; protected $localeCache = [...]; protected $availableLocales = [...]; protected $pluralFunctions = [...]; protected $config = class OC\\AllConfig { ... }; protected $request = class OC\\AppFramework\\Http\\Request { ... }; protected $userSession = class OC\\User\\Session { ... }; protected $serverRoot = '\/home\/nickv\/Nextcloud\/25\/server' }; private $newUserMailHelper = class OCA\\Settings\\Mailer\\NewUserMailHelper { private $themingDefaults = class OCP\\Defaults { ... }; private $urlGenerator = class OC\\URLGenerator { ... }; private $l10nFactory = class OC\\L10N\\Factory { ... }; private $mailer = class OC\\Mail\\Mailer { ... }; private $secureRandom = class OC\\Security\\SecureRandom { ... }; private $timeFactory = class OC\\AppFramework\\Utility\\TimeFactory { ... }; private $config = class OC\\AllConfig { ... }; private $crypto = class OC\\Security\\Crypto { ... }; private $fromAddress = '[email protected]' }; private $secureRandom = class OC\\Security\\SecureRandom { }; private $remoteWipe = class OC\\Authentication\\Token\\RemoteWipe { private $tokenProvider = class OC\\Authentication\\Token\\Manager { ... }; private $eventDispatcher = class OC\\EventDispatcher\\EventDispatcher { ... }; private $logger = class OC\\Log\\PsrLoggerAdapter { ... } }; private $knownUserService = class OC\\KnownUser\\KnownUserService { protected $mapper = class OC\\KnownUser\\KnownUserMapper { ... }; protected $knownUsers = [...] }; private $eventDispatcher = class OC\\EventDispatcher\\EventDispatcher { private $dispatcher = class Symfony\\Component\\EventDispatcher\\EventDispatcher { ... }; private $container = class OC\\Server { ... }; private $logger = class OC\\Log\\PsrLoggerAdapter { ... } }; protected $userManager = class OC\\User\\Manager { private $backends = [...]; private $cachedUsers = [...]; private $config = class OC\\AllConfig { ... }; private $dispatcher = class OC\\EventDispatcher\\SymfonyAdapter { ... }; private $cache = class OC\\Memcache\\NullCache { ... }; private $eventDispatcher = class OC\\EventDispatcher\\EventDispatcher { ... }; private OC\\User\\DisplayNameCache $displayNameCache = class OC\\User\\DisplayNameCache { ... }; protected $listeners = [...] }; protected $config = class OC\\AllConfig { private OC\\SystemConfig $systemConfig = class OC\\SystemConfig { ... }; private ?OCP\\IDBConnection $connection = class OC\\DB\\ConnectionAdapter { ... }; private OCP\\Cache\\CappedMemoryCache $userCache = class OCP\\Cache\\CappedMemoryCache { ... } }; protected $groupManager = class OC\\Group\\Manager { private $backends = [...]; private $userManager = class OC\\User\\Manager { ... }; private $dispatcher = class OC\\EventDispatcher\\SymfonyAdapter { ... }; private Psr\\Log\\LoggerInterface $logger = class OC\\Log\\PsrLoggerAdapter { ... }; private $cachedGroups = [...]; private $cachedUserGroups = [...]; private $subAdmin = class OC\\SubAdmin { ... }; protected $listeners = [...] }; protected $userSession = class OC\\User\\Session { private $manager = class OC\\User\\Manager { ... }; private $session = class OC\\Session\\CryptoSessionData { ... }; private $timeFactory = class OC\\AppFramework\\Utility\\TimeFactory { ... }; private $tokenProvider = class OC\\Authentication\\Token\\Manager { ... }; private $config = class OC\\AllConfig { ... }; protected $activeUser = class OC\\User\\User { ... }; private $random = class OC\\Security\\SecureRandom { ... }; private $lockdownManager = class OC\\Lockdown\\LockdownManager { ... }; private Psr\\Log\\LoggerInterface $logger = class OC\\Log\\PsrLoggerAdapter { ... }; private $dispatcher = class OC\\EventDispatcher\\EventDispatcher { ... } }; protected $accountManager = class OC\\Accounts\\AccountManager { private $connection = class OC\\DB\\ConnectionAdapter { ... }; private $config = class OC\\AllConfig { ... }; private $table = 'accounts'; private $dataTable = 'accounts_data'; private $eventDispatcher = class OC\\EventDispatcher\\SymfonyAdapter { ... }; private $jobList = class OC\\BackgroundJob\\JobList { ... }; private $logger = class OC\\Log\\PsrLoggerAdapter { ... }; private $verificationToken = class OC\\Security\\VerificationToken\\VerificationToken { ... }; private $mailer = class OC\\Mail\\Mailer { ... }; private $defaults = class OCP\\Defaults { ... }; private $l10n = NULL; private $urlGenerator = class OC\\URLGenerator { ... }; private $crypto = class OC\\Security\\Crypto { ... }; private $l10nfactory = class OC\\L10N\\Factory { ... }; private OCP\\Cache\\CappedMemoryCache $internalCache = class OCP\\Cache\\CappedMemoryCache { ... } }; private ${OCP\\AppFramework\\OCSController}ocsVersion = 2; private ${OCP\\AppFramework\\ApiController}corsMethods = 'PUT, POST, GET, DELETE, PATCH'; private ${OCP\\AppFramework\\ApiController}corsAllowedHeaders = 'Authorization, Content-Type, Accept'; private ${OCP\\AppFramework\\ApiController}corsMaxAge = 1728000; protected $appName = 'provisioning_api'; protected $request = class OC\\AppFramework\\Http\\Request { protected $inputStream = 'php:\/\/input'; protected $content = NULL; protected $items = [...]; protected $allowedKeys = [...]; protected $requestId = class OC\\AppFramework\\Http\\RequestId { ... }; protected $config = class OC\\AllConfig { ... }; protected $crypto = NULL; protected $csrfTokenManager = class OC\\Security\\CSRF\\CsrfTokenManager { ... }; protected $contentDecoded = TRUE }; private ${OCP\\AppFramework\\Controller}responders = ['json' => class Closure { virtual $closure = "$this->OCP\\AppFramework\\{closure}", ... }, 'xml' => class Closure { virtual $closure = "$this->OCP\\AppFramework\\{closure}", ... }] }<\/span>, <span>$methodName = <\/span><span>'deleteUser'<\/span> )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/AppFramework\/Http\/Dispatcher.php' bgcolor='#eeeeec'>...\/Dispatcher.php<b>:<\/b>133<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>7<\/td><td bgcolor='#eeeeec' align='center'>0.0861<\/td><td bgcolor='#eeeeec' align='right'>5783168<\/td><td bgcolor='#eeeeec'>OCA\\Provisioning_API\\Controller\\UsersController->deleteUser( <span>$userId = <\/span><span>'participant3'<\/span> )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/AppFramework\/Http\/Dispatcher.php' bgcolor='#eeeeec'>...\/Dispatcher.php<b>:<\/b>225<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>8<\/td><td bgcolor='#eeeeec' align='center'>0.0865<\/td><td bgcolor='#eeeeec' align='right'>5784088<\/td><td bgcolor='#eeeeec'>OC\\User\\User->delete( )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/apps\/provisioning_api\/lib\/Controller\/UsersController.php' bgcolor='#eeeeec'>...\/UsersController.php<b>:<\/b>1083<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>9<\/td><td bgcolor='#eeeeec' align='center'>0.2446<\/td><td bgcolor='#eeeeec' align='right'>6546808<\/td><td bgcolor='#eeeeec'>OC\\EventDispatcher\\EventDispatcher->dispatchTyped( <span>$event = <\/span><span>class OCP\\User\\Events\\UserDeletedEvent { private $user = class OC\\User\\User { protected $accountManager = NULL; private $uid = 'participant3'; private $displayName = 'participant3-displayname'; private $backend = class OC\\User\\Database { ... }; private $legacyDispatcher = class OC\\EventDispatcher\\SymfonyAdapter { ... }; private $dispatcher = class OC\\EventDispatcher\\EventDispatcher { ... }; private $enabled = NULL; private $emitter = class OC\\User\\Manager { ... }; private $home = '\/home\/nickv\/Nextcloud\/25\/data\/participant3'; private $lastLogin = NULL; private $config = class OC\\AllConfig { ... }; private $avatarManager = NULL; private $urlGenerator = class OC\\URLGenerator { ... } }; private ${OCP\\EventDispatcher\\Event}propagationStopped = FALSE }<\/span> )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/User\/User.php' bgcolor='#eeeeec'>...\/User.php<b>:<\/b>315<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>10<\/td><td bgcolor='#eeeeec' align='center'>0.2446<\/td><td bgcolor='#eeeeec' align='right'>6546808<\/td><td bgcolor='#eeeeec'>OC\\EventDispatcher\\EventDispatcher->dispatch( <span>$eventName = <\/span><span>'OCP\\\\User\\\\Events\\\\UserDeletedEvent'<\/span>, <span>$event = <\/span><span>class OCP\\User\\Events\\UserDeletedEvent { private $user = class OC\\User\\User { protected $accountManager = NULL; private $uid = 'participant3'; private $displayName = 'participant3-displayname'; private $backend = class OC\\User\\Database { ... }; private $legacyDispatcher = class OC\\EventDispatcher\\SymfonyAdapter { ... }; private $dispatcher = class OC\\EventDispatcher\\EventDispatcher { ... }; private $enabled = NULL; private $emitter = class OC\\User\\Manager { ... }; private $home = '\/home\/nickv\/Nextcloud\/25\/data\/participant3'; private $lastLogin = NULL; private $config = class OC\\AllConfig { ... }; private $avatarManager = NULL; private $urlGenerator = class OC\\URLGenerator { ... } }; private ${OCP\\EventDispatcher\\Event}propagationStopped = FALSE }<\/span> )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/EventDispatcher\/EventDispatcher.php' bgcolor='#eeeeec'>...\/EventDispatcher.php<b>:<\/b>100<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>11<\/td><td bgcolor='#eeeeec' align='center'>0.2446<\/td><td bgcolor='#eeeeec' align='right'>6546808<\/td><td bgcolor='#eeeeec'>Symfony\\Component\\EventDispatcher\\EventDispatcher->dispatch( <span>$event = <\/span><span>class OCP\\User\\Events\\UserDeletedEvent { private $user = class OC\\User\\User { protected $accountManager = NULL; private $uid = 'participant3'; private $displayName = 'participant3-displayname'; private $backend = class OC\\User\\Database { ... }; private $legacyDispatcher = class OC\\EventDispatcher\\SymfonyAdapter { ... }; private $dispatcher = class OC\\EventDispatcher\\EventDispatcher { ... }; private $enabled = NULL; private $emitter = class OC\\User\\Manager { ... }; private $home = '\/home\/nickv\/Nextcloud\/25\/data\/participant3'; private $lastLogin = NULL; private $config = class OC\\AllConfig { ... }; private $avatarManager = NULL; private $urlGenerator = class OC\\URLGenerator { ... } }; private ${OCP\\EventDispatcher\\Event}propagationStopped = FALSE }<\/span>, <span>'OCP\\\\User\\\\Events\\\\UserDeletedEvent'<\/span> )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/EventDispatcher\/EventDispatcher.php' bgcolor='#eeeeec'>...\/EventDispatcher.php<b>:<\/b>88<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>12<\/td><td bgcolor='#eeeeec' align='center'>0.2446<\/td><td bgcolor='#eeeeec' align='right'>6553904<\/td><td bgcolor='#eeeeec'>Symfony\\Component\\EventDispatcher\\EventDispatcher->callListeners( <span>$listeners = <\/span><span>[0 => class Closure { virtual $closure = "$this->__invoke", public $this = class OC\\EventDispatcher\\ServiceEventListener { ... }; public $parameter = [...] }, 1 => class Closure { virtual $closure = "$this->__invoke", public $this = class OC\\EventDispatcher\\ServiceEventListener { ... }; public $parameter = [...] }, 2 => class Closure { virtual $closure = "$this->__invoke", public $this = class OC\\EventDispatcher\\ServiceEventListener { ... }; public $parameter = [...] }, 3 => class Closure { virtual $closure = "$this->__invoke", public $this = class OC\\EventDispatcher\\ServiceEventListener { ... }; public $parameter = [...] }, 4 => class Closure { virtual $closure = "$this->__invoke", public $this = class OC\\EventDispatcher\\ServiceEventListener { ... }; public $parameter = [...] }, 5 => class Closure { virtual $closure = "$this->__invoke", public $this = class OC\\EventDispatcher\\ServiceEventListener { ... }; public $parameter = [...] }, 6 => class Closure { virtual $closure = "$this->__invoke", public $this = class OC\\EventDispatcher\\ServiceEventListener { ... }; public $parameter = [...] }, 7 => class Closure { virtual $closure = "$this->__invoke", public $this = class OC\\EventDispatcher\\ServiceEventListener { ... }; public $parameter = [...] }, 8 => class Closure { virtual $closure = "$this->__invoke", public $this = class OC\\EventDispatcher\\ServiceEventListener { ... }; public $parameter = [...] }, 9 => class Closure { virtual $closure = "$this->__invoke", public $this = class OC\\EventDispatcher\\ServiceEventListener { ... }; public $parameter = [...] }, 10 => class Closure { virtual $closure = "$this->__invoke", public $this = class OC\\EventDispatcher\\ServiceEventListener { ... }; public $parameter = [...] }]<\/span>, <span>$eventName = <\/span><span>'OCP\\\\User\\\\Events\\\\UserDeletedEvent'<\/span>, <span>$event = <\/span><span>class OCP\\User\\Events\\UserDeletedEvent { private $user = class OC\\User\\User { protected $accountManager = NULL; private $uid = 'participant3'; private $displayName = 'participant3-displayname'; private $backend = class OC\\User\\Database { ... }; private $legacyDispatcher = class OC\\EventDispatcher\\SymfonyAdapter { ... }; private $dispatcher = class OC\\EventDispatcher\\EventDispatcher { ... }; private $enabled = NULL; private $emitter = class OC\\User\\Manager { ... }; private $home = '\/home\/nickv\/Nextcloud\/25\/data\/participant3'; private $lastLogin = NULL; private $config = class OC\\AllConfig { ... }; private $avatarManager = NULL; private $urlGenerator = class OC\\URLGenerator { ... } }; private ${OCP\\EventDispatcher\\Event}propagationStopped = FALSE }<\/span> )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/3rdparty\/symfony\/event-dispatcher\/EventDispatcher.php' bgcolor='#eeeeec'>...\/EventDispatcher.php<b>:<\/b>73<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>13<\/td><td bgcolor='#eeeeec' align='center'>0.2446<\/td><td bgcolor='#eeeeec' align='right'>6553904<\/td><td bgcolor='#eeeeec'>OC\\EventDispatcher\\ServiceEventListener->__invoke( <span>$event = <\/span><span>class OCP\\User\\Events\\UserDeletedEvent { private $user = class OC\\User\\User { protected $accountManager = NULL; private $uid = 'participant3'; private $displayName = 'participant3-displayname'; private $backend = class OC\\User\\Database { ... }; private $legacyDispatcher = class OC\\EventDispatcher\\SymfonyAdapter { ... }; private $dispatcher = class OC\\EventDispatcher\\EventDispatcher { ... }; private $enabled = NULL; private $emitter = class OC\\User\\Manager { ... }; private $home = '\/home\/nickv\/Nextcloud\/25\/data\/participant3'; private $lastLogin = NULL; private $config = class OC\\AllConfig { ... }; private $avatarManager = NULL; private $urlGenerator = class OC\\URLGenerator { ... } }; private ${OCP\\EventDispatcher\\Event}propagationStopped = FALSE }<\/span>, <span>'OCP\\\\User\\\\Events\\\\UserDeletedEvent'<\/span>, <span>class Symfony\\Component\\EventDispatcher\\EventDispatcher { private $listeners = ['OC\\Authentication\\Events\\LoginFailed' => [...], 'OCP\\User\\Events\\PostLoginEvent' => [...], 'OCP\\User\\Events\\UserChangedEvent' => [...], 'OCP\\User\\Events\\UserDeletedEvent' => [...], 'OCP\\Group\\Events\\UserAddedEvent' => [...], 'OCP\\Group\\Events\\UserRemovedEvent' => [...], 'OCP\\Share\\Events\\ShareCreatedEvent' => [...], 'OCP\\Files\\Events\\InvalidateMountCacheEvent' => [...], 'OCA\\Circles\\Events\\CreatingCircleEvent' => [...], 'OCA\\Circles\\Events\\DestroyingCircleEvent' => [...], 'OCA\\Circles\\Events\\AddingCircleMemberEvent' => [...], 'OCA\\Circles\\Events\\RemovingCircleMemberEvent' => [...], 'OCP\\Share::preUnshare' => [...], 'OCP\\Share::postUnshare' => [...], 'OCP\\Share::postUnshareFromSelf' => [...], 'OCP\\Share::preShare' => [...], 'OCP\\Share::postShare' => [...], 'OCP\\Dashboard\\RegisterWidgetEvent' => [...], 'OCA\\Files\\Event\\LoadAdditionalScriptsEvent' => [...], 'OCA\\Files\\Event\\LoadSidebar' => [...], 'OCP\\Comments\\ICommentsManager::registerEntity' => [...], 'OCP\\Contacts\\Events\\ContactInteractedWithEvent' => [...], 'OCA\\DAV\\Events\\CalendarCreatedEvent' => [...], 'OCA\\DAV\\Events\\CalendarDeletedEvent' => [...], 'OCA\\DAV\\Events\\CalendarMovedToTrashEvent' => [...], 'OCA\\DAV\\Events\\CalendarUpdatedEvent' => [...], 'OCA\\DAV\\Events\\CalendarRestoredEvent' => [...], 'OCA\\DAV\\Events\\CalendarObjectCreatedEvent' => [...], 'OCA\\DAV\\Events\\CalendarObjectUpdatedEvent' => [...], 'OCA\\DAV\\Events\\CalendarObjectDeletedEvent' => [...], 'OCA\\DAV\\Events\\CalendarObjectMovedEvent' => [...], 'OCA\\DAV\\Events\\CalendarObjectMovedToTrashEvent' => [...], 'OCA\\DAV\\Events\\CalendarObjectRestoredEvent' => [...], 'OCA\\DAV\\Events\\CalendarShareUpdatedEvent' => [...], 'OCA\\DAV\\Events\\CalendarPublishedEvent' => [...], 'OCA\\DAV\\Events\\CalendarUnpublishedEvent' => [...], 'OCA\\DAV\\Events\\SubscriptionCreatedEvent' => [...], 'OCA\\DAV\\Events\\SubscriptionDeletedEvent' => [...], 'OCA\\DAV\\Events\\AddressBookCreatedEvent' => [...], 'OCA\\DAV\\Events\\AddressBookDeletedEvent' => [...], 'OCA\\DAV\\Events\\AddressBookUpdatedEvent' => [...], 'OCA\\DAV\\Events\\AddressBookShareUpdatedEvent' => [...], 'OCA\\DAV\\Events\\CardCreatedEvent' => [...], 'OCA\\DAV\\Events\\CardDeletedEvent' => [...], 'OCA\\DAV\\Events\\CardUpdatedEvent' => [...], 'OCP\\Federation\\Events\\TrustedServerRemovedEvent' => [...], 'OCP\\Config\\BeforePreferenceDeletedEvent' => [...], 'OCP\\Config\\BeforePreferenceSetEvent' => [...], 'OCP\\AppFramework\\Http\\Events\\BeforeTemplateRenderedEvent' => [...], 'OCP\\Files\\Events\\Node\\NodeDeletedEvent' => [...], 'OC\\Authentication\\Events\\AppPasswordCreatedEvent' => [...], 'OCP\\Group\\Events\\GroupDeletedEvent' => [...], 'OCP\\Security\\CSP\\AddContentSecurityPolicyEvent' => [...], 'OCP\\Security\\FeaturePolicy\\AddFeaturePolicyEvent' => [...], 'OCP\\User\\Events\\BeforeUserLoggedOutEvent' => [...], 'OCA\\Files_Sharing\\Event\\BeforeTemplateRenderedEvent' => [...], 'OCP\\WorkflowEngine\\Events\\RegisterOperationsEvent' => [...], 'OCA\\Talk\\Events\\AttendeesAddedEvent' => [...], 'OCA\\Talk\\Events\\AttendeesRemovedEvent' => [...], 'OCA\\Talk\\Events\\SendCallNotificationEvent' => [...], 'OCA\\Circles\\Events\\CircleDestroyedEvent' => [...], 'OCP\\DirectEditing\\RegisterDirectEditorEvent' => [...], 'OCA\\Viewer\\Event\\LoadViewer' => [...], 'OCP\\Files\\Events\\Node\\NodeCopiedEvent' => [...], 'OCP\\Files\\Events\\Node\\BeforeNodeRenamedEvent' => [...], 'OCP\\Files\\Events\\Node\\BeforeNodeDeletedEvent' => [...], 'OCA\\TwoFactorBackupCodes\\Event\\CodesGenerated' => [...], 'OCP\\Authentication\\TwoFactorAuth\\IRegistry::enable' => [...], 'OCP\\Authentication\\TwoFactorAuth\\IRegistry::disable' => [...], 'OCP\\User\\Events\\UserLiveStatusEvent' => [...], 'OCP\\WorkflowEngine\\Events\\LoadSettingsScriptsEvent' => [...], 'OCP\\IGroup::postAddUser' => [...], 'OCP\\IGroup::postRemoveUser' => [...], 'OCP\\IUser::postDelete' => [...], 'OCP\\IGroup::preDelete' => [...], '\\OCP\\Collaboration\\Resources::loadAdditionalScripts' => [...], 'OCP\\Collaboration\\Resources\\LoadAdditionalScriptsEvent' => [...], 'OCP\\Share\\Events\\ShareDeletedEvent' => [...], 'OCP\\IDBConnection::CHECK_MISSING_INDEXES' => [...], 'OCP\\IDBConnection::CHECK_MISSING_PRIMARY_KEYS' => [...], 'OCP\\IDBConnection::CHECK_MISSING_COLUMNS' => [...], 'OC\\Authentication\\Events\\RemoteWipeStarted' => [...], 'OC\\Authentication\\Events\\RemoteWipeFinished' => [...], 'OCP\\User\\Events\\BeforeUserDeletedEvent' => [...], 'OCP\\Files\\Events\\NodeRemovedFromCache' => [...], 'OCP\\Files\\Events\\Node\\NodeWrittenEvent' => [...], 'OCP\\IUser::firstLogin' => [...], 'OC\\AccountManager::userUpdated' => [...], 'OCA\\Talk\\Room::postSessionJoinCall' => [...], 'OCA\\Talk\\Room::preEndCallForEveryone' => [...], 'OCA\\Talk\\Room::postRemoveBySession' => [...], 'OCA\\Talk\\Room::postRemoveUser' => [...], 'OCA\\Talk\\Room::postSessionLeaveCall' => [...], 'OCA\\Talk\\Room::postUserDisconnectRoom' => [...], 'OCA\\Talk\\Room::postAddUsers' => [...], 'OCA\\Talk\\Room::postJoinRoom' => [...], 'OCA\\Talk\\Room::preSessionJoinCall' => [...], 'OCA\\Talk\\Room::createdRoom' => [...], 'OCA\\Talk\\Room::postSetName' => [...], 'OCA\\Talk\\Room::postSetDescription' => [...], 'OCA\\Talk\\Room::postSetPassword' => [...], 'OCA\\Talk\\Room::postSetType' => [...], 'OCA\\Talk\\Room::postSetReadOnly' => [...], 'OCA\\Talk\\Room::postSetListable' => [...], 'OCA\\Talk\\Room::postSetLobbyState' => [...], 'OCA\\Talk\\Room::postSetParticipantType' => [...], 'OCA\\Talk\\Share\\RoomShareProvider::shareFileAgain' => [...], 'OCA\\Talk\\Room::afterSetMessageExpiration' => [...], 'OCA\\Talk\\Chat\\MessageParser::parseMessage' => [...], 'OCA\\Talk\\Room::preJoinRoom' => [...], 'OCA\\Talk\\Room::preJoinRoomGuest' => [...], 'OCA\\Talk\\Room::preAddUsers' => [...], 'OCA\\Talk\\Room::postCleanGuests' => [...], 'OCA\\Talk\\Room::postDeleteRoom' => [...], 'OCA\\Talk\\Room::postJoinRoomGuest' => [...], 'OCA\\Talk\\Room::postSessionUpdateCallFlags' => [...], 'OCA\\Talk\\Room::postSetPermissions' => [...], 'OCA\\Talk\\GuestManager::updateName' => [...], 'OCA\\Talk\\Room::preDeleteRoom' => [...], 'OCA\\Talk\\Room::preRemoveUser' => [...], 'OCA\\Talk\\Room::preRemoveBySession' => [...], 'OCA\\Talk\\Room::preUserDisconnectRoom' => [...], 'OCA\\Talk\\Room::postSetParticipantPermissions' => [...], 'OCA\\Talk\\Room::postSetSIPEnabled' => [...], 'OCA\\Talk\\Room::postEndCallForEveryone' => [...], 'OCA\\Talk\\Chat\\ChatManager::postSendMessage' => [...], 'OCA\\Talk\\Chat\\ChatManager::postSendSystemMessage' => [...], 'OCA\\Talk\\Chat\\ChatManager::postSendMultipleSystemMessage' => [...], ...]; private $sorted = []; private $optimized = ['OCP\\User\\Events\\BeforeUserDeletedEvent' => [...], 'OCP\\IUser::postDelete' => [...], 'OCA\\DAV\\Events\\CardDeletedEvent' => [...], 'OCA\\DAV\\Events\\CalendarDeletedEvent' => [...], 'OCA\\DAV\\Events\\AddressBookDeletedEvent' => [...], 'OCP\\User\\Events\\UserDeletedEvent' => [...]] }<\/span> )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/3rdparty\/symfony\/event-dispatcher\/EventDispatcher.php' bgcolor='#eeeeec'>...\/EventDispatcher.php<b>:<\/b>251<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>14<\/td><td bgcolor='#eeeeec' align='center'>0.2449<\/td><td bgcolor='#eeeeec' align='right'>6560584<\/td><td bgcolor='#eeeeec'>OC\\User\\Listeners\\UserDeletedListener->handle( <span>$event = <\/span><span>class OCP\\User\\Events\\UserDeletedEvent { private $user = class OC\\User\\User { protected $accountManager = NULL; private $uid = 'participant3'; private $displayName = 'participant3-displayname'; private $backend = class OC\\User\\Database { ... }; private $legacyDispatcher = class OC\\EventDispatcher\\SymfonyAdapter { ... }; private $dispatcher = class OC\\EventDispatcher\\EventDispatcher { ... }; private $enabled = NULL; private $emitter = class OC\\User\\Manager { ... }; private $home = '\/home\/nickv\/Nextcloud\/25\/data\/participant3'; private $lastLogin = NULL; private $config = class OC\\AllConfig { ... }; private $avatarManager = NULL; private $urlGenerator = class OC\\URLGenerator { ... } }; private ${OCP\\EventDispatcher\\Event}propagationStopped = FALSE }<\/span> )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/EventDispatcher\/ServiceEventListener.php' bgcolor='#eeeeec'>...\/ServiceEventListener.php<b>:<\/b>87<\/td><\/tr>\n<tr><td bgcolor='#eeeeec' align='center'>15<\/td><td bgcolor='#eeeeec' align='center'>0.2449<\/td><td bgcolor='#eeeeec' align='right'>6560584<\/td><td bgcolor='#eeeeec'>OC\\Avatar\\AvatarManager->getAvatar( <span>$userId = <\/span><span>'participant3'<\/span> )<\/td><td title='\/home\/nickv\/Nextcloud\/25\/server\/lib\/private\/User\/Listeners\/UserDeletedListener.php' bgcolor='#eeeeec'>...\/UserDeletedListener.php<b>:<\/b>54<\/td><\/tr>\n"},"CustomMessage":"Could not cleanup avatar of participant3"}
Afterwards deleting is "good" again: