What does manifest_usage.toml file do?

As the title says, what’s the purpose of manifest_usage.toml?

I have a Julia project that has its own project.toml and manifest.toml. When I try to test this project, I sometimes encounter an error that says:

Activating project at `/user/project`
┌ Warning: failed to remove pidfile on close
│   path = "/user/.julia/logs/manifest_usage.toml.pid"
│   removed = false
â”” @ FileWatching.Pidfile /user/software/julia-1.9.3/share/julia/stdlib/v1.9/FileWatching/src/pidfile.jl:313
ERROR: LoadError: ArgumentError: number of bytes to checksum must be ≥ 0, got -4

A rerun of the test sometimes works, so it’s not reproducible. However, I do see it quite often. How do I resolve it? Is it safe to just delete manifest_usage.toml? Thanks for any help!

2 Likes

I think it is used for the Pkg GC system, to know which package versions are being used, and so it can clean up the unused ones after enough time has passed.

2 Likes

I see. I did suspect this and ran the Pkg.resolve() and Pkg.gc commands; however, I still see the error every now and then.

I haven’t seen this issue with pidfiles for manifest_usage before. Might be worth filing an issue, or maybe @ianshmean has an idea

Yeah please file an issue with more info. Also your terminal printing seems off?

I have had similar issues before on a cluster system where home is on network mounted drive…

1 Like

@ianshmean @jling
I am running my script on an HPC cluster too. So that might have something to do with it. Regarding terminal printing, I am not sure why it outputs weird characters randomly. I am using non-interactive nodes on the cluster and they automatically write the output to a text file, which might have something to do with the printing issue. I filed a GitHub issue here.

1 Like