nextcloud/server

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

Open

#46.126 aperta il 26 giu 2024

Vedi su GitHub
 (2 commenti) (0 reazioni) (0 assegnatari)PHP (4865 fork)batch import
1. to develop29-feedbackbuggood first issueperformance 🚀

Metriche repository

Star
 (34.953 star)
Metriche merge PR
 (Merge medio 20g) (627 PR mergiate in 30 g)

Descrizione

⚠️ 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

Guida contributor