Skip to content

Memory cache returns users as ARRAY, not as Object #168

@rotdrop

Description

@rotdrop

Hi,

at least when using the REDIS cache as distributed cache the cached users are first encoded to JSON, and decoded from JSON to an array when read back. This results in error messages like:

  | Error: Attempt  to read property "uid" on array at  /var/www/orgacloud/nextcloud/apps/user_sql/lib/Backend/UserBackend.php#432  /var/www/orgacloud/nextcloud/lib/private/Log/ErrorHandler.php:95
-- | --

I have also added some diagnostic log messages in the UserBackend.php, and indeed

$this->logger->info('USER ' . print_r($user, true)); 
...
USER Array ( [uid] => 

A workaround is to disable the cache. However, this should be fixed. The affected function is getUser(). There around line
457
the cache value is just used as is, but it is an array created by json_decode(..., true) and not an object.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions