iterate / mikrobloggeriet

1 stars 1 forks source link

Finne ut av om vi har gamle dokumenter med feilformatert UUID i `meta.edn` #104

Closed teodorlu closed 5 months ago

teodorlu commented 5 months ago

Kontekst

I #103 kom det fram at mblog.sh produserer feilformaterte UUID-er.

Jeg antar at det betyr at en generisk UUID-parser (som lager 128-bit integers) kommer til å feile når vi leser sånne UUID-er.

Problem

Det kan hende at vi derfor har meta.edn-filer med feilformaterte UUID-er.

Løsningsforslag

  1. Skrive et script
  2. som leser alle meta.edn-filene
  3. og sjekker om UUID-en er riktig formatert.

Det kan sikkert gjøres i bash, med clojure eller på andre måter. Jeg tror en glob på **/meta.edn er en god start (i bash feks med echo **/meta.edn, i clojure feks med babashka.fs/glob)

tingstad commented 5 months ago

Jeg gjorde en grep og fant disse uriktige:

./o/olorm-49/meta.edn: :doc/uuid "25418c1c-b094-4080-0775-c42cf246de78",
./o/olorm-51/meta.edn: :doc/uuid "ac7b4e4d-db86-43fa-6def-0c5349a5aec2",
./text/kiel/kiel-2/meta.edn: :doc/uuid "9b7d0698-0574-400b-490a-a7cf3ead64c4",
tingstad commented 5 months ago

Jeg antar at det betyr at en generisk UUID-parser (som lager 128-bit integers) kommer til å feile når vi leser sånne UUID-er.

Det er ikke helt sikkert, men den vil nok rapportere feil variant, eksempel:

uuid.UUID('8aa1250a-ddf0-4135-8b99-0924d1a297be').variant
'specified in RFC 4122'

^ forventet. En uriktig:

uuid.UUID('ac7b4e4d-db86-43fa-6def-0c5349a5aec2').variant
'reserved for NCS compatibility'
teodorlu commented 5 months ago

OK, skjønner. Bra du har kontroll! Hvis jeg hadde skullet lage min egen UUID-generator, hadde jeg innført samme bug 😅

Jeg har tenkt meg om, og jeg tror faktisk ikke UUID-ene er i bruk -- verken internt i koden eller ute på Internett. Vi putter ikke ennå UUID-er i dokument-metadata (fordi jeg ikke har fått gjort det), og vi bruker slugs som UUID RSS-feeden (jeg ikke var involvert i design-diskusjonen da RSS ble implementert).

Dette er koden som lager en RSS-seksjon for hvert dokument:

https://github.com/iterate/mikrobloggeriet/blob/2f70c226435b19e1dd046d365d9bc83d27bafdb0/src/mikrobloggeriet/serve.clj#L90-L101

, og det eneste vi bruker fra dokument-metadata er tidspunktet dokumentet ble opprettet:

https://github.com/iterate/mikrobloggeriet/blob/2f70c226435b19e1dd046d365d9bc83d27bafdb0/src/mikrobloggeriet/doc_meta.clj#L10-L11

Basert på det tror jeg det er trygt å generere nye tilfeldige (korrekte) UUID-er til de tre dokumentene det gjelder. Men jeg vil gjerne sove på den vurderingen før vi går inn og endrer metadata!

teodorlu commented 5 months ago

Jeg finner ingen referanser til :doc/uuid i kode som leser dokumenter, kun i kode som skriver dokumenter (mblog.sh og mikrobloggeriet.cli).

ser ikke ut som :doc/uuid leses av noen kode

$ pwd
/Users/teodorlu/dev/iterate/mikrobloggeriet
$ git rev-parse HEAD
2f70c226435b19e1dd046d365d9bc83d27bafdb0
$ rg -l :doc/uuid | sort
j/jals-1/meta.edn
j/jals-2/meta.edn
j/jals-3/meta.edn
j/jals-4/meta.edn
j/jals-5/meta.edn
j/jals-6/meta.edn
j/jals-7/meta.edn
j/jals-8/meta.edn
j/jals-9/meta.edn
mblog.sh
o/olorm-1/meta.edn
o/olorm-10/meta.edn
o/olorm-11/meta.edn
o/olorm-12/meta.edn
o/olorm-13/meta.edn
o/olorm-14/meta.edn
o/olorm-15/meta.edn
o/olorm-16/meta.edn
o/olorm-17/meta.edn
o/olorm-18/meta.edn
o/olorm-19/meta.edn
o/olorm-2/meta.edn
o/olorm-20/meta.edn
o/olorm-21/meta.edn
o/olorm-22/meta.edn
o/olorm-23/meta.edn
o/olorm-24/meta.edn
o/olorm-25/meta.edn
o/olorm-26/meta.edn
o/olorm-27/meta.edn
o/olorm-28/meta.edn
o/olorm-29/meta.edn
o/olorm-3/meta.edn
o/olorm-30/meta.edn
o/olorm-31/meta.edn
o/olorm-32/meta.edn
o/olorm-33/meta.edn
o/olorm-34/meta.edn
o/olorm-35/meta.edn
o/olorm-36/meta.edn
o/olorm-37/meta.edn
o/olorm-38/meta.edn
o/olorm-39/meta.edn
o/olorm-4/meta.edn
o/olorm-40/meta.edn
o/olorm-41/meta.edn
o/olorm-42/meta.edn
o/olorm-43/meta.edn
o/olorm-44/meta.edn
o/olorm-45/meta.edn
o/olorm-46/meta.edn
o/olorm-47/meta.edn
o/olorm-48/meta.edn
o/olorm-49/meta.edn
o/olorm-5/meta.edn
o/olorm-50/meta.edn
o/olorm-51/meta.edn
o/olorm-52/meta.edn
o/olorm-6/meta.edn
o/olorm-7/meta.edn
o/olorm-8/meta.edn
o/olorm-9/meta.edn
src/mikrobloggeriet/cli.clj
text/kiel/kiel-1/meta.edn
text/kiel/kiel-2/meta.edn
text/luke/luke-1/meta.edn
text/luke/luke-10/meta.edn
text/luke/luke-11/meta.edn
text/luke/luke-12/meta.edn
text/luke/luke-13/meta.edn
text/luke/luke-14/meta.edn
text/luke/luke-15/meta.edn
text/luke/luke-16/meta.edn
text/luke/luke-17/meta.edn
text/luke/luke-18/meta.edn
text/luke/luke-2/meta.edn
text/luke/luke-3/meta.edn
text/luke/luke-4/meta.edn
text/luke/luke-5/meta.edn
text/luke/luke-6/meta.edn
text/luke/luke-7/meta.edn
text/luke/luke-8/meta.edn
text/luke/luke-9/meta.edn
text/oj/oj-1/meta.edn
text/oj/oj-2/meta.edn
text/vakt/vakt-1/meta.edn
teodorlu commented 5 months ago

Jeg lukker denne fordi @tingstad har identifisert dokumentene med ugyldig UUID.

Se #107 for forslag til handling.