Skip to content

Race condition updating pantry database? #6388

@chreekat

Description

@chreekat

General summary/comments

I'm just investigating some failures in GHC CI and I don't know if stack is responsible or not. I've been given two examples, but I'm told there are others from today.

Example 1: https://gitlab.haskell.org/ghc/ghc/-/jobs/1736793
Example 2: https://gitlab.haskell.org/ghc/ghc/-/jobs/1736433

Reasons for thinking it's a stack bug:

  1. in the two examples, there is similar behavior. stack notices it is missing data in its pantry database and goes to update it by downloading and processing the Hackage tarball. That seems to succeed, but then stack immediately gives up and complains about missing data for a different package. Did the second package think that no update occurred (since the previous one already had succeeded), and then threw an error?

Reasons why I'm not sure:

  1. Not only is it a different pair of packages in both cases (which could be explained by nondeterministic concurrent processing of packages), but in one case js-dgtable gets processed just fine, and in the other case it's one of the packages whose data is missing. How is it that GHC CI has different Pantry databases between runs? I need to investigate this further.

Steps to reproduce

😬 I haven't tried, but something like this might work:

docker run -it --rm registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:572353e0644044fe3a5465bba4342a9a0b0eb60e

docker$ git clone https://gitlab.haskell.org/ghc/ghc
docker$ cd ghc
docker$ .gitlab/ci.sh setup
docker$ .gitlab/ci.sh configure
docker$ hadrian/build-stack --version

Stack version

ghc@8659c4aa4286:~$ stack --version
Version 2.9.3, Git revision 6cf638947a863f49857f9cfbf72a38a48b183e7e x86_64 hpack-0.35.1

Method of installation

  • Unholy magicks

Platform

  • x86_64-linux

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions