httpstan fails to give a response for large outputs
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 30/100
- Type d'issue
- Bug
- Clarté
- À clarifier
- Activité
- À l'abandon
- Stack technique
- python
- Domaine
- api, backend, networking
Piste de recherche
Commencez par reproduire la requête à sortie volumineuse avec curl contre python -m httpstan, en utilisant le endpoint /v1/models/.../fits/... décrit dans l’issue. Comparez la valeur Content-Length déclarée aux octets reçus et déterminez pourquoi la connexion se ferme ; la tâche est terminée lorsque la réponse complète contenant les résultats du modèle est transmise avec succès.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
This is following on from stan-dev/pystan#396, which ultimately seems to root from an httpstan issue. I'm working on an MWE, but the case I've identified so far seems to happen with a very large dataset. I used curl to interact with httpstan, to isolate whether it was a Pystan or httpstan error.
In the case I've identified, I'm able to compile and sample a large model, which appears to complete successfully according to the operation endpoint. However, when I do the final GET request to retrieve the model results, httpstan sends a header for the response, but then closes the connection without sending any data. There's no visible error on the console running httpstan (which I started using python -m httpstan), but the curl request fails:
$ curl localhost:8080/v1/models/ex6bdm7x/fits/wxft2x3c
curl: (18) transfer closed with 3144360709 bytes remaining to read
and packet sniffing suggests that httpstan is closing the connection:
12 5.048341 127.0.0.1 127.0.0.1 TCP 68 54876 → 8080 [SYN] Seq=0 Win=65535 Len=0 MSS=16344 WS=64 TSval=3703300602 TSecr=0 SACK_PERM
13 5.048735 127.0.0.1 127.0.0.1 TCP 68 8080 → 54876 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=16344 WS=64 TSval=157578390 TSecr=3703300602 SACK_PERM
14 5.048759 127.0.0.1 127.0.0.1 TCP 56 54876 → 8080 [ACK] Seq=1 Ack=1 Win=408256 Len=0 TSval=3703300602 TSecr=157578390
15 5.048771 127.0.0.1 127.0.0.1 TCP 56 [TCP Window Update] 8080 → 54876 [ACK] Seq=1 Ack=1 Win=408256 Len=0 TSval=157578390 TSecr=3703300602
16 5.048832 127.0.0.1 127.0.0.1 HTTP 165 GET /v1/models/ex6bdm7x/fits/wxft2x3c HTTP/1.1
17 5.048851 127.0.0.1 127.0.0.1 TCP 56 8080 → 54876 [ACK] Seq=1 Ack=110 Win=408128 Len=0 TSval=157578390 TSecr=3703300602
34 17.511368 127.0.0.1 127.0.0.1 TCP 216 8080 → 54876 [PSH, ACK] Seq=1 Ack=110 Win=408128 Len=160 TSval=157590864 TSecr=3703300602 [TCP segment of a reassembled PDU]
35 17.511463 127.0.0.1 127.0.0.1 TCP 56 54876 → 8080 [ACK] Seq=110 Ack=161 Win=408128 Len=0 TSval=3703313076 TSecr=157590864
36 17.513067 127.0.0.1 127.0.0.1 HTTP 56 HTTP/1.1 200 OK
37 17.513113 127.0.0.1 127.0.0.1 TCP 56 54876 → 8080 [ACK] Seq=110 Ack=162 Win=408128 Len=0 TSval=3703313077 TSecr=157590865
38 17.513293 127.0.0.1 127.0.0.1 TCP 56 54876 → 8080 [FIN, ACK] Seq=110 Ack=162 Win=408128 Len=0 TSval=3703313077 TSecr=157590865
39 17.513350 127.0.0.1 127.0.0.1 TCP 56 8080 → 54876 [ACK] Seq=162 Ack=111 Win=408128 Len=0 TSval=157590865 TSecr=3703313077
Packet 36 has [FIN, ACK] set.
The corresponding TCP stream is
GET /v1/models/ex6bdm7x/fits/wxft2x3c HTTP/1.1
Host: localhost:8080
User-Agent: curl/8.1.2
Accept: */*
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Content-Length: 3144360709
Date: Wed, 06 Dec 2023 16:26:16 GMT
Server: Python/3.10 aiohttp/3.8.4
- Langage dominant
- Python
- Étoiles
- 42
- Forks
- 14
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de stan-dev/httpstan
-
Difficulté 3/5 1-2 jours Accessibilité débutants 52/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 58/100
-
Expose PathfinderOuverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 35/100
Toutes les issues de stan-dev/httpstan
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
UKGovernmentBEIS/control-arena#917 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
debpalash/VoiceStudio#2937 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
aws-samples/sample-per-model-bedrock#261 ·
Les mainteneurs répondent en général sous 1 jour