mcg/src
Jeremy Fleischman ea71d96dd7
Don't assume that size file is valid
I don't know how my cache got into this state, but I had an empty size
file:

    $ cat ~/.cache/mcg/127.0.0.1/size

    $ stat ~/.cache/mcg/127.0.0.1/size
      File: /home/jeremy/.cache/mcg/127.0.0.1/size
      Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
    Device: 254,0	Inode: 18493061    Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/  jeremy)   Gid: (  100/   users)
    Access: 2022-09-14 00:18:32.942885525 -0700
    Modify: 2022-09-07 12:32:44.151734944 -0700
    Change: 2022-09-07 12:32:44.151734944 -0700
     Birth: 2022-08-25 10:01:01.729717504 -0700

This was causing mcg's Library view to crash like this:

    (.mcg-wrapped:879276): Gtk-CRITICAL **: 00:19:15.727: gtk_window_add_accel_group: assertion 'GTK_IS_WINDOW (window)' failed
    Exception in thread Thread-1 (_set_playlist):
    Traceback (most recent call last):
      File "/nix/store/c1vb2z3c64i0sd92iz7fv0lb720qcvhb-python3-3.10.6/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
        self.run()
      File "/nix/store/c1vb2z3c64i0sd92iz7fv0lb720qcvhb-python3-3.10.6/lib/python3.10/threading.py", line 953, in run
        self._target(*self._args, **self._kwargs)
      File "/nix/store/l935dwmk93sq2chr4xxiipv9amyfcg43-CoverGrid-3.1/share/mcg/mcg/playlistpanel.py", line 256, in _set_playlist
        cache = client.MCGCache(host, size)
      File "/nix/store/l935dwmk93sq2chr4xxiipv9amyfcg43-CoverGrid-3.1/share/mcg/mcg/client.py", line 1279, in __init__
        self._read_size()
      File "/nix/store/l935dwmk93sq2chr4xxiipv9amyfcg43-CoverGrid-3.1/share/mcg/mcg/client.py", line 1293, in _read_size
        size = int(f.readline())
    ValueError: invalid literal for int() with base 10: ''

Maybe mcg crashed while writing the `size` file at some point? I see
that it writes directly to the size file, which seems potentially risky:
it would probably be safer to write to a temp file and then (atomically)
move it. Still, it seems like a good practice to be resilient here.

After this change, here's what I see get printed by mcg:

    (.mcg-wrapped:889856): Gtk-CRITICAL **: 00:37:00.045: gtk_window_add_accel_group: assertion 'GTK_IS_WINDOW (window)' failed
    2022-09-14 00:37:00,076 WARNING: invalid cache file: /home/jeremy/.cache/mcg/127.0.0.1/size, deleting file
    Traceback (most recent call last):
      File "/nix/store/vzgcfs00nq543hjk8hrk81k1rs8aqpqw-CoverGrid-3.1/share/mcg/mcg/client.py", line 1295, in _read_size
        size = int(f.readline())
    ValueError: invalid literal for int() with base 10: ''

And then the problem goes away =)
2022-09-14 00:37:52 -07:00
..
__init__.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
albumheaderbar.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
application.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
client.py Don't assume that size file is valid 2022-09-14 00:37:52 -07:00
connectionpanel.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
coverpanel.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
infodialog.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
librarypanel.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
main.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
mcg.in Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
meson.build Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
playlistpanel.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
serverpanel.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
shortcutsdialog.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
utils.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
window.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00
zeroconf.py Use the build system “meson” (close #32) 2022-09-11 12:31:13 +02:00