AlmaLinux / AlmaLinux/build-system

Multilib processing fails when a build contains two platforms

Open
#512 0 comments 0 reactions 0 assignees View on GitHub
bug build-node good first issue
Dominant language
No language data
Stars
32
Forks
11
PR merge metrics
No merged PRs in 30d

Description

As uncovered in [this build](https://build.almalinux.org/build/47501), 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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.