Geen manier om te zien hoe ver een lopende baan is als de voortgangsstroom wegvalt #68
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Een scanronde duurt uren. Raakt de client onderweg zijn voortgangsstroom kwijt — het venster dicht, het netwerk hikt, de laptop in slaap — dan meldt de server netjes
en dat "runs on" klopt: de baan loopt door, en dat is met opzet zo. Alleen is er daarna geen enkele manier meer om te zien hoe ver hij is.
ProgressStreamleest een channel leeg naar de response; wat eruit gaat wordt nergens bewaard.IJobServiceweet wél dát er iets draait (IsRunning), maar niet wat en niet hoe ver.POST /api/jobs/cancelis het enige baan-endpoint dat er is. Opnieuw op de scanknop drukken geeft 409.Vandaag is de enige uitweg het resultaat aflezen aan de bibliotheek zelf —
GET /api/collectionsvoor de tellingen, en voor de lijstreparatie tellen hoeveel tracks hun lijstnaam al kwijt zijn. Dat werkt, maar het is raden op basis van bijwerkingen, en het is per stap iets anders.Voorstel:
GET /api/jobsJobServiceonthoudt drie dingen van de lopende baan:ProgressStreamlegt die laatste melding daar neer op precies het moment dat hij hem ook naar de response schrijft — één regel, en het is toch al de plek waar elke melding langskomt. Het endpoint antwoordt dan met dat drietal, of met "er loopt niets".Wat dat oplevert:
curlvolstaat om te zien hoe ver een scan is, ook als er geen client meer aan hangt.GET /api/jobsvragen en de voortgangsregel weer oppakken — nu staat hij daar met een lege statusbalk terwijl de server vrolijk doorwerkt.Aandachtspunten
SingleReader = trueen dat is goed zo; het voorstel is niet om een tweede lezer toe te laten, maar om de laatste melding op te vragen. Wil de speler een lopende regel, dan is dat pollen — één verzoek per seconde is voor een baan van uren ruim genoeg.Done/Total/Added/Current, de andereDone/Total/Current. Het endpoint kan het beste de laatste melding doorgeven zoals hij is, plus welke soort baan het is, en de client laten weten wat hij ermee moet.resultaan het eind, en daarmee het overzichtspaneel uit #57. Dat zou met hetzelfde mechanisme te redden zijn — de laatste afgeronde baan en zijn resultaat onthouden — maar het is een tweede stap en hoeft niet in één keer.CurateApi, achter dezelfde adminpolicy alsjobs/cancel.Is het een idee om de voortgang in het samenvattings venster bij te houden. Dat die dus opend bij het begin en de voortgang en eventuele problemen meldt. Natuurlijk moet de scan wel doorlopen als de client gesloten wordt. Als de client daarna weer geopend graag kijken of er een job loopt en zo ja, de voortgang tonen in het venster