Log is filled with "Object is invalid, missing keys..."

Nextcloud version (eg, 29.0.5): 28.0.5
Operating system and version (eg, Ubuntu 29.04): Ubuntu 20.04.6
Apache or nginx version (eg, Apache 2.4.25): Apache 2.4.59
PHP version (eg, 8.3): 8.1.29

The issue you are facing:

I am seeing a lot of messages in the log like this one (not only for Admin but for every user):

{"reqId":"xf44UDKXPXc7xalwW31S","level":3,"time":"2024-06-14T17:39:04+02:00","remoteAddr":"128.116.245.31","user":"Admin","app":"activity","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v2/widget-items?widgets%5B%5D=activity","message":"Object is invalid, missing keys:{\"2\":\"link\"}","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36","version":"28.0.5.1","exception":{"Exception":"OCP\\RichObjectStrings\\InvalidObjectExeption","Message":"Object is invalid, missing keys:{\"2\":\"link\"}","Code":0,"Trace":[{"file":"/var/www/nextcloud/lib/private/RichObjectStrings/Validator.php","line":80,"function":"validateParameter","class":"OC\\RichObjectStrings\\Validator","type":"->"},{"file":"/var/www/nextcloud/apps/activity/lib/GroupHelper.php","line":85,"function":"validate","class":"OC\\RichObjectStrings\\Validator","type":"->"},{"file":"/var/www/nextcloud/apps/activity/lib/GroupHelper.php","line":61,"function":"addEvent","class":"OCA\\Activity\\GroupHelper","type":"->"},{"file":"/var/www/nextcloud/apps/activity/lib/Data.php","line":248,"function":"addActivity","class":"OCA\\Activity\\GroupHelper","type":"->"},{"file":"/var/www/nextcloud/apps/activity/lib/Dashboard/ActivityWidget.php","line":161,"function":"get","class":"OCA\\Activity\\Data","type":"->"},{"file":"/var/www/nextcloud/apps/dashboard/lib/Controller/DashboardApiController.php","line":142,"function":"getItemsV2","class":"OCA\\Activity\\Dashboard\\ActivityWidget","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":230,"function":"getWidgetItemsV2","class":"OCA\\Dashboard\\Controller\\DashboardApiController","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":137,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/App.php","line":184,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/Route/Router.php","line":315,"function":"main","class":"OC\\AppFramework\\App","type":"::"},{"file":"/var/www/nextcloud/ocs/v1.php","line":65,"function":"match","class":"OC\\Route\\Router","type":"->"},{"file":"/var/www/nextcloud/ocs/v2.php","line":23,"args":["/var/www/nextcloud/ocs/v1.php"],"function":"require_once"}],"File":"/var/www/nextcloud/lib/private/RichObjectStrings/Validator.php","Line":98,"message":"Object is invalid, missing keys:{\"2\":\"link\"}","exception":{},"CustomMessage":"Object is invalid, missing keys:{\"2\":\"link\"}"}}

Is this the first time you’ve seen this error? (Y/N):
Yes, previously the log only grew very slowly.

Steps to replicate it:

  1. Log in
  2. As the dashboard shows, log lines are starting to appear

The output of your Nextcloud log in Admin > Logging:

Errore	activity	
InvalidObjectExeption
Object is invalid, missing keys:{"2":"link"}

14 giu 2024, 17:54:36	

Avviso	suspicious_login	
Detected a login from a suspicious login. user=Admin ip=AMENDED strategy=ipv4

14 giu 2024, 17:54:15	

Errore	activity	
InvalidObjectExeption
Object is invalid, missing keys:{"2":"link"}

14 giu 2024, 17:53:44	

Errore	activity	
InvalidObjectExeption
Object is invalid, missing keys:{"2":"link"}

14 giu 2024, 17:53:14	

Errore	activity	
InvalidObjectExeption
Object is invalid, missing keys:{"2":"link"}

14 giu 2024, 17:52:44	

Errore	activity	
InvalidObjectExeption
Object is invalid, missing keys:{"2":"link"}

14 giu 2024, 17:52:14	

Errore	activity	
InvalidObjectExeption
Object is invalid, missing keys:{"2":"link"}

14 giu 2024, 17:51:44
(...)

The output of your config.php file in /path/to/nextcloud (make sure you remove any identifiable information!):

<?php
$CONFIG = array (
  'passwordsalt' => 'AMENDED',
  'secret' => 'AMENDED',
  'trusted_domains' => 
  array (
    0 => 'localhost',
    1 => 'AMENDED',
    2 => 'AMENDED',
    3 => 'AMENDED',
  ),
  'trusted_proxies' => 
  array (
    0 => 'AMENDED',
    1 => 'AMENDED',
    2 => 'AMENDED',
    3 => 'AMENDED',
  ),
  'datadirectory' => '/mnt/ncdata',
  'dbtype' => 'pgsql',
  'version' => '28.0.5.1',
  'overwrite.cli.url' => 'https://AMENDED/',
  'dbname' => 'nextcloud_db',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'AMENDED',
  'dbpassword' => 'AMENDED',
  'installed' => true,
  'instanceid' => 'AMENDED',
  'upgrade.disable-web' => 'true',
  'log_type' => 'file',
  'logfile' => '/var/log/nextcloud/nextcloud.log',
  'loglevel' => '2',
  'log.condition' => 
  array (
    'apps' => 
    array (
      0 => 'admin_audit',
    ),
  ),
  'mail_smtpmode' => 'smtp',
  'remember_login_cookie_lifetime' => '1800',
  'log_rotate_size' => '10485760',
  'trashbin_retention_obligation' => 'auto, 180',
  'versions_retention_obligation' => 'auto, 365',
  'simpleSignUpLink.shown' => false,
  'filelocking.enabled' => true,
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => '/var/run/redis/redis-server.sock',
    'port' => 0,
    'timeout' => 0.5,
    'dbindex' => 0,
    'password' => 'AMENDED',
  ),
  'logtimezone' => 'Europe/Rome',
  'htaccess.RewriteBase' => '/',
  'enable_previews' => true,
  'enabledPreviewProviders' => 
  array (
    11 => 'OC\\Preview\\PNG',
    12 => 'OC\\Preview\\JPEG',
    13 => 'OC\\Preview\\GIF',
    14 => 'OC\\Preview\\BMP',
    15 => 'OC\\Preview\\MarkDown',
    16 => 'OC\\Preview\\MP3',
    17 => 'OC\\Preview\\TXT',
    18 => 'OC\\Preview\\Movie',
  ),
  'preview_max_x' => '2048',
  'preview_max_y' => '2048',
  'jpeg_quality' => '60',
  'maintenance' => false,
  'maintenance_window_start' => 1,
  'twofactor_enforced' => 'true',
  array (
    11 => 'OC\\Preview\\PNG',
    12 => 'OC\\Preview\\JPEG',
    13 => 'OC\\Preview\\GIF',
    14 => 'OC\\Preview\\BMP',
    15 => 'OC\\Preview\\MarkDown',
    16 => 'OC\\Preview\\MP3',
    17 => 'OC\\Preview\\TXT',
    18 => 'OC\\Preview\\Movie',
  ),
  'preview_max_x' => '2048',
  'preview_max_y' => '2048',
  'jpeg_quality' => '60',
  'maintenance' => false,
  'maintenance_window_start' => 1,
  'twofactor_enforced' => 'true',
  'twofactor_enforced_groups' => 
  array (
    0 => 'admin',
  ),
  'twofactor_enforced_excluded_groups' => 
  array (
  ),
  'mail_smtpsecure' => 'ssl',
  'mail_sendmailmode' => 'smtp',
  'mail_from_address' => 'nextcloud',
  'mail_domain' => 'AMENDED',
  'mail_smtpauthtype' => 'LOGIN',
  'mail_smtpauth' => 1,
  'mail_smtphost' => 'AMENDED',
  'mail_smtpport' => '465',
  'mail_smtpname' => 'no-reply@AMENDED',
  'mail_smtppassword' => 'AMENDED',
  'default_phone_region' => 'it',
  'memcache.local' => '\\OC\\Memcache\\Redis',
  'ldapProviderFactory' => 'OCA\\User_LDAP\\LDAPProviderFactory',
  'bulkupload.enabled' => false,
  'allow_local_remote_servers' => true,
);

The output of your Apache/nginx/system log in /var/log/____:

nothing suspicious here

Output errors in nextcloud.log in /var/www/ or as admin user in top right menu, filtering for errors. Use a pastebin service if necessary.

{"reqId":"xf44UDKXPXc7xalwW31S","level":3,"time":"2024-06-14T17:39:04+02:00","remoteAddr":"128.116.245.31","user":"Admin","app":"activity","method":"GET","url":"/ocs/v2.php/apps/dashboard/api/v2/widget-items?widgets%5B%5D=activity","message":"Object is invalid, missing keys:{\"2\":\"link\"}","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36","version":"28.0.5.1","exception":{"Exception":"OCP\\RichObjectStrings\\InvalidObjectExeption","Message":"Object is invalid, missing keys:{\"2\":\"link\"}","Code":0,"Trace":[{"file":"/var/www/nextcloud/lib/private/RichObjectStrings/Validator.php","line":80,"function":"validateParameter","class":"OC\\RichObjectStrings\\Validator","type":"->"},{"file":"/var/www/nextcloud/apps/activity/lib/GroupHelper.php","line":85,"function":"validate","class":"OC\\RichObjectStrings\\Validator","type":"->"},{"file":"/var/www/nextcloud/apps/activity/lib/GroupHelper.php","line":61,"function":"addEvent","class":"OCA\\Activity\\GroupHelper","type":"->"},{"file":"/var/www/nextcloud/apps/activity/lib/Data.php","line":248,"function":"addActivity","class":"OCA\\Activity\\GroupHelper","type":"->"},{"file":"/var/www/nextcloud/apps/activity/lib/Dashboard/ActivityWidget.php","line":161,"function":"get","class":"OCA\\Activity\\Data","type":"->"},{"file":"/var/www/nextcloud/apps/dashboard/lib/Controller/DashboardApiController.php","line":142,"function":"getItemsV2","class":"OCA\\Activity\\Dashboard\\ActivityWidget","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":230,"function":"getWidgetItemsV2","class":"OCA\\Dashboard\\Controller\\DashboardApiController","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":137,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/AppFramework/App.php","line":184,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->"},{"file":"/var/www/nextcloud/lib/private/Route/Router.php","line":315,"function":"main","class":"OC\\AppFramework\\App","type":"::"},{"file":"/var/www/nextcloud/ocs/v1.php","line":65,"function":"match","class":"OC\\Route\\Router","type":"->"},{"file":"/var/www/nextcloud/ocs/v2.php","line":23,"args":["/var/www/nextcloud/ocs/v1.php"],"function":"require_once"}],"File":"/var/www/nextcloud/lib/private/RichObjectStrings/Validator.php","Line":98,"message":"Object is invalid, missing keys:{\"2\":\"link\"}","exception":{},"CustomMessage":"Object is invalid, missing keys:{\"2\":\"link\"}"}}