Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Upgrade from 24.x to 25.0.1 with Web Updater frequently seems to fail / damage the instance #35289

Closed
6 of 9 tasks
gohrner opened this issue Nov 20, 2022 · 22 comments
Closed
6 of 9 tasks
Labels
0. Needs triage Pending check for reproducibility or if it fits our roadmap 25-feedback bug needs info stale Ticket or PR with no recent activity

Comments

@gohrner
Copy link

gohrner commented Nov 20, 2022

⚠️ This issue respects the following points: ⚠️

  • This is a bug, not a question or a configuration/webserver/proxy issue.
  • This issue is not already reported on Github (I've searched it).
  • Nextcloud Server is up to date. See Maintenance and Release Schedule for supported versions.
  • Nextcloud Server is running on 64bit capable CPU, PHP and OS.
  • I agree to follow Nextcloud's Code of Conduct.

Bug description

After updating from 24.x to 25.0.1, the instance is inaccessible.

The web server logs show messages like:

PHP Fatal error: Declaration of OCA\\Talk\\Share\\RoomShareProvider::getSharesInFolder($userId, OCP\\Files\\Folder $node, $reshares): array must be compatible with OCP\\Share\\IShareProvider::getSharesInFolder($userId, OCP\\Files\\Folder $node, $reshares, $shallow = true) in /var/www/html/apps/spreed/lib/Share/RoomShareProvider.php on line 520

This was reported in the already closed bug #34673 and was announced there to be fixed for 25.0.1, which apparently is not the case.

Since 25.0.1 was made available for web updating to more instances, the upgrade failure reports keep getting added there, but I don't know if it's regarded / on screen in case of a closed bug.

This seems to be a serious upgrade issue.

The broke instance can be rescued by

  1. logging in to the server on the shell (e.g. ssh)
  2. becoming the user Nextcloud runs as (often the web server user)
  3. changing to the Nextcloud installation directory
  4. and invoking php occ upgradeand possibly php occ app:update --all (this wasn't needed for me)

Not sure what to do in cases where no shell access is available.

Steps to reproduce

  1. Upgrade from 24.x to 25.0.1 using web updater

Expected behavior

Update works and updated instance is accessible through web.

Installation method

Community Manual installation with Archive

Operating system

Debian/Ubuntu

PHP engine version

PHP 7.4

Web server

Apache (supported)

Database engine version

MariaDB

Is this bug present after an update or on a fresh install?

Updated to a major version (ex. 22.2.3 to 23.0.1)

Are you using the Nextcloud Server Encryption module?

Encryption is Disabled

What user-backends are you using?

  • Default user-backend (database)
  • LDAP/ Active Directory
  • SSO - SAML
  • Other

Configuration report

No response

List of activated Apps

Enabled:
  - accessibility: 1.10.0
  - activity: 2.16.0
  - appointments: 1.14.0
  - apporder: 0.15.0
  - calendar: 3.5.2
  - cloud_federation_api: 1.7.0
  - comments: 1.14.0
  - contacts: 4.2.2
  - contactsinteraction: 1.5.0
  - dashboard: 7.4.0
  - dav: 1.22.0
  - deck: 1.7.2
  - external: 4.0.0
  - federatedfilesharing: 1.14.0
  - federation: 1.14.0
  - files: 1.19.0
  - files_external: 1.16.1
  - files_markdown: 2.3.6
  - files_pdfviewer: 2.5.0
  - files_rightclick: 1.3.0
  - files_sharing: 1.16.2
  - files_trashbin: 1.14.0
  - files_versions: 1.17.0
  - files_videoplayer: 1.13.0
  - firstrunwizard: 2.13.0
  - flow_notifications: 1.4.0
  - forms: 2.5.1
  - impersonate: 1.11.0
  - integration_openproject: 2.1.0
  - logreader: 2.9.0
  - lookup_server_connector: 1.12.0
  - mail: 1.14.2
  - nextcloud_announcements: 1.13.0
  - notes: 4.5.1
  - notifications: 2.12.1
  - oauth2: 1.12.0
  - oidc: 0.2.6
  - password_policy: 1.14.0
  - passwords: 2022.11.11
  - photos: 1.6.0
  - polls: 3.8.3
  - privacy: 1.8.0
  - provisioning_api: 1.14.0
  - recommendations: 1.3.0
  - richdocuments: 6.3.1
  - serverinfo: 1.14.0
  - settings: 1.6.0
  - sharebymail: 1.14.0
  - socialsharing_email: 2.5.0
  - spreed: 14.0.6
  - support: 1.7.0
  - survey_client: 1.12.0
  - systemtags: 1.14.0
  - tasks: 0.14.5
  - text: 3.5.1
  - theming: 1.15.0
  - twofactor_backupcodes: 1.13.0
  - updatenotification: 1.14.0
  - user_ldap: 1.14.1
  - user_status: 1.4.0
  - viewer: 1.8.0
  - weather_status: 1.4.0
  - webhooks: 0.4.0
  - workflow_script: 1.9.0
  - workflowengine: 2.6.0
Disabled:
  - admin_audit
  - circles: 0.16.2
  - encryption: 2.8.1
  - files_texteditor: 2.14.0

Nextcloud Signing status

No response

Nextcloud Logs

No response

Additional info

No response

@gohrner gohrner added 0. Needs triage Pending check for reproducibility or if it fits our roadmap bug labels Nov 20, 2022
@PVince81
Copy link
Member

occ upgrade is already supposed to update all apps

do you have the updater.log or the log from occ upgrade -vvvv so we can see if it has at least attempted to update the "Talk" app ?

@PVince81
Copy link
Member

it seems like there's a pattern.

I see here #35287 that the Talk app got disabled as incompatible, probably because at the time of the upgrade the app has not been released yet to the app store

@ygoe

This comment was marked as off-topic.

@ygoe

This comment was marked as off-topic.

@ygoe

This comment was marked as abuse.

@artonge
Copy link
Contributor

artonge commented Dec 5, 2022

@ygoe Github is only for reporting issue, not to get support or ranting. Feel free to contribute new information about the current bug, see PVince81 question for currently needed input.

I would also recommend reading the Nextcloud code of conduct to get a better experience while interacting with the Nextcloud community.

@ygoe
Copy link

ygoe commented Dec 5, 2022

You already have all the information that's needed to fix the code. It hasn't been done so unusable PHP files are still served for those who want to upgrade, completely taking down everything. Please let me know if you're not willing to make that change in the code so I can handle that for future upgrades, should I need any.

@artonge
Copy link
Contributor

artonge commented Dec 5, 2022

I don't see any information besides what the author of this issue reported. Maybe the information you are talking about was not presented properly, so we missed it.

Please let me know if you're not willing to make that change in the code so I can handle that for future upgrades, should I need any.

This is a community software that accept changes from anyone, so if you know what needs to be changed, then please open a pull request :)

@ygoe
Copy link

ygoe commented Dec 5, 2022

This is from the first post:

PHP Fatal error: Declaration of OCA\\Talk\\Share\\RoomShareProvider::getSharesInFolder($userId, OCP\\Files\\Folder $node, $reshares): array must be compatible with OCP\\Share\\IShareProvider::getSharesInFolder($userId, OCP\\Files\\Folder $node, $reshares, $shallow = true) in /var/www/html/apps/spreed/lib/Share/RoomShareProvider.php on line 520

That alone says everything. Scroll to the right end to see it all. If you don't know what that means, ask a PHP developer. I'll try to find the time to investigate how to change that file for you. Of course a Nextcloud developer knows far more about this, I can only make the error message go away (I explained how but you chose to hide that information which makes me believe you're not interested in a solution) but actually I know nothing about what the consequences of that change are.

@artonge
Copy link
Contributor

artonge commented Dec 5, 2022

@ygoe This is a last warning, please change your tone, especially:

  1. I'll try to find the time to investigate how to change that file for you

You are not doing it for me. Myself, or any contributor, do not owe you anything.

  1. I explained how, but you chose to hide that information

I hided three comments of yours that were charged with negativity. Feel free to repost meaningful content in a constructive way.

During your research, please note that some work has already been done around that issue: #34712

@kesselb
Copy link
Contributor

kesselb commented Dec 5, 2022

What is that "spreed" app anyway? I can't find it in my apps list*.

Look for "Talk" (spreed is the old name)

"Reperatur" is misspelling of "Reparatur".

Forwarded it. Please note, our translation is maintained by volunteers. You are welcome to join our translation team at https://www.transifex.com/nextcloud/.

That alone says everything. Scroll to the right end to see it all. If you don't know what that means, ask a PHP developer. I'll try to find the time to investigate how to change that file for you.

nextcloud/spreed#7648 we already changed the file and released Nextcloud Talk 15 together with Nextcloud 25.

You already have all the information that's needed to fix the code.

We would like to know why the updater did not update Talk to version 15. That's the reason PVince81 asked for the updater logs.

  1. Do you remember if Talk were enabled before the upgrade?

  2. Did you use the web or cli to update? I remember issues with OPCache and invalidating the cache during an upgrade.

@nickvergessen
Copy link
Member

nickvergessen commented Dec 5, 2022

Nextcloud now got more offending by hijacking the Ctrl+F hotkey. It is the hotkey to search text on the page and it is provided by the browser. Instead, in Nextcloud, this opens a different search input that seems to search for content in Nextcloud. Not what I want. Again, let's see how I can get rid of that again.

Go to the accessibility settings on index.php/settings/user/theming and tick Disable all keyboard shortcuts

Also note that you can simply Ctrl+F twice to reach the default browser search easily.

Also weird that you just discover this now. It's part of Nextcloud since quite some time, should be around Nextcloud 20.

@gohrner
Copy link
Author

gohrner commented Dec 6, 2022

occ upgrade is already supposed to update all apps

do you have the updater.log or the log from occ upgrade -vvvv so we can see if it has at least attempted to update the "Talk" app ?

Sorry, somehow missed your reply.

Yes, I do have an updater.log. Is there any sensitive information contained within, or can I just upload it here?

I quickly skimmed it, and besides maybe local path names there does not seem to be anything too critical contained in it, but then it's quite long and its presence would have been easy to miss...

@gohrner
Copy link
Author

gohrner commented Dec 6, 2022

To answer for my case:

  1. Do you remember if Talk were enabled before the upgrade?

Yes, Spreed / Talk was installed and enabled.

As recommended in the manual, the instance uses PHP APCu, and it uses php-fpm so I can use HTTP2.

The server runs Debian Bullseye with PHP 7.4.

  1. Did you use the web or cli to update? I remember issues with OPCache and invalidating the cache during an upgrade.

As documented in my report, in my case (and all other reports I have seen) the upgrade fails with the web updater and can be continued / finalized using the CLI updater.

@Schmuuu
Copy link

Schmuuu commented Dec 13, 2022

I also ran into this issue, when I updated NC from 24.0.8 to 25.0.2.
After the update via the webupdater the web page was white and I tried to continue with the occ upgrade command, but that command showed the same error message about the Talk app, which was also written to the updater.log. And that error message about Talk caused the occ upgrade process to exit right away, meaning the upgrade process was not continuing and updating the Talk app.

I was only able to solve this issue and get Nextcloud working again, by disable the Talk app and perform the occ upgrade once again afterwards. The upgrade process then finished without further issues.
When I was able to access the web GUI again, I re-enabled the Talk app and everything was working fine.

As a side-note: before doing the NC updates, I always make sure that every app is updated to the latest version. Only with all apps up to date I start the NC update.

@19Topgun93
Copy link

I have the same issue. I had talk install. The site was white. I thought it could be the old php 7.4. So I upgraded to 8.1. Now I have the Picture below. And I don't know, how to describe this.

Can anybody explain my fault?

This: PHP Fatal error: Declaration of OCA\Talk\Share\RoomShareProvider::getSharesInFolder($userId, OCP\Files\Folder $node, $reshares): array must be compatible with OCP\Share\IShareProvider::getSharesInFolder($userId, OCP\Files\Folder $node, $reshares, $shallow = true) in /var/www/html/nextcloud/apps/spreed/lib/Share/RoomShareProvider.php on line 520
Is what I have in the cli if I do: sudo -u www-data php /var/www/html/nextcloud/occ app:update --all

Actual I have nothing. no web page or webupdater.

Nextcloud fehler

@19Topgun93
Copy link

19Topgun93 commented Jan 22, 2023

<?php
/**
 * @copyright Copyright (c) 2016, ownCloud, Inc.
 *
 * @author Christoph Wurst <christoph@winzerhof-wurst.at>
 * @author Joas Schilling <coding@schilljs.com>
 * @author Jörn Friedrich Dreyer <jfd@butonic.de>
 * @author Lukas Reschke <lukas@statuscode.ch>
 * @author Morris Jobke <hey@morrisjobke.de>
 * @author Robin Appelman <robin@icewind.nl>
 * @author Roeland Jago Douma <roeland@famdouma.nl>
 * @author Sergio Bertolín <sbertolin@solidgear.es>
 * @author Thomas Müller <thomas.mueller@tmit.eu>
 * @author Vincent Petry <vincent@nextcloud.com>
 *
 * @license AGPL-3.0
 *
 * This code is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License, version 3,
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License, version 3,
 * along with this program. If not, see <http://www.gnu.org/licenses/>
 *
 */
require_once __DIR__ . '/lib/versioncheck.php';

try {
	require_once __DIR__ . '/lib/base.php';

	OC::handleRequest();
} catch (\OC\ServiceUnavailableException $ex) {
	\OC::$server->getLogger()->logException($ex, ['app' => 'index']);

	//show the user a detailed error page
	OC_Template::printExceptionErrorPage($ex, 503);
} catch (\OCP\HintException $ex) {
	try {
		OC_Template::printErrorPage($ex->getMessage(), $ex->getHint(), 503);
	} catch (Exception $ex2) {
		try {
			\OC::$server->getLogger()->logException($ex, ['app' => 'index']);
			\OC::$server->getLogger()->logException($ex2, ['app' => 'index']);
		} catch (Throwable $e) {
			// no way to log it properly - but to avoid a white page of death we try harder and ignore this one here
		}

		//show the user a detailed error page
		OC_Template::printExceptionErrorPage($ex, 500);
	}
} catch (\OC\User\LoginException $ex) {
	$request = \OC::$server->getRequest();
	/**
	 * Routes with the @CORS annotation and other API endpoints should
	 * not return a webpage, so we only print the error page when html is accepted,
	 * otherwise we reply with a JSON array like the SecurityMiddleware would do.
	 */
	if (stripos($request->getHeader('Accept'), 'html') === false) {
		http_response_code(401);
		header('Content-Type: application/json; charset=utf-8');
		echo json_encode(['message' => $ex->getMessage()]);
		exit();
	}
	OC_Template::printErrorPage($ex->getMessage(), $ex->getMessage(), 401);
} catch (Exception $ex) {
	\OC::$server->getLogger()->logException($ex, ['app' => 'index']);

	//show the user a detailed error page
	OC_Template::printExceptionErrorPage($ex, 500);
} catch (Error $ex) {
	try {
		\OC::$server->getLogger()->logException($ex, ['app' => 'index']);
	} catch (Error $e) {
		http_response_code(500);
		header('Content-Type: text/plain; charset=utf-8');
		print("Internal Server Error\n\n");
		print("The server encountered an internal error and was unable to complete your request.\n");
		print("Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.\n");
		print("More details can be found in the webserver log.\n");

		throw $ex;
	}
	OC_Template::printExceptionErrorPage($ex, 500);
}

@19Topgun93
Copy link

ok... after sudo -u www-data php/var/www/nextcloud/occ upgrade it runs all of this. After that app:update --all is function too. But I have the php site above on my website.

@19Topgun93
Copy link

19Topgun93 commented Jan 22, 2023

Thanks nickvergessen for editing :) I thought I have this right :D

@nickvergessen
Copy link
Member

The source code output means your PHP module is not loaded correctly. Check your apache module list, make sure lib apache2 module for php8.1 is installed. Afterwards make sure to restart apache

@19Topgun93
Copy link

19Topgun93 commented Jan 22, 2023

The source code output means your PHP module is not loaded correctly. Check your apache module list, make sure lib apache2 module for php8.1 is installed. Afterwards make sure to restart apache

php8.1-fpm wasn't enable for apache. Now I havn't the output. But access denied. With domain, and with IP.

https://*.de/index.php/login

The default site is function :D

@nextcloud-command
Copy link
Contributor

This issue has been automatically marked as stale because it has not had recent activity and seems to be missing some essential information. It will be closed if no further activity occurs. Thank you for your contributions.

@nextcloud-command nextcloud-command added the stale Ticket or PR with no recent activity label Jul 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0. Needs triage Pending check for reproducibility or if it fits our roadmap 25-feedback bug needs info stale Ticket or PR with no recent activity
Projects
None yet
Development

No branches or pull requests