Skip to content

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

@ChristophWurst

Description

@ChristophWurst

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    1. to developAccepted and waiting to be taken care of29-feedbackbuggood first issueSmall tasks with clear documentation about how and in which place you need to fix things in.performance 🚀

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions