waiting for lock (held by $pid)

Noticed this while attempting to commit changes:

$ g cman
error: gpg failed to sign the data:
gpg: Note: database_open 134217901 waiting for lock (held by 4466) ...
gpg: Note: database_open 134217901 waiting for lock (held by 4466) ...
gpg: Note: database_open 134217901 waiting for lock (held by 4466) ...
gpg: Note: database_open 134217901 waiting for lock (held by 4466) ...
gpg: Note: database_open 134217901 waiting for lock (held by 4466) ...
gpg: keydb_search failed: Operation timed out
gpg: skipped "1CBBEBFE0CDC1C06DB324A7CCE439AFEC33D9E7F": Operation timed out
[GNUPG:] INV_SGNR 0 1CBBEBFE0CDC1C06DB324A7CCE439AFEC33D9E7F
[GNUPG:] FAILURE sign 134250628
gpg: signing failed: Operation timed out

fatal: failed to write commit object

Check that there's no useful debugging output:

$ gpg --list-keys --verbose
gpg: enabled compatibility flags:
gpg: using pgp trust model
gpg: Note: database_open 134217901 waiting for lock (held by 4466) ...
gpg: Note: database_open 134217901 waiting for lock (held by 4466) ...
gpg: Note: database_open 134217901 waiting for lock (held by 4466) ...
gpg: Note: database_open 134217901 waiting for lock (held by 4466) ...
gpg: Note: database_open 134217901 waiting for lock (held by 4466) ...
gpg: keydb_search_first failed: Operation timed out

Check that the mentioned process ID isn't around:

$ pstree -p 4466

Enumerate the lock files:

$ find ~/.gnupg -name '*.lock'
/Users/lukecarrier/.gnupg/public-keys.d/pubring.db.lock

Delete them:

find ~/.gnupg -name '*.lock' -delete

Try again:

$ gpg --list-keys --verbose
gpg: enabled compatibility flags:
gpg: using pgp trust model
[keyboxd]
---------
pub   ed25519 2024-02-17 [SC] [expires: 2025-02-16]
      1CBBEBFE0CDC1C06DB324A7CCE439AFEC33D9E7F
uid           [ultimate] Luke Carrier <luke@carrier.family>
sub   cv25519 2024-02-17 [E] [expires: 2025-02-16]