Part 1: Getting things building again after setting up mold (by dissabling mold)

We start out the session with the confusing error message

    Finished test [unoptimized + debuginfo] target(s) in 0.03s
     Running unittests (target/debug/deps/gm-12c52c9312f49a3a)
/home/timothy/pu/gradesta/manager/target/debug/deps/gm-12c52c9312f49a3a: error while loading shared libraries: cannot open shared object file: No such file or directory
error: test failed, to rerun pass '--bin gm'

When running cargo test. It seems from this article that this error may be being caused by eariler work I did to make rust link faster.

In the end I ended up just dissabling mold which solved the problem. If my new Ryzen processor also has slow linking problems I’ll figure out how to fix it.

Part 2: Refactoring config parsing code and linting various things in the manager

Part 3: Use a tokio main and print out non-garbled error messages and exit with the right exitcode

Part 4: Polish and run lockfile code

Part 5: Cleaning up dangling sockets and orphaned services

Part 6: More cleaning up of dangling sockets

Part 7: More cleaning up of dangling sockets

Part 8: ofiles tests

So I am struggling to understand what the proper type for PIDs are. ofiles used u32 because that is what the pid type used by the rust standard library is. This is probably because that is the pid type on Windows (Microsoft defines a DWORD as a u32), and in POSIX, negative Pids don’t really exist so this is the safe type to use on both systems. However nix uses an i32, because that is the type used by glibc and the linux kernel. Since ofiles is distinctly POSIX bound, yet there are never negative PIDs it seems best to use i32 natively but implement From for u32 as well.

Part 9:

Still working on ofiles Pid type.

Part 10:

Implementing tests for clean_socket_dir using the test_binary package.

Part 11:

This is the final stream in the series.

  • I test launching by hand
  • Made websockets and unix sockets optional
  • Setup scafholding for main loop
  • Renamed clean to clean&kill so it doesn’t get confused with origanize_sockets_dir
  • Fixed PID ignoring code so that the files that are being used by ignored PIDs actually get cleaned update- Clarified the licenses a bit
  • Moved initialization code over to ageing cellar
  • did manual integration testing again