SMB/CIFS external store used as desktop sync fails "cannot get folder list" after a while

Nextcloud version (eg, 20.0.5): 23.0.12
Operating system and version (eg, Ubuntu 20.04): debian 10 in proxmox container
Apache or nginx version (eg, Apache 2.4.25): apache 2.4.38
PHP version (eg, 7.4): 7.3.31
smbclient installed

The issue you are facing:

I have the linux desktop client v3.4.2 running on Ubuntu 22.04.
(The same error is seen on the Windows desktop client version 3.6.4 running on windows 11.)

After a while (I haven’t characterised the delay exactly, but it’s about 1 hour), my system tray icon changes from a green tick to a red cross. I see an error message about not being able to get the folder list for mount ID 1.

It stays that way until I open my cloud user interface and open a folder that is also the target of the desktop sync.
That folder is an external smb/cifs mount.

My gut feeling is that the smb/cifs mount is unmounted after a timeout of about an hour. Visiting the mounted directory on the web user-interface causes it to be remounted successfully, but attempting to sync it from the desktop client does not.

Is this the first time you’ve seen this error? (Y/N):
I didn’t note when I first saw this error, but I don’t recall seeing it a month ago. It is now repeatable, so that the default state of my desktop synchronisation client is to show an error and not be performing synchronisation. I have to manually visit the folder using the web interface in order to get sync to work.

Steps to replicate it:

  1. Create external smb/cifs store, assign to user
  2. create desktop sync targeting this store
  3. wait for an hour, green tick changes to red cross
Fatal	webdav	Sabre\DAV\Exception\ServiceUnavailable: Storage with mount id 1 is not available

    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php - line 78:

    OCA\DAV\Connector\Sabre\Directory->getChild("stephens")

    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php - line 73:

    Sabre\DAV\Tree->getNodeForPath("files/adrians/stephens")

    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Tree.php - line 73:

    Sabre\DAV\Tree->getNodeForPath("files/adria ... s")

    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 971:

    Sabre\DAV\Tree->getNodeForPath("files/adria ... p")

    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 1661:

    Sabre\DAV\Server->getPropertiesIteratorForPath("files/adria ... p", [ "{DAV:}getetag"], 0)

    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 1646:

    Sabre\DAV\Server->writeMultiStatus(Sabre\Xml\Wr ... ]}, Generator {}, false)

    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/CorePlugin.php - line 346:

    Sabre\DAV\Server->generateMultiStatus(Generator {}, false)

    /var/www/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php - line 89:

    Sabre\DAV\CorePlugin->httpPropFind(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})

    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 472:

    Sabre\DAV\Server->emit("method:PROPFIND", [ Sabre\HTTP ... }])

    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 253:

    Sabre\DAV\Server->invokeMethod(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})

    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 321:

    Sabre\DAV\Server->start()

    /var/www/nextcloud/apps/dav/lib/Server.php - line 339:

    Sabre\DAV\Server->exec()

    /var/www/nextcloud/apps/dav/appinfo/v2/remote.php - line 35:

    OCA\DAV\Server->exec()

    /var/www/nextcloud/remote.php - line 170:

    require_once("/var/www/ne ... p")
(repeated multiple times)

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

<?php
$CONFIG = array (
 xx
xx,
  'trusted_domains' => 
  array (
   xx
  ),
  'datadirectory' => '/var/www/nextcloud-data',
  'dbtype' => 'mysql',
  'version' => '23.0.12.2',
  'overwrite.cli.url' => 'http://localhost',
  'dbname' => 'nextcloud',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'nextcloud',
  'dbpassword' => xx,
  'installed' => true,
  'memcache.local' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => '/var/run/redis/redis.sock',
    'port' => 0,
    'timeout' => 0.0,
  ),
  'filelocking.enabled' => true,
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'instanceid' => 'xx',
  'mail_from_address' => 'xx',
  'mail_smtpmode' => 'smtp',
  'mail_sendmailmode' => 'smtp',
  'mail_domain' => 'xx,
  'mail_smtphost' => 'xx',
  'mail_smtpport' => '25',
  'maintenance' => false,
  'theme' => '',
  'loglevel' => 2,
  'updater.secret' => 'xx',
);

The output of your Apache/nginx/system log in /var/log/____:
error.log - nothing relevant

access log, last couple of lines: (seem to relate to the windows client, which is also running on another machine)
localhost:443 10.1.1.55 - adrians [16/Jan/2023:16:00:24 +0000] “PROPFIND /remote.php/xx HTTP/1.1” 207 2509 “-” “Mozilla/5.0 (Windows) mirall/3.6.4stable-Win64 (build 20221208) (Nextcloud, windows-10.0.22621 ClientArchitecture: x86_64 OsArchitecture: x86_64)”
localhost:443 10.1.1.55 - adrians [16/Jan/2023:16:00:25 +0000] “PROPFIND /remote.php/dav/files/xx HTTP/1.1” 207 2507 “-” “Mozilla/5.0 (Windows) mirall/3.6.4stable-Win64 (build 20221208) (Nextcloud, windows-10.0.22621 ClientArchitecture: x86_64 OsArchitecture: x86_64)”


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.

no recent nextcloud.log file found in /var/www/...

no top right admin menu errors visible.

I uninstalled the command line smbclient and installed the php library interface to libsmbclient. This appeared to fix the problem.