Haskell Foundation DevOps Weekly Log, 2022-08-17

Weekly Log, weeks 13 and 14

[This will be my last entry for six weeks. The next will come on September 30.]

In the last week and a half, I continued to focus on spurious failures. To wrap things up before my break, I wrote a wiki page about the spurious failure effort that explains my methodology. I also added one more failure type (MoveFileEx).

Outside of spurious failures, I made a performance improvement to CI by removing a heavyweight dependency (#21492), explored the fragile test monitoring infrastructure, and spent some time dealing with another bout of sore throat and congestion. (Covid? Who even knows anymore.)

It’s uncomfortably hot in Finland of all places. Hope you are all staying cool!

See you in a month!



Regarding the MoveFileEx failures: I’ve encountered similar issues on GitHub Actions. See e.g. https://github.com/haskell/actions/issues/36 and https://github.com/actions/runner-images/issues/712.

The GHC team apparently fixed variations of this problem before.

On IRC, Phyx mentioned that “core of the issue is that MoveFileEx isn’t atomic, and it’s used in a context where it’s expected to be… MIcrosoft https://docs.microsoft.com/en-us/windows/win32/fileio/deprecation-of-txf recommends ReplaceFile instead.”

So, find the MoveFileEx’s and replace them. (But where are they hiding? I haven’t looked into it myself, yet.)


MoveFileEx is used in System.Directory.renameFile which in turn is widely used in cabal: Search · renameFile · GitHub

Here is a related issue on the directory issue tracker: https://github.com/haskell/directory/issues/132

1 Like