Skip to content

server doesn't stop generating audio after user leaves feed page #20

@AshkanArabim

Description

@AshkanArabim

Describe the bug

The server is designed to stream audio to the client as it is generated to ensure minimum delay from when the user enters the feed page and when the audio starts playing.

The issue, however, is that the server doesn't know that it should stop generating audio when the user leaves the page. I know this is happening because the LLM and TTS services continue receiving API calls (as seen in the access logs) after I leave the page. (see additional context below).

This is a waste of GPU resources, and the user may experience slowdowns due to high GPU activity.

Note that this isn't an issue with a the audio playing after user leaves. The audio correctly stops after I leave the "feed" page. It's just that the server remains busy generating useless audio.

To Reproduce

  • Clone the project
  • make prod
  • Open the website
  • Sign up and Sign in
  • Add a source
  • Click on "Feed"
  • When the audio starts playing, go back home
  • Open the logs; notice how LLM and TTS are still logging API calls

Expected behavior

For TTS and LLM services to stop logging API access in the logs after user leaves "Feed" page.

Screenshots

N/A

Client information:

  • Browser: Brave v1.73.97

Server information

  • OS: Ubuntu Server 24.04
  • Newsbridge commit hash: df53cab40f9b381027ff5f24923b4132c638f968 (in "dev" branch at the time of writing)
  • Server CPU: AMD Ryzen 5 1400
  • Server RAM: 64 Gib
  • Server GPU: NVIDIA GeForce RTX 3060

Additional context

Logs form make prod. I exited the "Feed" page after the first GET request to "tts":

llm-1     | time=2024-12-16T22:29:55.020Z level=INFO source=server.go:637 msg="llama runner started in 1.82 seconds"
llm-1     | [GIN] 2024/12/16 - 22:30:00 | 200 |  7.967002558s |      172.19.0.2 | POST     "/api/generate"
tts-1     | INFO:     172.19.0.2:49232 - "GET /api/tts?text=%D8%A7%DB%8C%D9%86+%E0%A4%96%E0%A4%AC%E0%A4%B0+%D8%A7%D8%B2+%D8%B3%D8%B1%D9%88%DB%8C%D8%B3+%D8%A8%DB%8C%D9%86+%D8%A7%D9%84%D9%85%D9%84%D9%84+%D8%AA%D8%A7%D8%A8%D9%86%D8%A7%DA%A9+%D9%85%DB%8C%E2%80%8C%D8%A2%DB%8C%D8%AF.%0A%0A%D8%B3%D9%82%D9%88%D8%B7+%D8%AF%D9%85%D8%B4%D9%82+%D8%A8%D9%87+%D8%AD%D9%82%DB%8C%D9%82%D8%AA+%D8%B3%D9%82%D9%88%D8%B7+%DB%8C%DA%A9+%D9%86%D8%B8%D8%A7%D9%85+%D8%B3%DB%8C%D8%A7%D8%B3%DB%8C+%D9%88+%D8%A7%D9%82%D8%AA%D8%B5%D8%A7%D8%AF%DB%8C+%D8%A7%D8%B3%D8%AA+%DA%A9%D9%87+%D8%AF%D8%B1+%D8%B3%D8%A7%D9%84%E2%80%8C%D9%87%D8%A7%DB%8C+%DA%AF%D8%B0%D8%B4%D8%AA%D9%87+%D8%A7%D8%B2+%D8%BA%D8%B1%D8%A8+%DA%A9%D9%85%DA%A9Received+%DA%A9%D8%B1%D8%AF%D9%87+%D8%A7%D8%B3%D8%AA.&languagecode=es HTTP/1.1" 200 OK
client-1  | 2024/12/16 22:30:12 [warn] 10#10: *3 an upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/1/00/0000000001 while reading upstream, client: 192.168.58.108, server: , request: "GET /api/get-audio/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InNAcy5jb20iLCJsYW5nIjoiZXMifQ.FVhF2pk9vfnociB86jiR2Rx03TkCJSrSlexnTnNk7uc HTTP/1.1", upstream: "http://172.19.0.2:5000/get-audio/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InNAcy5jb20iLCJsYW5nIjoiZXMifQ.FVhF2pk9vfnociB86jiR2Rx03TkCJSrSlexnTnNk7uc", host: "192.168.58.107:3000", referrer: "http://192.168.58.107:3000/feed"
tts-1     | INFO:     172.19.0.2:48678 - "GET /api/tts?text=+%D8%A7%DB%8C%D9%86+%DA%A9%D9%85%DA%A9s+%D8%AF%D8%B1+%D9%88%D8%A7%D9%82%D8%B9+%D8%AD%D9%85%D8%A7%DB%8C%D8%AA+%D8%A8%D8%B1%D8%A7%DB%8C+%D8%AA%D8%AD%D9%88%D9%84+%D8%A8%D9%87Democracy+%D8%A8%D9%88%D8%AF%D8%8C+%D8%A7%D9%85%D8%A7+%D8%AF%D8%B1+%D9%88%D8%A7%D9%82%D8%B9+%D8%A7%DB%8C%D9%86+SYSTEM+%D8%AE%D9%88%D8%AF+%D8%B1%D8%A7+%D8%AD%D9%81%D8%B8+%D9%85%DB%8C%E2%80%8C%DA%A9%D8%B1%D8%AF.&languagecode=es HTTP/1.1" 200 OK
tts-1     | INFO:     172.19.0.2:54506 - "GET /api/tts?text=+%D8%A7%DB%8C%D9%86+SYSTEM+%D8%A8%D8%A7+%DA%A9%D9%85%DA%A9s+%D8%BA%D8%B1%D8%A8%D8%8C+%D8%A7%D8%B2+%D8%A8%DB%8C%D9%86+%D9%86%D8%B1%D9%81%D8%AA%D8%8C+%D9%88+%D8%B3%D8%B1%D8%A7%D9%86%D8%AC%D8%A7%D9%85+%D8%AF%D8%B1+%DB%8C%DA%A9+%D8%B3%D9%82%D9%88%D8%B7+%D9%86%D8%A7%DA%AF%D9%87%D8%A7%D9%86%DB%8C%D8%8C+%D8%B4%D8%AF.&languagecode=es HTTP/1.1" 200 OK
tts-1     | INFO:     172.19.0.2:51236 - "GET /api/tts?text=+%0A%0A%D8%AD%D8%A7%D9%84%D8%A7+%D9%87%D9%85+%D9%88%D8%A7%D8%B4%D9%86%DA%AF%D8%AA%D9%86+%D8%BA%D8%A7%D9%81%D9%84%DA%AF%DB%8C%D8%B1+%D9%86%D8%B4%D8%AF%D8%8C+%D8%A8%D9%84%DA%A9%D9%87+incluso+%D8%A7%DB%8C%D9%86+%DA%A9%D8%A7%D8%B1+%D8%B1%D8%A7+%D9%86%DB%8C%D8%B2+%D8%A7%D9%86%D8%AC%D8%A7%D9%85+%D8%AF%D8%A7%D8%AF%D9%87+%D8%A7%D8%B3%D8%AA+%DA%A9%D9%87+%D8%A2%D9%86.system+%D8%B1%D8%A7+%D8%A8%D9%87+%DB%8C%DA%A9Democracy+%D8%AA%D8%A8%D8%AF%DB%8C%D9%84+%DA%A9%D9%86%D8%AF.&languagecode=es HTTP/1.1" 200 OK
tts-1     | INFO:     172.19.0.2:55546 - "GET /api/tts?text=+But+unfortunately%D8%8C+%D8%A7%DB%8C%D9%86+%DA%A9%D8%A7%D8%B1%D9%87%D8%A7+%D9%87%D9%85+unsuccessful+%D8%A8%D9%88%D8%AF.%0A%0A%D8%B3%D9%82%D9%88%D8%B7+%D8%AF%D9%85%D8%B4%D9%82+%D8%AD%D9%82%DB%8C%D9%82%D8%AA%D8%A7%D9%8B+%D8%B3%D9%82%D9%88%D8%B7+%DB%8C%DA%A9+%D9%86%D8%B8%D8%A7%D9%85+%D8%B3%DB%8C%D8%A7%D8%B3%DB%8C+%D9%88+%D8%A7%D9%82%D8%AA%D8%B5%D8%A7%D8%AF%DB%8C+%D8%A7%D8%B3%D8%AA.&languagecode=es HTTP/1.1" 200 OK
tts-1     | INFO:     172.19.0.2:50424 - "GET /api/tts?text=+%D8%A7%DB%8C%D9%86+%D9%86%D8%B8%D8%A7%D9%85%D8%8C+%D8%AF%D8%B1+%D9%88%D8%A7%D9%82%D8%B9%D8%8C+%DB%8C%DA%A9+%D8%B3%DB%8C%D8%B3%D8%AA%D9%85+%D8%A7%D8%B3%D8%AA+%DA%A9%D9%87+%D8%A7%D8%B2+%D8%B3%D8%A7%D9%84%E2%80%8C%D9%87%D8%A7%DB%8C+%DA%AF%D8%B0%D8%B4%D8%AA%D9%87+%D8%A7%D8%B2+%D8%BA%D8%B1%D8%A8+%DA%A9%D9%85%DA%A9Received+%DA%A9%D8%B1%D8%AF%D9%87+%D8%A7%D8%B3%D8%AA.&languagecode=es HTTP/1.1" 200 OK
tts-1     | INFO:     172.19.0.2:41054 - "GET /api/tts?text=+%D8%A7%DB%8C%D9%86+%DA%A9%D9%85%DA%A9s+%D8%AF%D8%B1+%D9%88%D8%A7%D9%82%D8%B9+%D8%AD%D9%85%D8%A7%DB%8C%D8%AA+%D8%A8%D8%B1%D8%A7%DB%8C+%D8%AA%D8%AD%D9%88%D9%84+%D8%A8%D9%87Democracy+%D8%A8%D9%88%D8%AF%D8%8C+%D8%A7%D9%85%D8%A7+%D8%AF%D8%B1+realidad+%D8%A7%DB%8C%D9%86+SYSTEM+%D8%AE%D9%88%D8%AF+%D8%B1%D8%A7+%D8%AD%D9%81%D8%B8+%D9%85%DB%8C%E2%80%8C%DA%A9%D8%B1%D8%AF.&languagecode=es HTTP/1.1" 200 OK
tts-1     | INFO:     172.19.0.2:34176 - "GET /api/tts?text=+%D8%A7%DB%8C%D9%86+%D8%B3%DB%8C%D8%B3%D8%AA%D9%85+%D8%A8%D8%A7+%DA%A9%D9%85%DA%A9s+%D8%BA%D8%B1%D8%A8%D8%8C+%D8%A7%D8%B2+%D8%A8%DB%8C%D9%86+%D9%86%D8%B1%D9%81%D8%AA%D8%8C+%D9%88+%D8%B3%D8%B1%D8%A7%D9%86%D8%AC%D8%A7%D9%85+%D8%AF%D8%B1+%DB%8C%DA%A9+%D8%B3%D9%82%D9%88%D8%B7+%D9%86%D8%A7%DA%AF%D9%87%D8%A7%D9%86%DB%8C%D8%8C+%D8%B4%D8%AF.%0A%0A%D8%AD%D8%A7%D9%84%D8%A7+%D9%87%D9%85+%D9%88%D8%A7%D8%B4%D9%86%DA%AF%D8%AA%D9%86+%D8%BA%D8%A7%D9%81%D9%84%DA%AF%DB%8C%D8%B1+%D9%86%D8%B4%D8%AF%D8%8C+%D8%A8%D9%84%DA%A9%D9%87+sogar+%D8%A7%DB%8C%D9%86+%DA%A9%D8%A7%D8%B1+%D8%B1%D8%A7+%D9%86%DB%8C%D8%B2+%D8%A7%D9%86%D8%AC%D8%A7%D9%85+%D8%AF%D8%A7%D8%AF%D9%87+%D8%A7%D8%B3%D8%AA+%DA%A9%D9%87+%D8%A2%D9%86.system+%D8%B1%D8%A7+%D8%A8%D9%87+%DB%8C%DA%A9Democracy+%D8%AA%D8%A8%D8%AF%DB%8C%D9%84+%DA%A9%D9%86%D8%AF.&languagecode=es HTTP/1.1" 200 OK
tts-1     | INFO:     172.19.0.2:34988 - "GET /api/tts?text=+But+unfortunately%D8%8C+%D8%A7%DB%8C%D9%86+%DA%A9%D8%A7%D8%B1%D9%87%D8%A7+%D9%87%D9%85+unsuccessful+%D8%A8%D9%88%D8%AF.%0A%0A%D8%AF%D8%B1+%D8%AD%D8%A7%D9%84+%D8%AD%D8%A7%D8%B6%D8%B1%D8%8CNetanyahu+%D8%A8%D8%A7+%D9%85%D8%AA%D8%AD%D8%AF%D8%A7%D9%86+%D8%AE%D9%88%D8%AF+%D8%AF%D8%B1+%D9%88%D8%A7%D8%B4%D9%86%DA%AF%D8%AA%D9%86+%D9%82%D8%B1%D8%A7%D8%B1+%D8%AF%D8%A7%D8%B1%D8%AF.&languagecode=es HTTP/1.1" 200 OK
tts-1     | INFO:     172.19.0.2:46968 - "GET /api/tts?text=+Netanyahua%D8%AE%D9%88%D8%A7%D9%87%D8%AF+%D8%A8%D8%B1%D8%A7%DB%8C+%D8%AA%D8%AD%D9%82%D9%82+%D8%A7%D9%87%D8%AF%D8%A7%D9%81+%D8%AE%D9%88%D8%AF%D8%8C+%D8%A7%D8%B2+%D9%88%D8%A7%D8%B4%D9%86%DA%AF%D8%AA%D9%86+%D8%AD%D9%85%D8%A7%DB%8C%D8%AA+%DA%A9%D9%86%D8%AF.&languagecode=es HTTP/1.1" 200 OK
llm-1     | INFO [update_slots] input truncated | n_ctx=2048 n_erase=1563 n_keep=4 n_left=2044 n_shift=1022 tid="124062293557248" timestamp=1734388299
llm-1     | [GIN] 2024/12/16 - 22:31:40 | 200 |  1.384732371s |      172.19.0.2 | POST     "/api/generate"
tts-1     | INFO:     172.19.0.2:59646 - "GET /api/tts?text=%D8%AF%D8%B1+%D8%B1%D9%88%D8%B2+%D8%AF%D9%88%D8%B4%D9%86%D8%A8%D9%87%D8%8C+%DB%8C%DA%A9+%D8%B1%D9%88%D8%B2+%D8%A7%D8%B2+%D8%AC%D9%84%D8%B3%D8%A7%D8%AA+%D9%85%D8%B0%D8%A7%DA%A9%D8%B1%D8%A7%D8%AA%DB%8C+%D8%AF%D8%B1+%D8%AA%D9%87%D8%B1%D8%A7%D9%86%D8%8C+%D8%AF%D9%88+%D8%AE%D8%A8%D8%B1+%D9%85%D9%87%D9%85+%D9%85%D9%86%D8%AA%D8%B4%D8%B1+%D8%B4%D8%AF%D9%86%D8%AF.&languagecode=es HTTP/1.1" 200 OK
tts-1     | INFO:     172.19.0.2:59652 - "GET /api/tts?text=firstly%D8%8C+%D8%AA%D9%87%D8%AF%DB%8C%D8%AF%D9%87%D8%A7%DB%8C+%D8%A7%DB%8C%D8%A7%D9%84%D8%A7%D8%AA+%D9%85%D8%AA%D8%AD%D8%AF%D9%87+%D8%A8%D9%87+%D8%A7%DB%8C%D8%B1%D8%A7%D9%86+%D8%AF%D8%B1+%D9%85%D9%88%D8%B1%D8%AF+%D8%AD%D9%85%D9%84%D9%87+%D8%A8%D9%87+%D8%B3%D8%A7%DB%8C%D8%AA%E2%80%8C%D9%87%D8%A7%DB%8C+%D9%87%D8%B3%D8%AA%D9%87%E2%80%8C%D8%A7%DB%8C+%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%D8%9B+%D9%88+%D8%AF%D9%88%D9%85%DB%8C%D9%86%D8%8C+%D8%AA%D8%AD%D8%B1%DB%8C%D9%85%E2%80%8C%D9%87%D8%A7%DB%8C+%D8%AC%D8%AF%DB%8C%D8%AF+%D8%A8%D8%B1%D8%A7%DB%8C+%D8%A7%DB%8C%D8%B1%D8%A7%D9%86.&languagecode=es HTTP/1.1" 200 OK
llm-1     | INFO [update_slots] input truncated | n_ctx=2048 n_erase=2187 n_keep=4 n_left=2044 n_shift=1022 tid="124062293557248" timestamp=1734388318
llm-1     | [GIN] 2024/12/16 - 22:31:59 | 200 |  976.013471ms |      172.19.0.2 | POST     "/api/generate"
tts-1     | INFO:     172.19.0.2:59612 - "GET /api/tts?text=%D8%AD%D8%A7%D9%84+%D8%A7%DB%8C%D9%86+%D8%A7%D8%B3%D8%AA+%DA%A9%D9%87+%D8%AA%D8%B8%D8%A7%D9%87%D8%B1%D8%A7%D8%AA+%D9%88+%D8%A7%D8%B9%D8%AA%D8%B5%D8%A7%D8%A8%D9%87%D8%A7+%D8%A8%D8%A7+%DB%8C%DA%A9%D8%AF%DB%8C%DA%AF%D8%B1+%D9%85%D8%AA%D8%B5%D9%84+%D8%B4%D8%AF%D9%87+%D8%A7%D9%86%D8%AF+%D9%88+%D9%85%D8%B1%D8%AF%D9%85+%D8%A8%D8%A7+%DB%8C%DA%A9+%D9%87%D8%AF%D9%81+%D9%85%D9%88%D8%A7%D8%AC%D9%87+%D8%B4%D8%AF%D9%87+%D8%A7%D9%86%D8%AF.&languagecode=es HTTP/1.1" 200 OK
tts-1     | The text length exceeds the character limit of 239 for language 'es', this might cause truncated audio.
llm-1     | [GIN] 2024/12/16 - 22:32:08 | 200 |  2.371863711s |      172.19.0.2 | POST     "/api/generate"
tts-1     | INFO:     172.19.0.2:59618 - "GET /api/tts?text=La+Agencia+EFE+informa+que+en+un+comunicado,+Tabnak,+una+organizaci%C3%B3n+iran%C3%AD,+ha+solicitado+a+las+autoridades+de+Ir%C3%A1n+y+a+los+ciudadanos+para+evitar+colocar+im%C3%A1genes+de+Ahmad+Sharif+(Jolani)+en+veh%C3%ADculos,+edificios+p%C3%BAblicos,+banderas+o+dentro+de+edificios+gubernamentales.%0A%0AEste+llamado+es+un+recordatorio+de+que+la+identidad+de+Ahmad+Sharif+ha+sido+objeto+de+controversia+y+ha+sido+mencionada+en+contextos+relacionados+con+el+r%C3%A9gimen+anterior+al+gobierno+actual+de+Ir%C3%A1n.&languagecode=es HTTP/1.1" 200 OK
tts-1     | INFO:     172.19.0.2:33052 - "GET /api/tts?text=+La+organizaci%C3%B3n+iran%C3%AD+considera+que+mostrar+estas+im%C3%A1genes+ser%C3%ADa+inapropiado+e+ir%C3%B3nico,+ya+que+se+trata+de+una+pr%C3%A1ctica+que+fue+utilizada+por+el+r%C3%A9gimen+opositor+para+homenajear+a+sus+figuras+m%C3%A1s+prominentes.&languagecode=es HTTP/1.1" 200 OK
llm-1     | [GIN] 2024/12/16 - 22:32:43 | 200 |   4.25020831s |      172.19.0.2 | POST     "/api/generate"
tts-1     | INFO:     172.19.0.2:44974 - "GET /api/tts?text=This+story+is+from+EFE.%0A%0AUna+vez+m%C3%A1s,+el+gobierno+iran%C3%AD+ha+sido+objeto+de+cr%C3%ADtica+por+los+costos+exorbitantes+de+un+concierto+en+una+caravana+tem%C3%A1tica+en+la+provincia+de+Qom.&languagecode=es HTTP/1.1" 200 OK
tts-1     | INFO:     172.19.0.2:46556 - "GET /api/tts?text=+Seg%C3%BAn+informes,+Abdul+Reza+Davari,+secretario+del+proyecto,+escribi%C3%B3+preguntas+sobre+el+concierto+en+las+redes+sociales+X.%0A%0ADicho+concierto,+que+tuvo+lugar+el+pasado+12+de+diciembre,+se+llev%C3%B3+a+cabo+en+un+caravanserai+llamado+Caravan+Saray-e+Deir+Gachin,+ubicado+a+80+kil%C3%B3metros+de+la+ciudad+de+Qom.&languagecode=es HTTP/1.1" 200 OK
tts-1     | INFO:     172.19.0.2:43122 - "GET /api/tts?text=+Seg%C3%BAn+fuentes,+el+costo+para+asistir+al+concierto+es+de+40.&languagecode=es HTTP/1.1" 200 OK
tts-1     | INFO:     172.19.0.2:43128 - "GET /api/tts?text=000+tomanes+por+persona.&languagecode=es HTTP/1.1" 200 OK
client-1  | 192.168.58.108 - - [16/Dec/2024:22:33:09 +0000] "GET /api/get-audio/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InNAcy5jb20iLCJsYW5nIjoiZXMifQ.FVhF2pk9vfnociB86jiR2Rx03TkCJSrSlexnTnNk7uc HTTP/1.1" 200 6722957 "http://192.168.58.107:3000/feed" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" "-"
db-1      | 2024-12-16 22:34:15.910 UTC [27] LOG:  checkpoint starting: time
db-1      | 2024-12-16 22:34:15.956 UTC [27] LOG:  checkpoint complete: wrote 3 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.012 s, sync=0.007 s, total=0.047 s; sync files=2, longest=0.005 s, average=0.004 s; distance=0 kB, estimate=0 kB; lsn=0/198B228, redo lsn=0/198B1D0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions