nextcloud/server

[Bug]: Missing column in database index on query for time sensitive background jobs

Open

#46.126 geöffnet am 26. Juni 2024

Auf GitHub ansehen
 (2 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)PHP (34.953 Stars) (4.865 Forks)batch import
1. to develop29-feedbackbuggood first issueperformance 🚀

Beschreibung

⚠️ This issue respects the following points: ⚠️

Bug description

The query 4f0fc707a2e82ec699067a969cd17b05

SELECT
  *
FROM
  `oc_jobs`
WHERE
  (`reserved_at` <= ?)
  AND (`last_checked` <= ?)
  AND (`time_sensitive` = ?)
ORDER BY
  `last_checked` ASC
LIMIT
  ?

does not use a covering index. The index job_lastcheck_reserved only covers last_checked and reserved_at, not time_sensitive. The database has to scan a bunch of rows every time cron picks the next job outside the maintenance window:

image

Steps to reproduce

  1. Install Nextcloud
  2. Configure a maintenance window

Expected behavior

An index on (last_checked, reserved_at, time_sensitive)

Installation method

None

Nextcloud Server version

29

Operating system

None

PHP engine version

None

Web server

None

Database engine version

None

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

None

Are you using the Nextcloud Server Encryption module?

None

What user-backends are you using?

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

Configuration report

No response

List of activated Apps

No response

Nextcloud Signing status

No response

Nextcloud Logs

No response

Additional info

cc @nickvergessen

Contributor Guide