IRC Logs for #lost


2024-09-04

07:00:37 kevin joined the channel
07:23:29 XanClic joined the channel
12:05:00 kevin: XanClic: Hast du eine Idee, wie man in rsd aus Versehen in einem anderen Context landen kann, so dass in libblkio-async die Assertion schiefgeht? Das passiert mir einfach mittendrin, nachdem der Export schon einige Requests erfolgreich abgearbeitet hat.
12:05:26 XanClic: Hm, schade
12:05:28 XanClic: So spontan leider nicht
12:06:16 kevin: Also, ich bin der Meinung, dass die Assertion eh kaputt ist, weil will_wake() immer false zurückgeben darf, aber glaube nicht, dass das mein Fall ist, weil wenn man die Assertion mit ignoriert, indem man einen Releasebuild macht, hängt es halt manchmal einfach, obwohl es Completions gibt
12:07:48 XanClic: Ich hab sogar vergessen, was das Problem mit verschiedenen Contexten war
12:07:58 XanClic: Ich glaube, dann wäre es doof, Rc<> zu benutzen und es müsste Arc<> sein
12:08:56 kevin: Kommt wohl drauf an, ob die verschiedenen Contexts in verschiedenen Threads sind, aber potenziell wohl ja...
12:09:06 XanClic: Was tatsächlich zumindest laut flamegraph signifikant langsamer war, aber vielleicht müsste man das richtig benchmarken
12:09:07 kevin: Ich nehme an, das andere Problem ist das, was ich eben bekomme
12:09:43 kevin: Dass await_completion_fd Pending zurückgibt, aber nichts den Waker wieder aufweckt
12:10:47 kevin: Oder das ist jedenfalls meine aktuelle Annahme. Auf libblkio-async-Ebene gedebuggt habe ich es noch nicht.
12:11:06 XanClic: Das klingt beides ja eher nach rsd-Problemen als nach libblkio-async
12:11:40 kevin: Hm, was sollte rsd bei dem await_completion_fd()-Problem machen?
12:12:00 kevin: Pending sagen, obwohl man nicht weckt, ist doch ein Bug in der Funktion, oder?
12:12:09 XanClic: Na ja, wenn da Pending zurückkommt, erwarte ich, dass tokio sich den Context gemerkt hat und pollen wollen wird
12:12:32 XanClic: poll_read_ready() sollte den Waker ja irgendwo registrieren
12:12:33 kevin: Tokio ist nicht in allen Codepfaden involviert
12:13:02 kevin: Der Pfad hier: "// Someone else is waiting on the completion FD"
12:13:15 kevin: Das tut halt, solange der Context gleich ist. Aber sonst nicht.
12:13:36 XanClic: Na ja, wenn der Context nicht gleich ist, ist es auch ein rsd-Problem, würde ich erstmal sagen
12:13:44 XanClic: Weil der Context gleich sein sollte
12:14:42 kevin: Ja, gut, warum er das bei mir nicht ist, weiß ich auch nicht...
12:15:35 kevin: Aber dürfen nicht theoretisch mehrere User dieselbe Node benutzen und dann einen verschiedenen Context haben?
12:15:49 kevin: Was ja bei mir nicht der Fall ist, aber so prinzipiell halt
12:16:55 XanClic: Gute Frage, ich glaube, bisher war es so, dass es einen Context pro Thread gibt
12:19:57 XanClic: vielleicht war es naiv davon auszugehen, dass tokio nicht einfach so neue Contexte erstellen würde
12:20:26 XanClic: Möglich, dass ich auch viel falsch verstanden hab, aber die Absicht war, dass main() einen Context hat, in dem der MonitorPoller gepollt wird, der dann im Hauptthread alles macht
12:21:20 XanClic: Oder, hm, eigentlich s/einen Context/eine Runtime/
12:21:25 XanClic: Genau wie jeder Thread eine Runtime hat
12:21:45 XanClic: Heißt natürlich nicht zwingend, dass die Runtime immer denselben Context benutzt…
13:08:13 kevin: Ja, genau das verstehe ich auch nicht ganz, was ein Context jetzt eigentlich so ganz genau ist
13:08:57 kevin: Aber nachdem du gesagt hast, dass rsd Multiqueue kann, dachte ich, dass es vorgesehen ist, von mehreren verschiedenen Threads Requests für dassselbe Image zu schicken
13:10:07 kevin: Ah, aber die benutzen dann verschiedene Queues, und der Context muss nur in derselben Queue gleich sein, oder?
13:10:38 kevin: Also fällt der Teil weg und die Frage ist tatsächlich nur noch, wieso ich im selben Thread verschiedene Contexts bekomme
13:46:05 XanClic: Ja, ich bin eigentlich davon ausgegangen, dass jeder Thread sein Wurzel-poll() hier hat: https://gitlab.com/hreitz/rsd/-/blob/main/src/thread.rs?ref_type=heads#L156
13:46:27 XanClic: Und davon dann alles in dem Thread mit @cx gepollt wird
13:50:15 kevin: Außer dem Mainthread, oder?
13:50:27 XanClic: Jap
13:50:44 kevin: Ich bin im Moment komplett im Mainthread
13:50:46 XanClic: Der hats in https://gitlab.com/hreitz/rsd/-/blob/main/src/monitor.rs?ref_type=heads#L1859
13:51:01 kevin: Aber da sehe ich auch keinen richtigen Grund, warum es anders sein sollte
15:07:34 kevin: Hm! Der Waker ist gar kein Tokio-Waker. FuturesUnordered benutzt wohl irgendwo einen eigenen Context.
18:36:45 xq joined the channel
19:33:07 Biolunar joined the channel