nextcloud / groupfolders

๐Ÿ“๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Admin-configured folders shared by everyone in a group. https://github.com/nextcloud-releases/groupfolders
https://apps.nextcloud.com/apps/groupfolders
278 stars 85 forks source link

Internal Server Error after update to v 2.0.0 #240

Closed hirschrobert closed 5 years ago

hirschrobert commented 5 years ago

Log says Interface 'OCA\Files_Versions\Versions\IVersionBackend' not found at /var/www/nextcloud/apps/groupfolders/lib/Versions/VersionsBackend.php#37

I had to disable groupfolders manually to get NC going again.

NC Version: 14.0.4.2 Apache/2.4.10 (Debian) PHP Version: 7.0.32 MySQL Version: 5.5.62

pgassmann commented 5 years ago

I just updated on production channel from nextcloud 13 to 14 and then updated all the apps.

When the groupfolders app is enabled I have following problems:

The occ cli throws a Fatal Error and the logs show thousands Warnings like: Undefined index: parent at /var/www/nextcloud/lib/private/Files/Cache/Cache.php#168

sudo -u www-data php7.0 /var/www/nextcloud/occ files:scan --all
PHP Fatal error:  Interface 'OCA\Files_Versions\Versions\IVersionBackend' not found in /var/www/nextcloud/apps/groupfolders/lib/Versions/VersionsBackend.php on line 37PHP Fatal error:  Interface 'OCA\Files_Versions\Versions\IVersionBackend' not found in /var/www/nextcloud/apps/groupfolders/lib/Versions/VersionsBackend.php on line 37

Nextcloud seems to work fine otherwise.

TP75 commented 5 years ago

Issue confirmed.

  1. Server gets into internal loop with heavy logging the a.m. message repeatedly.
  2. occ maintenance:mode --on does not stop the issue (update: occ is blocked by issue)
  3. occ maintenance:repair does not repair
  4. apparently only deactivating group folder 2.0.0 stops the issue
  5. (update) occ maintenance:mode --on can only succeed after deactivation of group folder app

We had to endure additonal errors due to side effects on core engine, like:

Error internet_connection_check GuzzleHttp\Exception\ConnectException: cURL error 7: Failed to connect to nextcloud.com port 443: Connection timed out (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

/var/www/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php - line 150:

This is a total mess as we heavily depend on group folders.

NC Version: 14.0.4.2 Apache/2.4.25-3+deb9u6 amd64 PHP Version: 7.0.30 MySQL (i.e. MariDB) Version: 10.1.37

Furthermore, the backend gets into responsive delays even after deactivating the group folders app.

Update:

pgassmann commented 5 years ago

This issue probably affects hundreds of users that just got the notification about the Nextcloud 13 to 14 update on the production channel

pgassmann commented 5 years ago

I did now a manual downgrade to the previously installed version (1.2.0) by restoring apps/groupfolders/ from backup

TP75 commented 5 years ago

I did now a manual downgrade to the previously installed version (1.2.0) by restoring apps/groupfolders/ from backup

Would be trying to manually reinstall the group folder 1.3.3 app from the command line. Downloading of the tar.gz was successful but no access to:

Unfortunately, the NC 13/14 admin manual seems to be offline or overloaded. Not helpful. However, unsure if this is related to the a.m. issue or just a coincidence.

pgassmann commented 5 years ago

Would be trying to manually reinstall the group folder 1.3.3 app from the command line.

@TP75 How can I install a specific app version from the cli?

The reason for the offline docs could be the overload caused by the release of nc14 on the production channel

HewittJC commented 5 years ago

Also seeing this issue, doesn't seem to be affecting use of NC as a whole but it is preventing the OCC CLI from working properly.

In the mean time is there any sort of work around we could do?

TP75 commented 5 years ago

doesn't seem to be affecting use of NC

see #241 and my above findings

In the mean time is there any sort of work around we could do?

No guarantees and solely at your own risk.

deactivating group folders 2.0.0 stops the issue and makes occ work again.

Downgrading to group folders 1.3.3 requires NC >=13.0.0,<15.0.0 i.e. works for NC 13 and NC 14 only.

First: Just wait for an official fix and ignore the below workaround procedure completely.

Second: Please be aware this procedure is invasive and primarily ensure a recent backup of both the nextcloud instance and the nextcloud data tree.

Third: Pleasure ensure you both truly understand the below procedure and you are fully aware of any impact including possible loss of access and/or data.

Establish a volatile folder ~/my-nextcloud and check URL and change folder names and insert sudo where applicable in the b.m. procedure.

Apparently one could try this as (*nix) administrator on the command line (CLI):

sudo -u www-data php /var/www/nextcloud/occ  maintenance:mode --on

cd ~/my-nextcloud

sudo mv /var/www/nextcloud/apps/groupfolders groupfolder.backup

wget -q https://github.com/nextcloud/groupfolders/releases/download/v1.3.3/groupfolders-1.3.3.tar.gz  -P  .

sudo -u www-data tar -zxf groupfolders-1.3.3.tar.gz -C /var/www/nextcloud/apps

sudo -u www-data php /var/www/nextcloud/occ app:enable groupfolders

sudo -u www-data php /var/www/nextcloud/occ  maintenance:mode --off

I copied from the commentary Install app via command line - occ app:install #159 by @Xeboc and adjusted the script to this issue.

HewittJC commented 5 years ago

Thanks @TP75 I think I will hold off for now. Our NC seems to overall be working as intended and GroupFolders seems okay on the user side.

I will wait for something less invasive then.

reinob commented 5 years ago

I upgraded NC to 15 (beta channel) hoping that Groupfolders 2.0.0 would work fine with it. It doesn't, and now I can't enable 1.3.3 (downloaded as per the above message by @TP75), because 1.3.3 requires NC 14 or lower.

Has the bug been identified? If a solution is coming soon I'll wait with NC 15. Otherwise I'll have to downgrade and be careful when upgrading apps (isn't there a beta channel for apps?).

fischercer commented 5 years ago

I can confirm this bug.

For me this triggered a 500 Internal server error on the Web Interface. OCC was not accessible due to: PHP Fatal error: Interface 'OCA\Files_Versions\Versions\IVersionBackend' not found in /var/www/html/custom_apps/groupfolders/lib/Versions/VersionsBackend.php on line 37

I had to remove the app folder: /var/www/html/custom_apps#rm -R groupfolders/

Which reenabled OCC and disable the plugin /var/www/html# runuser --user www-data -- php occ app:disable groupfolders

This fixed the Web Interface

Using Nextcloud docker container 14.0.4

reinob commented 5 years ago

I had to remove the app folder: /var/www/html/custom_apps#rm -R groupfolders/

Which reenabled OCC and disable the plugin /var/www/html# runuser --user www-data -- php occ app:disable groupfolders

This fixed the Web Interface

But if you removed the group folders app then surely nothing was "fixed". Unless you do not use Group Folders at all.

I have disabled the app (so that other stuff in Nextcloud works), but I have lost the (ability to use) Group Folders.

I'm starting to think about alternatives here. It just cannot be that an upgrade to an almost-official app breaks its very functionality. I mean, does Group Folders 2.0.0 work in ANY environment at all? I assume no (at least neither NC 14 nor 15-beta), which means it was updated without being tested at all.

makuser commented 5 years ago

I'm affected too.

@icewind1991 you should probably pull this release immediately, until even more users update to this faulty module and break their setups.

fischercer commented 5 years ago

But if you removed the group folders app then surely nothing was "fixed". Unless you do not use Group Folders at all.

I get rid of the 500 internal server error and got occ working again.

I have disabled the app (so that other stuff in Nextcloud works), but I have lost the (ability to use) Group Folders.

That is true, but disabling was not even possible in my case. So we have to wait for a fix. I guess this is because groupfolders hooks into occ starting with version 2.0.0.

makuser commented 5 years ago

That is true, but disabling was not even possible in my case. So we have to wait for a fix. I guess this is because groupfolders hooks into occ starting with version 2.0.0.

I'm pretty sure you don't have to wait for anything other than some free time to fix it on your own side. Just download the previous release (1.3.3) and replace the installed version with the previous release.

Luckily, due to the fact that the update breaks nextcloud immediately afterwards, no database migrations were run. That means you don't even need to revert anything in the database. You basically delete nextcloud/apps/groupfolders and tar -xvf groupfolders-1.3.3.tar.gz to your nextcloud/apps folder.

In case you need detailed instructions, look at https://github.com/nextcloud/groupfolders/issues/240#issuecomment-445948456 by @TP75.

This should get you going right away, without any further limitations.

hirschrobert commented 5 years ago

In case disabling the groupfolders app via

sudo -u www-data php occ maintenance:mode --on

does not work due to the error, set in your config/config.php

"maintenance" => true,

makuser commented 5 years ago

I'm starting to think about alternatives here. It just cannot be that an upgrade to an almost-official app breaks its very functionality. I mean, does Group Folders 2.0.0 work in ANY environment at all?

Yes. I have several nextcloud instances and it so far only broke on one.

blizzz commented 5 years ago

OCA\Files_Versions\Versions\IVersionBackend was introduced in NC 15. I assume, it's best to pull this indeed, and re-release with support >= 15. @icewind1991

reinob commented 5 years ago

I just installed NC 15 from scratch (dropped database too). If I enable Group Folders as soon as I try to do anything I get an internal error. Not even OCC works (unhandled exception). Only wiping the app folder restores a working NC.

@makuser: what do your several nextcloud instances run (version of NC, version of Groupfolders?)

makuser commented 5 years ago

@makuser: what do your several nextcloud instances run (version of NC, version of Groupfolders?)

Obviosuly all are running the same version of NC, which is the same as mentioned in the OP, otherwise it would not have been worth mentioning it at all.

I only get the obvious errors due to the missing IVersionBackend class in NC <15 when I use the occ command. But at least I can still open the settings page, etc.

There's only one instance I have, where it does not matter which page I try to open or which action I try to perform, it'll always throw an error and return a HTTP 500 status code.

And I already tried comparing the installed apps, etc. of this instance to the others that are working, but so far I was not able to find out which combination of apps might possibly allow Nextcloud 14 to function with groupfolders 2.0. IMO NC should always fail, mo matter which other apps are installed, because a class which is included/extended does not exist. And this class is only provided by NC core, not by any other app. So I myself so far have no idea why it works in some setups, because it really shouldn't.

icewind1991 commented 5 years ago

can you check if https://github.com/nextcloud/groupfolders/commit/fa059d36e9754544abc93f0e2c613815e8f3358c fixes the issue

makuser commented 5 years ago

can you check if fa059d3 fixes the issue

@icewind1991 Unfortunately it does not fix it entirely. occ works now because you implemented the check for that class and give an error to the user if it doesn't exist, that's something.

But I'm still getting this error now, because another app depended on the functions you provided, that are not changed (args changed, etc.).

{
    "app": "index",
    "level": 3,
    "message": {
        "Code": 0,
        "CustomMessage": "--",
        "Exception": "TypeError",
        "File": "/var/www/nextcloud/apps/groupfolders/lib/Folder/FolderManager.php",
        "Line": 43,
        "Message": "Argument 2 passed to OCA\\GroupFolders\\Folder\\FolderManager::__construct() must implement interface OCP\\IGroupManager, none given, called in /var/www/nextcloud/apps/files_fulltextsearch/lib/Service/GroupFoldersService.php on line 91",
        "Trace": [
            {
                "args": [
                    {
                        "__class__": "OC\\DB\\Connection"
                    }
                ],
                "class": "OCA\\GroupFolders\\Folder\\FolderManager",
                "file": "/var/www/nextcloud/apps/files_fulltextsearch/lib/Service/GroupFoldersService.php",
                "function": "__construct",
                "line": 91,
                "type": "->"
            },
            {
                "args": [
                    "marc",
                    {
                        "__class__": "OC\\DB\\Connection"
                    },
                    {
                        "__class__": "OC\\App\\AppManager"
                    },
                    {
                        "__class__": "OC\\Share20\\Manager"
                    },
                    {
                        "__class__": "OC\\Group\\Manager"
                    },
                    {
                        "__class__": "OCA\\Files_FullTextSearch\\Service\\LocalFilesService"
                    },
                    {
                        "__class__": "OCA\\Files_FullTextSearch\\Service\\ConfigService",
                        "defaults": {
                            "files_audio": "0",
                            "files_encrypted": "0",
                            "files_external": "0",
                            "files_federated": "0",
                            "files_group_folders": "0",
                            "files_image": "0",
                            "files_local": "1",
                            "files_office": "1",
                            "files_pdf": "1",
                            "files_size": "20"
                        }
                    },
                    {
                        "__class__": "OCA\\Files_FullTextSearch\\Service\\MiscService"
                    }
                ],
                "class": "OCA\\Files_FullTextSearch\\Service\\GroupFoldersService",
                "function": "__construct",
                "type": "->"
            },
            {
                "args": [
                    [
                        "marc",
                        {
                            "__class__": "OC\\DB\\Connection"
                        },
                        {
                            "__class__": "OC\\App\\AppManager"
                        },
                        {
                            "__class__": "OC\\Share20\\Manager"
                        },
                        {
                            "__class__": "OC\\Group\\Manager"
                        },
                        {
                            "__class__": "OCA\\Files_FullTextSearch\\Service\\LocalFilesService"
                        },
                        {
                            "__class__": "OCA\\Files_FullTextSearch\\Service\\ConfigService",
                            "defaults": {
                                "files_audio": "0",
                                "files_encrypted": "0",
                                "files_external": "0",
                                "files_federated": "0",
                                "files_group_folders": "0",
                                "files_image": "0",
                                "files_local": "1",
                                "files_office": "1",
                                "files_pdf": "1",
                                "files_size": "20"
                            }
                        },
                        {
                            "__class__": "OCA\\Files_FullTextSearch\\Service\\MiscService"
                        }
                    ]
                ],
                "class": "ReflectionClass",
                "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
                "function": "newInstanceArgs",
                "line": 81,
                "type": "->"
            },
            {
                "args": [
                    {
                        "__class__": "ReflectionClass",
                        "name": "OCA\\Files_FullTextSearch\\Service\\GroupFoldersService"
                    }
                ],
                "class": "OC\\AppFramework\\Utility\\SimpleContainer",
                "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
                "function": "buildClass",
                "line": 98,
                "type": "->"
            },
            {
                "args": [
                    "OCA\\Files_FullTextSearch\\Service\\GroupFoldersService"
                ],
                "class": "OC\\AppFramework\\Utility\\SimpleContainer",
                "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
                "function": "resolve",
                "line": 119,
                "type": "->"
            },
            {
                "args": [
                    "OCA\\Files_FullTextSearch\\Service\\GroupFoldersService"
                ],
                "class": "OC\\AppFramework\\Utility\\SimpleContainer",
                "file": "/var/www/nextcloud/lib/private/AppFramework/DependencyInjection/DIContainer.php",
                "function": "query",
                "line": 453,
                "type": "->"
            },
            {
                "args": [
                    "OCA\\Files_FullTextSearch\\Service\\GroupFoldersService"
                ],
                "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
                "file": "/var/www/nextcloud/lib/private/AppFramework/DependencyInjection/DIContainer.php",
                "function": "queryNoFallback",
                "line": 424,
                "type": "->"
            },
            {
                "args": [
                    "OCA\\Files_FullTextSearch\\Service\\GroupFoldersService"
                ],
                "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
                "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
                "function": "query",
                "line": 68,
                "type": "->"
            },
            {
                "args": [
                    {
                        "__class__": "ReflectionClass",
                        "name": "OCA\\Files_FullTextSearch\\Service\\FilesService"
                    }
                ],
                "class": "OC\\AppFramework\\Utility\\SimpleContainer",
                "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
                "function": "buildClass",
                "line": 98,
                "type": "->"
            },
            {
                "args": [
                    "OCA\\Files_FullTextSearch\\Service\\FilesService"
                ],
                "class": "OC\\AppFramework\\Utility\\SimpleContainer",
                "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
                "function": "resolve",
                "line": 119,
                "type": "->"
            },
            {
                "args": [
                    "OCA\\Files_FullTextSearch\\Service\\FilesService"
                ],
                "class": "OC\\AppFramework\\Utility\\SimpleContainer",
                "file": "/var/www/nextcloud/lib/private/AppFramework/DependencyInjection/DIContainer.php",
                "function": "query",
                "line": 453,
                "type": "->"
            },
            {
                "args": [
                    "OCA\\Files_FullTextSearch\\Service\\FilesService"
                ],
                "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
                "file": "/var/www/nextcloud/lib/private/AppFramework/DependencyInjection/DIContainer.php",
                "function": "queryNoFallback",
                "line": 424,
                "type": "->"
            },
            {
                "args": [
                    "OCA\\Files_FullTextSearch\\Service\\FilesService"
                ],
                "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
                "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
                "function": "query",
                "line": 68,
                "type": "->"
            },
            {
                "args": [
                    {
                        "__class__": "ReflectionClass",
                        "name": "OCA\\Files_FullTextSearch\\Provider\\FilesProvider"
                    }
                ],
                "class": "OC\\AppFramework\\Utility\\SimpleContainer",
                "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
                "function": "buildClass",
                "line": 98,
                "type": "->"
            },
            {
                "args": [
                    "OCA\\Files_FullTextSearch\\Provider\\FilesProvider"
                ],
                "class": "OC\\AppFramework\\Utility\\SimpleContainer",
                "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
                "function": "resolve",
                "line": 119,
                "type": "->"
            },
            {
                "args": [
                    "OCA\\Files_FullTextSearch\\Provider\\FilesProvider"
                ],
                "class": "OC\\AppFramework\\Utility\\SimpleContainer",
                "file": "/var/www/nextcloud/lib/private/AppFramework/DependencyInjection/DIContainer.php",
                "function": "query",
                "line": 453,
                "type": "->"
            },
            {
                "args": [
                    "OCA\\Files_FullTextSearch\\Provider\\FilesProvider"
                ],
                "class": "OC\\AppFramework\\DependencyInjection\\DIContainer",
                "file": "/var/www/nextcloud/lib/private/ServerContainer.php",
                "function": "queryNoFallback",
                "line": 116,
                "type": "->"
            },
            {
                "args": [
                    "OCA\\Files_FullTextSearch\\Provider\\FilesProvider"
                ],
                "class": "OC\\ServerContainer",
                "file": "/var/www/nextcloud/apps/fulltextsearch/lib/Service/ProviderService.php",
                "function": "query",
                "line": 107,
                "type": "->"
            },
            {
                "args": [
                    "files_fulltextsearch",
                    "OCA\\Files_FullTextSearch\\Provider\\FilesProvider"
                ],
                "class": "OCA\\FullTextSearch\\Service\\ProviderService",
                "file": "/var/www/nextcloud/apps/fulltextsearch/lib/Service/ProviderService.php",
                "function": "loadProvider",
                "line": 271,
                "type": "->"
            },
            {
                "args": [
                    "files_fulltextsearch",
                    [
                        "OCA\\Files_FullTextSearch\\Provider\\FilesProvider"
                    ]
                ],
                "class": "OCA\\FullTextSearch\\Service\\ProviderService",
                "file": "/var/www/nextcloud/apps/fulltextsearch/lib/Service/ProviderService.php",
                "function": "loadProvidersFromList",
                "line": 253,
                "type": "->"
            },
            {
                "args": [
                    "files_fulltextsearch"
                ],
                "class": "OCA\\FullTextSearch\\Service\\ProviderService",
                "file": "/var/www/nextcloud/apps/fulltextsearch/lib/Service/ProviderService.php",
                "function": "loadProvidersFromApp",
                "line": 87,
                "type": "->"
            },
            {
                "args": [],
                "class": "OCA\\FullTextSearch\\Service\\ProviderService",
                "file": "/var/www/nextcloud/apps/fulltextsearch/lib/Service/ProviderService.php",
                "function": "loadProviders",
                "line": 141,
                "type": "->"
            },
            {
                "args": [],
                "class": "OCA\\FullTextSearch\\Service\\ProviderService",
                "file": "/var/www/nextcloud/apps/fulltextsearch/lib/Capabilities.php",
                "function": "getConfiguredProviders",
                "line": 73,
                "type": "->"
            },
            {
                "args": [],
                "class": "OCA\\FullTextSearch\\Capabilities",
                "file": "/var/www/nextcloud/lib/private/CapabilitiesManager.php",
                "function": "getCapabilities",
                "line": 68,
                "type": "->"
            },
            {
                "args": [],
                "class": "OC\\CapabilitiesManager",
                "file": "/var/www/nextcloud/lib/private/Template/JSConfigHelper.php",
                "function": "getCapabilities",
                "line": 159,
                "type": "->"
            },
            {
                "args": [],
                "class": "OC\\Template\\JSConfigHelper",
                "file": "/var/www/nextcloud/lib/private/TemplateLayout.php",
                "function": "getConfig",
                "line": 176,
                "type": "->"
            },
            {
                "args": [
                    "user",
                    "files"
                ],
                "class": "OC\\TemplateLayout",
                "file": "/var/www/nextcloud/lib/private/legacy/template.php",
                "function": "__construct",
                "line": 210,
                "type": "->"
            },
            {
                "args": [
                    {
                        "allowShareWithLink": "yes",
                        "appContents": {
                            "deletedshares": {
                                "content": "<div id='notification'></div>\n\n<div id=\"emptycontent\" class=\"hidden\"></div>\n\n<input type=\"hidden\" name=\"dir\" value=\"\" id=\"dir\">\n\n<div class=\"nofilterresults hidden\">\n\t<div class=\"icon-search\"></div>\n\t<h2>Keine Eintr\u00e4ge in diesem Ordner gefunden</h2>\n</div>\n\n<table id=\"filestable\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th id='headerName' class=\"hidden column-name\">\n\t\t\t\t<div id=\"headerName-container\">\n\t\t\t\t\t<a class=\"name sort columntitle\" data-sort=\"name\"><span>Name</span><span class=\"sort-indicator\"></span></a>\n\t\t\t\t</div>\n\t\t\t</th>\n\t\t\t<th id=\"headerDate\" class=\"hidden column-mtime\">\n\t\t\t\t<a id=\"modified\" class=\"columntitle\" data-sort=\"mtime\"><span>Freigabezeitpunkt</span><span class=\"sort-indicator\"></span></a>\n\t\t\t</th>\n\t\t\t<th class=\"hidden column-expiration\">\n\t\t\t\t<a class=\"columntitle\"><span>Ablaufdatum</span></a>\n\t\t\t</th>\n\t\t</tr>\n\t</thead>\n\t<tbody id=\"fileList\">\n\t</tbody>\n\t<tfoot>\n\t</tfoot>\n</table>\n",
                                "id": "deletedshares"
                            },
                            "favorites": {
                                "content": "<div id='notification'></div>\n\n<div id=\"emptycontent\" class=\"hidden\">\n\t<div class=\"icon-starred\"></div>\n\t<h2>Noch keine Favoriten vorhanden</h2>\n\t<p>Dateien und Ordner, die als Favoriten markiert werden, erscheinen hier</p>\n</div>\n\n<input type=\"hidden\" name=\"dir\" value=\"\" id=\"dir\">\n\n<div class=\"nofilterresults hidden\">\n\t<div class=\"icon-search\"></div>\n\t<h2>Keine Eintr\u00e4ge in diesem Ordner gefunden</h2>\n\t<p></p>\n</div>\n<table id=\"filestable\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th id='headerName' class=\"hidden column-name\">\n\t\t\t\t<div id=\"headerName-container\">\n\t\t\t\t\t<a class=\"name sort columntitle\" data-sort=\"name\"><span>Name</span><span class=\"sort-indicator\"></span></a>\n\t\t\t\t</div>\n\t\t\t</th>\n\t\t\t<th id=\"headerSize\" class=\"hidden column-size\">\n\t\t\t\t<a class=\"size sort columntitle\" data-sort=\"size\"><span>Gr\u00f6\u00dfe</span><span class=\"sort-indicator\"></span></a>\n\t\t\t</th>\n\t\t\t<th id=\"headerDate\" class=\"hidden column-mtime\">\n\t\t\t\t<a id=\"modified\" class=\"columntitle\" data-sort=\"mtime\"><span>Ge\u00e4ndert</span><span class=\"sort-indicator\"></span></a>\n\t\t\t\t<span class=\"selectedActions\">\n\t\t\t\t    <a href=\"\" class=\"delete-selected\">\n\t\t\t\t\t<img class=\"svg\" alt=\"\"\n\t\t\t\t\t     src=\"/core/img/actions/delete.svg\" />\n\t\t\t\t\tL\u00f6schen\t\t\t\t    </a>\n\t\t\t\t</span>\n\t\t\t</th>\n\t\t</tr>\n\t</thead>\n\t<tbody id=\"fileList\">\n\t</tbody>\n\t<tfoot>\n\t</tfoot>\n</table>\n",
                                "id": "favorites"
                            },
                            "files": {
                                "content": "<div id=\"controls\">\n\t\t<div class=\"actions creatable hidden\">\n\t\t\t<div id=\"uploadprogresswrapper\">\n\t\t\t\t<div id=\"uploadprogressbar\">\n\t\t\t\t\t<em class=\"label outer\" style=\"display:none\"><span class=\"desktop\">Lade hoch\u2026</span><span class=\"mobile\">\u2026</span></em>\n\t\t\t\t</div>\n\t\t\t\t<button class=\"stop icon-close\" style=\"display:none\">\n\t\t\t\t\t<span class=\"hidden-visually\">Hochladen abbrechen</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t\t<div id=\"file_action_panel\"></div>\n\t\t<div class=\"notCreatable notPublic hidden\">\n\t\t\tDu hast keine Berechtigung, hier Dateien hochzuladen oder zu erstellen\t\t</div>\n\t\t<input type=\"hidden\" name=\"permissions\" value=\"\" id=\"permissions\">\n\t<input type=\"hidden\" id=\"free_space\" value=\"\">\n\t\t<input type=\"hidden\" class=\"max_human_file_size\"\n\t\t   value=\"(max )\">\n</div>\n\n<div id=\"emptycontent\" class=\"hidden\">\n\t<div class=\"icon-folder\"></div>\n\t<h2>Keine Dateien vorhanden</h2>\n\t<p class=\"uploadmessage hidden\">Inhalte hochladen oder mit deinen Ger\u00e4ten synchronisieren!</p>\n</div>\n\n<div class=\"nofilterresults emptycontent hidden\">\n\t<div class=\"icon-search\"></div>\n\t<h2>Keine Eintr\u00e4ge in diesem Ordner gefunden</h2>\n\t<p></p>\n</div>\n\n<table id=\"filestable\" data-allow-public-upload=\"yes\" data-preview-x=\"32\" data-preview-y=\"32\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th id=\"headerSelection\" class=\"hidden column-selection\">\n\t\t\t\t<input type=\"checkbox\" id=\"select_all_files\" class=\"select-all checkbox\"/>\n\t\t\t\t<label for=\"select_all_files\">\n\t\t\t\t\t<span class=\"hidden-visually\">Alle ausw\u00e4hlen</span>\n\t\t\t\t</label>\n\t\t\t</th>\n\t\t\t<th id='headerName' class=\"hidden column-name\">\n\t\t\t\t<div id=\"headerName-container\">\n\t\t\t\t\t<a class=\"name sort columntitle\" data-sort=\"name\">\n                        <span>Name</span>\n                        <span class=\"sort-indicator\"></span>\n\n                    </a>\n                    <span id=\"selectedActionsList\" class=\"selectedActions\">\n                        <a href=\"\" class=\"actions-selected\">\n                            <span class=\"icon icon-more\"></span>\n                            <span>Aktionen</span>\n                        </a>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</th>\n\t\t\t<th id=\"headerSize\" class=\"hidden column-size\">\n\t\t\t\t<a class=\"size sort columntitle\" data-sort=\"size\"><span>Gr\u00f6\u00dfe</span><span class=\"sort-indicator\"></span></a>\n\t\t\t</th>\n\t\t\t<th id=\"headerDate\" class=\"hidden column-mtime\">\n\t\t\t\t<a id=\"modified\" class=\"columntitle\" data-sort=\"mtime\"><span>Ge\u00e4ndert</span><span class=\"sort-indicator\"></span></a>\n\t\t\t</th>\n\t\t</tr>\n\t</thead>\n\t<tbody id=\"fileList\">\n\t</tbody>\n\t<tfoot>\n\t</tfoot>\n</table>\n<input type=\"hidden\" name=\"dir\" id=\"dir\" value=\"\" />\n<div class=\"hiddenuploadfield\">\n\t<input type=\"file\" id=\"file_upload_start\" class=\"hiddenuploadfield\" name=\"files[]\" />\n</div>\n<div id=\"editor\"></div><!-- FIXME Do not use this div in your app! It is deprecated and will be removed in the future! -->\n<div id=\"uploadsize-message\" title=\"Der Upload ist zu gro\u00df\">\n\t<p>\n\tDie Datei \u00fcberschreitet die Maximalgr\u00f6\u00dfe f\u00fcr Uploads auf diesem Server.\t</p>\n</div>\n",
                                "id": "files"
                            },
                            "recent": {
                                "content": "<div id='notification'></div>\n\n<div id=\"emptycontent\" class=\"hidden\"></div>\n\n<input type=\"hidden\" name=\"dir\" value=\"\" id=\"dir\">\n\n<div class=\"nofilterresults hidden\">\n\t<div class=\"icon-search\"></div>\n\t<h2>Keine Eintr\u00e4ge in diesem Ordner gefunden</h2>\n\t<p></p>\n</div>\n\n<table id=\"filestable\">\n\t<thead>\n\t<tr>\n\t\t<th id='headerName' class=\"hidden column-name\">\n\t\t\t<div id=\"headerName-container\">\n\t\t\t\t<a class=\"name sort columntitle\"\n\t\t\t\t   data-sort=\"name\"><span>Name</span></a>\n\t\t\t</div>\n\t\t</th>\n\t\t<th id=\"headerSize\" class=\"hidden column-size\">\n\t\t\t<a class=\"size sort columntitle\"\n\t\t\t   data-sort=\"size\"><span>Gr\u00f6\u00dfe</span></a>\n\t\t</th>\n\t\t<th id=\"headerDate\" class=\"hidden column-mtime\">\n\t\t\t<a id=\"modified\" class=\"columntitle\"\n\t\t\t   data-sort=\"mtime\"><span>Ge\u00e4ndert</span><span\n\t\t\t\t\tclass=\"sort-indicator\"></span></a>\n\t\t\t<span class=\"selectedActions\">\n\t\t\t\t<a href=\"\" class=\"delete-selected\">\n\t\t\t\t\t<span class=\"icon icon-delete\"></span>\n\t\t\t\t\t<span>L\u00f6schen</span>\n\t\t\t\t</a>\n\t\t\t</span>\n\t\t</th>\n\t</tr>\n\t</thead>\n\t<tbody id=\"fileList\">\n\t</tbody>\n\t<tfoot>\n\t</tfoot>\n</table>\n",
                                "id": "recent"
                            },
                            "shareoverview": {
                                "content": "<div id='notification'></div>\n\n<div id=\"emptycontent\" class=\"hidden\"></div>\n\n<input type=\"hidden\" name=\"dir\" value=\"\" id=\"dir\">\n\n<div class=\"nofilterresults hidden\">\n\t<div class=\"icon-search\"></div>\n\t<h2>Keine Eintr\u00e4ge in diesem Ordner gefunden</h2>\n</div>\n\n<table id=\"filestable\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th id='headerName' class=\"hidden column-name\">\n\t\t\t\t<div id=\"headerName-container\">\n\t\t\t\t\t<a class=\"name sort columntitle\" data-sort=\"name\"><span>Name</span><span class=\"sort-indicator\"></span></a>\n\t\t\t\t</div>\n\t\t\t</th>\n\t\t\t<th id=\"headerDate\" class=\"hidden column-mtime\">\n\t\t\t\t<a id=\"modified\" class=\"columntitle\" data-sort=\"mtime\"><span>Freigabezeitpunkt</span><span class=\"sort-indicator\"></span></a>\n\t\t\t</th>\n\t\t\t<th class=\"hidden column-expiration\">\n\t\t\t\t<a class=\"columntitle\"><span>Ablaufdatum</span></a>\n\t\t\t</th>\n\t\t</tr>\n\t</thead>\n\t<tbody id=\"fileList\">\n\t</tbody>\n\t<tfoot>\n\t</tfoot>\n</table>\n",
                                "id": "shareoverview"
                            },
                            "sharingin": {
                                "content": "<div id='notification'></div>\n\n<div id=\"emptycontent\" class=\"hidden\"></div>\n\n<input type=\"hidden\" name=\"dir\" value=\"\" id=\"dir\">\n\n<div class=\"nofilterresults hidden\">\n\t<div class=\"icon-search\"></div>\n\t<h2>Keine Eintr\u00e4ge in diesem Ordner gefunden</h2>\n</div>\n\n<table id=\"filestable\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th id='headerName' class=\"hidden column-name\">\n\t\t\t\t<div id=\"headerName-container\">\n\t\t\t\t\t<a class=\"name sort columntitle\" data-sort=\"name\"><span>Name</span><span class=\"sort-indicator\"></span></a>\n\t\t\t\t</div>\n\t\t\t</th>\n\t\t\t<th id=\"headerDate\" class=\"hidden column-mtime\">\n\t\t\t\t<a id=\"modified\" class=\"columntitle\" data-sort=\"mtime\"><span>Freigabezeitpunkt</span><span class=\"sort-indicator\"></span></a>\n\t\t\t</th>\n\t\t\t<th class=\"hidden column-expiration\">\n\t\t\t\t<a class=\"columntitle\"><span>Ablaufdatum</span></a>\n\t\t\t</th>\n\t\t</tr>\n\t</thead>\n\t<tbody id=\"fileList\">\n\t</tbody>\n\t<tfoot>\n\t</tfoot>\n</table>\n",
                                "id": "sharingin"
                            },
                            "sharinglinks": {
                                "content": "<div id='notification'></div>\n\n<div id=\"emptycontent\" class=\"hidden\"></div>\n\n<input type=\"hidden\" name=\"dir\" value=\"\" id=\"dir\">\n\n<div class=\"nofilterresults hidden\">\n\t<div class=\"icon-search\"></div>\n\t<h2>Keine Eintr\u00e4ge in diesem Ordner gefunden</h2>\n</div>\n\n<table id=\"filestable\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th id='headerName' class=\"hidden column-name\">\n\t\t\t\t<div id=\"headerName-container\">\n\t\t\t\t\t<a class=\"name sort columntitle\" data-sort=\"name\"><span>Name</span><span class=\"sort-indicator\"></span></a>\n\t\t\t\t</div>\n\t\t\t</th>\n\t\t\t<th id=\"headerDate\" class=\"hidden column-mtime\">\n\t\t\t\t<a id=\"modified\" class=\"columntitle\" data-sort=\"mtime\"><span>Freigabezeitpunkt</span><span class=\"sort-indicator\"></span></a>\n\t\t\t</th>\n\t\t\t<th class=\"hidden column-expiration\">\n\t\t\t\t<a class=\"columntitle\"><span>Ablaufdatum</span></a>\n\t\t\t</th>\n\t\t</tr>\n\t</thead>\n\t<tbody id=\"fileList\">\n\t</tbody>\n\t<tfoot>\n\t</tfoot>\n</table>\n",
                                "id": "sharinglinks"
                            },
                            "sharingout": {
                                "content": "<div id='notification'></div>\n\n<div id=\"emptycontent\" class=\"hidden\"></div>\n\n<input type=\"hidden\" name=\"dir\" value=\"\" id=\"dir\">\n\n<div class=\"nofilterresults hidden\">\n\t<div class=\"icon-search\"></div>\n\t<h2>Keine Eintr\u00e4ge in diesem Ordner gefunden</h2>\n</div>\n\n<table id=\"filestable\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th id='headerName' class=\"hidden column-name\">\n\t\t\t\t<div id=\"headerName-container\">\n\t\t\t\t\t<a class=\"name sort columntitle\" data-sort=\"name\"><span>Name</span><span class=\"sort-indicator\"></span></a>\n\t\t\t\t</div>\n\t\t\t</th>\n\t\t\t<th id=\"headerDate\" class=\"hidden column-mtime\">\n\t\t\t\t<a id=\"modified\" class=\"columntitle\" data-sort=\"mtime\"><span>Freigabezeitpunkt</span><span class=\"sort-indicator\"></span></a>\n\t\t\t</th>\n\t\t\t<th class=\"hidden column-expiration\">\n\t\t\t\t<a class=\"columntitle\"><span>Ablaufdatum</span></a>\n\t\t\t</th>\n\t\t</tr>\n\t</thead>\n\t<tbody id=\"fileList\">\n\t</tbody>\n\t<tfoot>\n\t</tfoot>\n</table>\n",
                                "id": "sharingout"
                            },
                            "systemtagsfilter": {
                                "content": "<div id=\"controls\">\n</div>\n\n<div id=\"emptycontent\" class=\"hidden\">\n\t<div class=\"icon-folder\"></div>\n\t<h2>Keine Dateien vorhanden</h2>\n\t<p class=\"uploadmessage hidden\"></p>\n</div>\n\n<div class=\"nofilterresults emptycontent hidden\">\n\t<div class=\"icon-search\"></div>\n\t<h2>Keine Eintr\u00e4ge in diesem Ordner gefunden</h2>\n\t<p></p>\n</div>\n\n<table id=\"filestable\" data-preview-x=\"32\" data-preview-y=\"32\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th id='headerName' class=\"hidden column-name\">\n\t\t\t\t<div id=\"headerName-container\">\n\t\t\t\t\t<a class=\"name sort columntitle\" data-sort=\"name\"><span>Name</span><span class=\"sort-indicator\"></span></a>\n\t\t\t\t</div>\n\t\t\t</th>\n\t\t\t<th id=\"headerSize\" class=\"hidden column-size\">\n\t\t\t\t<a class=\"size sort columntitle\" data-sort=\"size\"><span>Gr\u00f6\u00dfe</span><span class=\"sort-indicator\"></span></a>\n\t\t\t</th>\n\t\t\t<th id=\"headerDate\" class=\"hidden column-mtime\">\n\t\t\t\t<a id=\"modified\" class=\"columntitle\" data-sort=\"mtime\"><span>Ge\u00e4ndert</span><span class=\"sort-indicator\"></span></a>\n\t\t\t</th>\n\t\t</tr>\n\t</thead>\n\t<tbody id=\"fileList\">\n\t</tbody>\n\t<tfoot>\n\t</tfoot>\n</table>\n<input type=\"hidden\" name=\"dir\" id=\"dir\" value=\"\" />\n\n",
                                "id": "systemtagsfilter"
                            },
                            "trashbin": {
                                "content": "<div id=\"controls\">\n\t<div id=\"file_action_panel\"></div>\n</div>\n<div id='notification'></div>\n\n<div id=\"emptycontent\" class=\"hidden\">\n\t<div class=\"icon-delete\"></div>\n\t<h2>Keine gel\u00f6schten Dateien</h2>\n\t<p>Hier k\u00f6nnen gel\u00f6schte Dateien wiederhergestellt werden</p>\n</div>\n\n<input type=\"hidden\" name=\"dir\" value=\"\" id=\"dir\">\n\n<div class=\"nofilterresults hidden\">\n\t<div class=\"icon-search\"></div>\n\t<h2>Keine Eintr\u00e4ge in diesem Ordner gefunden</h2>\n\t<p></p>\n</div>\n\n<table id=\"filestable\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th id=\"headerSelection\" class=\"hidden column-selection\">\n\t\t\t\t<input type=\"checkbox\" id=\"select_all_trash\" class=\"select-all checkbox\"/>\n\t\t\t\t<label for=\"select_all_trash\">\n\t\t\t\t\t<span class=\"hidden-visually\">Alle ausw\u00e4hlen</span>\n\t\t\t\t</label>\n\t\t\t</th>\n\t\t\t<th id='headerName' class=\"hidden column-name\">\n\t\t\t\t<div id=\"headerName-container\">\n\t\t\t\t\t<a class=\"name sort columntitle\" data-sort=\"name\"><span>Name</span><span class=\"sort-indicator\"></span></a>\n\t\t\t\t\t<span id=\"selectedActionsList\" class='selectedActions'>\n\t\t\t\t\t\t<a href=\"\" class=\"actions-selected\">\n\t\t\t\t\t\t\t<span class=\"icon icon-more\"></span>\n\t\t\t\t\t\t\t<span>Aktionen</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</th>\n\t\t\t<th id=\"headerDate\" class=\"hidden column-mtime\">\n\t\t\t\t<a id=\"modified\" class=\"columntitle\" data-sort=\"mtime\"><span>gel\u00f6scht</span><span class=\"sort-indicator\"></span></a>\n\t\t\t</th>\n\t\t</tr>\n\t</thead>\n\t<tbody id=\"fileList\">\n\t</tbody>\n\t<tfoot>\n\t</tfoot>\n</table>\n",
                                "id": "trashbin"
                            }
                        },
                        "appNavigation": {
                            "__class__": "OCP\\Template"
                        },
                        "defaultFileSorting": "name",
                        "defaultFileSortingDirection": "asc",
                        "fileNotFound": 0,
                        "hiddenFields": [],
                        "isPublic": false,
                        "owner": "marc",
                        "ownerDisplayName": "Marc-Andr\u00e9 Kolly",
                        "showHiddenFiles": 1,
                        "usedSpacePercent": 3
                    }
                ],
                "class": "OC_Template",
                "file": "/var/www/nextcloud/lib/public/AppFramework/Http/TemplateResponse.php",
                "function": "fetchPage",
                "line": 157,
                "type": "->"
            },
            {
                "args": [],
                "class": "OCP\\AppFramework\\Http\\TemplateResponse",
                "file": "/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php",
                "function": "render",
                "line": 119,
                "type": "->"
            },
            {
                "args": [
                    {
                        "__class__": "OCA\\Files\\Controller\\ViewController"
                    },
                    "index"
                ],
                "class": "OC\\AppFramework\\Http\\Dispatcher",
                "file": "/var/www/nextcloud/lib/private/AppFramework/App.php",
                "function": "dispatch",
                "line": 118,
                "type": "->"
            },
            {
                "args": [
                    "ViewController",
                    "index",
                    {
                        "__class__": "OC\\AppFramework\\DependencyInjection\\DIContainer"
                    },
                    {
                        "_route": "files.view.index"
                    }
                ],
                "class": "OC\\AppFramework\\App",
                "file": "/var/www/nextcloud/lib/private/AppFramework/Routing/RouteActionHandler.php",
                "function": "main",
                "line": 47,
                "type": "::"
            },
            {
                "args": [
                    {
                        "_route": "files.view.index"
                    }
                ],
                "class": "OC\\AppFramework\\Routing\\RouteActionHandler",
                "function": "__invoke",
                "type": "->"
            },
            {
                "args": [
                    {
                        "__class__": "OC\\AppFramework\\Routing\\RouteActionHandler"
                    },
                    {
                        "_route": "files.view.index"
                    }
                ],
                "file": "/var/www/nextcloud/lib/private/Route/Router.php",
                "function": "call_user_func",
                "line": 297
            },
            {
                "args": [
                    "/apps/files/"
                ],
                "class": "OC\\Route\\Router",
                "file": "/var/www/nextcloud/lib/base.php",
                "function": "match",
                "line": 987,
                "type": "->"
            },
            {
                "args": [],
                "class": "OC",
                "file": "/var/www/nextcloud/index.php",
                "function": "handleRequest",
                "line": 42,
                "type": "::"
            }
        ]
    },
    "method": "GET",
    "remoteAddr": "1.3.3.7",
    "reqId": "j3cl5IDFs7wSweq8tgIK",
    "time": "2018-12-11T13:35:22+00:00",
    "url": "/index.php/apps/files/",
    "user": "marc",
    "userAgent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0",
    "version": "14.0.4.2"
}
icewind1991 commented 5 years ago

please raise that as an issue to the fulltext search app

makuser commented 5 years ago

please raise that as an issue to the fulltext search app

So it's fine to change the signature of a function, and all other apps depending on that function then need to check and possibly catch this and provide an update, instead of providing a compatibility layer right from the start? Interesting approach. Does this only apply to the groupfolders extension, or to all of Nextcloud?

Because if you compare it to eg. the Linux kernel, these breaking changes would never be released on the same release channel.

icewind1991 commented 5 years ago

groupfolders (and most apps) provide no public api with any guarantee of stability (unlike the core server with it's OCP namespace), it's unreasonable to expect apps to never change any of their method signatures just in case some other app calls it's directly.

If you want to compare it to the kernel, this is the like the internal kernel api, which they are free to break and regularly do (all those times the nvidia blob drivers don't work with a new release)

makuser commented 5 years ago

it's unreasonable to expect apps to never change any of their method signatures just in case some other app calls it's directly.

Well that's not what I meant at all. Of course signatures will change, new features and improvements will be implemented. It would be bad if that's not the case. I just think at least in this case it might have been possible to provide a wrapper with the old signature I wrote too much Python lately, but this is PHP, and obviously you can not overload methods in PHP... silly me :see_no_evil:. What I meant is; provide a default value for the new arguments, and then initialize or get some current instance of in this case the IGroupManager to use instead of the default argument value. I've not looked at the actual code to know whether that's even possible in this specific case, but I think you get what I mean. Just some fallbacks, default values, etc.

If you want to compare it to the kernel, this is the like the internal kernel api, which they are free to break and regularly do (all those times the nvidia blob drivers don't work with a new release)

Yeah okay, sure. But the kernel does at least provides normal APIs to hook into. What about groupfolders? Any useful APIs?

I actually did not want to start any discussion about this, because first of all it's a matter of policy etc., second I might simply have a different opinion about this than you, and third this bug report should only be used as such and possibly a discussion issue be opened for this. But I just wanted to know what the usual policy for NC extensions (non OCP namespace) is, or whether such a policy exists at all, and you sort of already replied to that too. Thanks!

Also thanks a lot for the quick fix! :)

reinob commented 5 years ago

can you check if fa059d3 fixes the issue

I still get Internal Server Error after patching those two files:

{ "app" : "PHP", "version" : "15.0.0.10", "user" : "reinob", "time" : "2018-12-11T14:58:25+00:00", "userAgent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36", "message" : "TypeError: Argument 5 passed to OCA\\GroupFolders\\Mount\\MountProvider::getMount() must implement interface OCP\\Files\\Cache\\ICacheEntry, null given, called in /var/www/nextcloud/apps/groupfolders/lib/Mount/MountProvider.php on line 63 at /var/www/nextcloud/apps/groupfolders/lib/Mount/MountProvider.php#67", "level" : 3, "method" : "GET", "remoteAddr" : "87.178.175.236", "url" : "/nextcloud/ocs/v2.php/apps/notifications/api/v2/notifications", "reqId" : "lJlDJp4voYgehHnQ3XLe" }

icewind1991 commented 5 years ago

https://github.com/nextcloud/groupfolders/commit/fd6e598ba334928ea2b10c0a1a23495a4b0a0dfc should fix that error

reinob commented 5 years ago

see also #241, which is what I got above.

re. fd6e598: please try yourself, or find some beta testers. I have deleted the group folders app and will wait until this issue is taken seriously. Then I will install it again.

Thanks for your efforts though.

icewind1991 commented 5 years ago

please try yourself, or find some beta testers.

I did, and it works for me, but my setup is not your setup (as shown above by fulltextsearch causing issues, which is not something I have installed)

icewind1991 commented 5 years ago

I've added default values for the constructor for now which should fix compatibility with fulltext search (even though fulltext search really shouldn't be relying on these interfaces)

Since this issue seems to be fixed, I'll close it and release a 2.0.1, feel free to open a new issue if you're still running into issues with that version

Fabse91 commented 5 years ago

please try yourself, or find some beta testers.

I did, and it works for me, but my setup is not your setup (as shown above by fulltextsearch causing issues, which is not something I have installed)

Worked for me! Updated from Nextcloud 14.0.4 to Nextcloud 15.0.0. Installed some apps for user-mapping, like user_hiorg (think is not relevant), and Group Folders.

With the bugfix anything works

sergiomb2 commented 5 years ago

fd6e598 should fix that error

not fixed , still get

sudo -u www-data php occ PHP Fatal error: Interface 'OCA\Files_Versions\Versions\IVersionBackend' not found in /var/www/nextcloud/apps/groupfolders/lib/Versions/VersionsBackend.php on line 37

icewind1991 commented 5 years ago

please test with 2.0.1 to ensure you have all the patches

TP75 commented 5 years ago

please test with 2.0.1 to ensure you have all the patches

@icewind1991 : Unfortunately, an experimental migration of another NC instance (marked as production update channel) from 13.0.7 to 14.0.4.2 grabs an intermediate group folders 2.0.1 version and results in a frozen and defunct protocol window with a non-decorated text like:

Level | App | Message | Time

Error | PHP | Interface  'OCA\Files_Versions\Versions\IVersionBackend' not found at  /var/www/nextcloud/apps/groupfolders/lib/Versions/VersionsBackend.php#37 | ย 

No change of log level from GUI available anymore.

At least occ is functional and allows disabling groupfolders from CLI like:

# sudo -u www-data php /var/www/nextcloud/occ  maintenance:mode --on
Maintenance mode enabled

# sudo -u www-data php /var/www/nextcloud/occ app:disable groupfolders
Nextcloud is in maintenance mode - no apps have been loaded
groupfolders disabled

# sudo -u www-data php /var/www/nextcloud/occ  maintenance:mode --off

The GUI results in a functional protocol window with access to change of log level after this work around. The same a.m. error log message is now shown as decorated hypertext again.

NB: As this instance has no active group folders the view on possible impacts may be quite limited.

IMHO the developers should discuss a more mature process for both QM and release of apps certainly for the production update channel.

However, thanks for the efforts and happy hacking.

HewittJC commented 5 years ago

I was able to update to 2.0.1 in the NC GUI and it resolved my issue. The OCC command is working as intended once again. Thanks to @icewind1991

sergiomb2 commented 5 years ago

I did now a manual downgrade to the previously installed version (1.2.0) by restoring apps/groupfolders/ from backup

cd /var/www/nextcloud
mv ./apps/groupfolders ./data/updater-oc1u8rsk6cn7/backups/
cp -a ./data/updater-oc1u8rsk6cn7/backups/nextcloud-14.0.2.2/apps/groupfolders/ apps/
sudo -u www-data php occ upgrade

Fix my problem ! Thanks