Skip to content

Multilib processing fails when a build contains two platforms #512

@javihernandez

Description

@javihernandez

As uncovered in this build, multilib processing is failing due to the following error:

asyncpg.exceptions.CardinalityViolationError: more than one row returned by a subquery used as an expression

The query in question is:

    subquery = (
        select(models.BuildTask.id)
        .where(
            sqlalchemy.and_(
                models.BuildTask.build_id == build_task.build_id,
                models.BuildTask.index == build_task.index,
                models.BuildTask.arch == "i686",
            )
        )
        .scalar_subquery()
    )

Since the build contains 2 platforms (and multilib applies to both), the subquery is returning 2 ids, one for Alma 8 and another one for Alma 9, while we expect to find exactly one.

I imagine that fixing the problem should be as simple as adding the condition models.BuildTask.platform_id == build_task.platform_id to the subquery, to ensure that we limit the results to the i686 packages of the same platform we are processing at that time.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingbuild-nodeBuild node related issues

    Type

    Projects

    Status

    Ready for dev

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions