Merge pull request #55908 from nextcloud/revert-trashbin-expiration-change
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run

Revert trashbin expiration handling in #55742
This commit is contained in:
Louis 2025-10-23 23:56:09 +02:00 committed by GitHub
commit 1b22ca25da
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 7 additions and 16 deletions

View file

@ -16,7 +16,6 @@ use OC\Files\Node\NonExistingFolder;
use OC\Files\View;
use OC\User\NoUserException;
use OC_User;
use OCA\Files_Trashbin\AppInfo\Application;
use OCA\Files_Trashbin\Command\Expire;
use OCA\Files_Trashbin\Events\BeforeNodeRestoredEvent;
use OCA\Files_Trashbin\Events\NodeRestoredEvent;
@ -844,7 +843,7 @@ class Trashbin implements IEventListener {
$dirContent = Helper::getTrashFiles('/', $user, 'mtime');
// delete all files older then $retention_obligation
[$delSize, $count] = self::deleteExpiredFiles($dirContent, $user, $availableSpace <= 0);
[$delSize, $count] = self::deleteExpiredFiles($dirContent, $user);
$availableSpace += $delSize;
@ -857,9 +856,7 @@ class Trashbin implements IEventListener {
*/
private static function scheduleExpire($user) {
// let the admin disable auto expire
/** @var Application $application */
$application = Server::get(Application::class);
$expiration = $application->getContainer()->query('Expiration');
$expiration = Server::get(Expiration::class);
if ($expiration->isEnabled()) {
Server::get(IBus::class)->push(new Expire($user));
}
@ -875,14 +872,12 @@ class Trashbin implements IEventListener {
* @return int|float size of deleted files
*/
protected static function deleteFiles(array $files, string $user, int|float $availableSpace): int|float {
/** @var Application $application */
$application = Server::get(Application::class);
$expiration = $application->getContainer()->query('Expiration');
$expiration = Server::get(Expiration::class);
$size = 0;
if ($availableSpace < 0) {
if ($availableSpace <= 0) {
foreach ($files as $file) {
if ($availableSpace < 0 && $expiration->isExpired($file['mtime'], true)) {
if ($availableSpace <= 0 && $expiration->isExpired($file['mtime'], true)) {
$tmp = self::delete($file['name'], $user, $file['mtime']);
Server::get(LoggerInterface::class)->info(
'remove "' . $file['name'] . '" (' . $tmp . 'B) to meet the limit of trash bin size (50% of available quota) for user "{user}"',
@ -906,18 +901,16 @@ class Trashbin implements IEventListener {
*
* @param array $files list of files sorted by mtime
* @param string $user
* @param bool $quotaExceeded
* @return array{int|float, int} size of deleted files and number of deleted files
*/
public static function deleteExpiredFiles($files, $user, bool $quotaExceeded = false) {
/** @var Expiration $expiration */
public static function deleteExpiredFiles($files, $user) {
$expiration = Server::get(Expiration::class);
$size = 0;
$count = 0;
foreach ($files as $file) {
$timestamp = $file['mtime'];
$filename = $file['name'];
if ($expiration->isExpired($timestamp, $quotaExceeded)) {
if ($expiration->isExpired($timestamp)) {
try {
$size += self::delete($filename, $user, $timestamp);
$count++;

View file

@ -1907,8 +1907,6 @@
<code><![CDATA[getUserFolder]]></code>
<code><![CDATA[getUserFolder]]></code>
<code><![CDATA[getUserFolder]]></code>
<code><![CDATA[query]]></code>
<code><![CDATA[query]]></code>
</DeprecatedMethod>
<InternalClass>
<code><![CDATA[new View('/' . $owner)]]></code>