Problemi nell'aggiornamento/ricompilazione a Beta7

Hi,

I’m currently trying to update our DEV-Instance to the most recent Beta 7, coming from Beta 2.
It’s running on the default `tests-passed’ branch.

My issue is that rebuilding the container ends in a connectivity issue (I guess) with github:

I, [2025-07-28T12:35:19.480463 #1]  INFO -- : Replacing # postgres with if [ -f /root/install_postgres ]; then
  /root/install_postgres
  rm /root/install_postgres
fi
sv start postgres || exit 1
 in /etc/service/unicorn/run
I, [2025-07-28T12:35:19.480838 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse git clean -f
I, [2025-07-28T12:35:19.511065 #1]  INFO -- : 
I, [2025-07-28T12:35:19.511112 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [ $(git rev-parse --is-shallow-repository) == "true" ]; then
      git remote set-branches --add origin main
      git remote set-branches origin tests-passed
      git fetch --depth 1 origin tests-passed
  else
      git fetch --tags --prune-tags --prune --force origin
  fi
'
error: RPC failed; curl 56 Recv failure: Connection reset by peer
error: 44 bytes of body are still expected
fatal: expected flush after ref listing
I, [2025-07-28T12:37:22.158398 #1]  INFO -- : 
I, [2025-07-28T12:37:22.158628 #1]  INFO -- : Terminating async processes

General connectivity on the host is fine otherwise, if I clear the Docker Build Cache before ./launcher rebuild app I can see that it actually pulls the most recent version, pulls all the container images and so on, but still fails afterwards:

Long stdout output
I, [2025-07-28T12:19:42.269421 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [ $(git rev-parse --is-shallow-repository) == "true" ]; then
      git remote set-branches --add origin main
      git remote set-branches origin tests-passed
      git fetch --depth 1 origin tests-passed
  else
      git fetch --tags --prune-tags --prune --force origin
  fi
'
From https://github.com/discourse/discourse
 - [deleted]             (none)     -> origin/dependabot/bundler/nokogiri-1.18.9
 - [deleted]             (none)     -> origin/dependabot/bundler/playwright-ruby-client-1.54.0
 - [deleted]             (none)     -> origin/dependabot/bundler/propshaft-1.2.0
 - [deleted]             (none)     -> origin/dependabot/npm_and_yarn/babel-plugin-ember-template-compilation-3.0.0
 - [deleted]             (none)     -> origin/dependabot/npm_and_yarn/glob-11.0.3
 - [deleted]             (none)     -> origin/dependabot/npm_and_yarn/playwright-1.54.1
 - [deleted]             (none)     -> origin/dev/decorate-quote-collapsed-content-properly
 - [deleted]             (none)     -> origin/dev/extract-invite-guardian
 - [deleted]             (none)     -> origin/dev/mt/discourse-category-custom-fields
 - [deleted]             (none)     -> origin/dev/mt/discourse-group-users
 - [deleted]             (none)     -> origin/dev/mt/discourse-groups
 - [deleted]             (none)     -> origin/dev/mt/discourse-muted-users
 - [deleted]             (none)     -> origin/dev/mt/requires-set
 - [deleted]             (none)     -> origin/dev/no-more-widgets
 - [deleted]             (none)     -> origin/dev/use-themeable-site-settings-horizon
 - [deleted]             (none)     -> origin/enable-new-topic-btn-on-restricted-category
 - [deleted]             (none)     -> origin/feature-admin-filter-controls
 - [deleted]             (none)     -> origin/feature/enable-rich-editor-for-all
 - [deleted]             (none)     -> origin/filtermagic
 - [deleted]             (none)     -> origin/fix/mt/log-failed-downloads
 - [deleted]             (none)     -> origin/fix/translated-badge-title
 - [deleted]             (none)     -> origin/layout-container-dev
 - [deleted]             (none)     -> origin/loic-upgrade-rails-8.0
 - [deleted]             (none)     -> origin/media-convert-job
 - [deleted]             (none)     -> origin/merge-sso-destination-url-cookie-with-destination-url-cookie
 - [deleted]             (none)     -> origin/mt/set_store
 - [deleted]             (none)     -> origin/pento/dev-flag-reason-tests
 - [deleted]             (none)     -> origin/playwright-1.53
 - [deleted]             (none)     -> origin/refactor-color-palette
 - [deleted]             (none)     -> origin/remove-suspended-and-deleted-users-from-leaderboard
 - [deleted]             (none)     -> origin/rollup-theme-experiment
 - [deleted]             (none)     -> origin/ux-editor-toolbar-mobile-scroll
 - [deleted]             (none)     -> origin/ux/sidebar-show-messages-count
   43ddd4ef3..ea5b5b6c0  main                    -> origin/main
 * [new branch]          0-a-depr-html-safe      -> origin/0-a-depr-html-safe
 * [new branch]          0-a-tabs                -> origin/0-a-tabs
 * [new branch]          add-composer-mention-warnings -> origin/add-composer-mention-warnings
   187f13d67..8d4a86f25  add-plugin-outlet-wrapper-to-login-template -> origin/add-plugin-outlet-wrapper-to-login-template
 * [new branch]          ai_default_llm          -> origin/ai_default_llm
 * [new branch]          content-border-color    -> origin/content-border-color
 + 51077ac74...088f149a6 dependabot/bundler/excon-1.2.8 -> origin/dependabot/bundler/excon-1.2.8  (forced update)
 + 36699b311...e3f5c2d0d dependabot/bundler/jwt-3.1.2 -> origin/dependabot/bundler/jwt-3.1.2  (forced update)
 * [new branch]          dependabot/bundler/octokit-10.0.0 -> origin/dependabot/bundler/octokit-10.0.0
 * [new branch]          dependabot/bundler/stripe-15.3.0 -> origin/dependabot/bundler/stripe-15.3.0
 + def825f3f...b5a5f3924 dependabot/bundler/web-push-3.0.2 -> origin/dependabot/bundler/web-push-3.0.2  (forced update)
 * [new branch]          dependabot/bundler/zendesk_api-3.1.1 -> origin/dependabot/bundler/zendesk_api-3.1.1
 + f4d832ec8...5aa0145f3 dependabot/npm_and_yarn/embroider-0ad991d471 -> origin/dependabot/npm_and_yarn/embroider-0ad991d471  (forced update)
 * [new branch]          dependabot/npm_and_yarn/fortawesome/fontawesome-free-7.0.0 -> origin/dependabot/npm_and_yarn/fortawesome/fontawesome-free-7.0.0
 * [new branch]          dependabot/npm_and_yarn/jspreadsheet-ce-5.0.3 -> origin/dependabot/npm_and_yarn/jspreadsheet-ce-5.0.3
 * [new branch]          dependabot/npm_and_yarn/lint-fda1ac657e -> origin/dependabot/npm_and_yarn/lint-fda1ac657e
 + e46dc3798...d3420e3eb dependabot/npm_and_yarn/prosemirror-f8434604ae -> origin/dependabot/npm_and_yarn/prosemirror-f8434604ae  (forced update)
 * [new branch]          dependabot/npm_and_yarn/puppeteer-core-24.15.0 -> origin/dependabot/npm_and_yarn/puppeteer-core-24.15.0
 + 4bcbc028d...03b9759db dev-floatkit-autocomplete-d-editor -> origin/dev-floatkit-autocomplete-d-editor  (forced update)
 + ea5bba76a...03b9759db dev-floatkit-autocomplete-d-editor-qa -> origin/dev-floatkit-autocomplete-d-editor-qa  (forced update)
 * [new branch]          dev/decorate-cooked-state -> origin/dev/decorate-cooked-state
   56e6c9ae1..11c480f88  dev/no-more-widgets-smoke-test -> origin/dev/no-more-widgets-smoke-test
 * [new branch]          dev/post-keep-detail-state -> origin/dev/post-keep-detail-state
 * [new branch]          dev/prevent-rerenderings -> origin/dev/prevent-rerenderings
 * [new branch]          dev/remove-redundant-staff-check-6 -> origin/dev/remove-redundant-staff-check-6
   1f3bbee91..00dfb95b1  dev/try-fix-flakys-tss  -> origin/dev/try-fix-flakys-tss
 * [new branch]          dual-mode-palettes-wip  -> origin/dual-mode-palettes-wip
 * [new branch]          feature/color-mode-preference -> origin/feature/color-mode-preference
 * [new branch]          feature/type-upload-in-type-objects -> origin/feature/type-upload-in-type-objects
 * [new branch]          feature/use-current-user-tz-instead-of-guess-local-dates -> origin/feature/use-current-user-tz-instead-of-guess-local-dates
 * [new branch]          filter-tips-dmenu-martinwip -> origin/filter-tips-dmenu-martinwip
 * [new branch]          filter-updates          -> origin/filter-updates
 * [new branch]          fix-color-palette-dark  -> origin/fix-color-palette-dark
 * [new branch]          fix/missing-user-custom-preferences-outlet-class-in-connector -> origin/fix/missing-user-custom-preferences-outlet-class-in-connector
 * [new branch]          improve_no_database_error_patch -> origin/improve_no_database_error_patch
 * [new branch]          improve_pg_adapter_new_client_error -> origin/improve_pg_adapter_new_client_error
 * [new branch]          loic-pitchfork          -> origin/loic-pitchfork
 * [new branch]          messages-dropdown-d-menu -> origin/messages-dropdown-d-menu
 * [new branch]          my-pref-lang            -> origin/my-pref-lang
 * [new branch]          notification-panel-refactor -> origin/notification-panel-refactor
 * [new branch]          pinned-dmenu            -> origin/pinned-dmenu
 * [new branch]          rollup-plugin-experiment -> origin/rollup-plugin-experiment
 * [new branch]          rollup-theme-experiment-cross-theme-import -> origin/rollup-theme-experiment-cross-theme-import
 * [new branch]          samsaffron/codex/convert-filter-tips-to-use-dmenu -> origin/samsaffron/codex/convert-filter-tips-to-use-dmenu
   8cb90072e..710d9fd41  sandbox/design-1        -> origin/sandbox/design-1
   1f97cf422..aa2fb29fa  sandbox/dev-xp-1        -> origin/sandbox/dev-xp-1
   817a743cb..3428acddc  sandbox/member-xp-1     -> origin/sandbox/member-xp-1
 + d182efe6f...a0aba00c7 sandbox/member-xp-2     -> origin/sandbox/member-xp-2  (forced update)
 * [new branch]          source-identify-modulepreload -> origin/source-identify-modulepreload
 + 9aa6daa1f...c56258634 split-login-admin-settings -> origin/split-login-admin-settings  (forced update)
   a83bd0f67..41e1152f6  stable                  -> origin/stable
 + 293de3a75...e31549885 temp-user-creation-debug-logging -> origin/temp-user-creation-debug-logging  (forced update)
   43ddd4ef3..ea5b5b6c0  tests-passed            -> origin/tests-passed
 * [new branch]          theme-upload-cleanup    -> origin/theme-upload-cleanup
 * [new branch]          translations-from-crowdin-main -> origin/translations-from-crowdin-main
 + 9f8fd9214...c3562ed3a translations-from-crowdin-stable -> origin/translations-from-crowdin-stable  (forced update)
 + 4ffab7134...e211b4a55 unicode-mentions-in-composer-rte -> origin/unicode-mentions-in-composer-rte  (forced update)
 * [new branch]          ux-footer-button-squish -> origin/ux-footer-button-squish
 * [new branch]          ux-horizon-discotoc     -> origin/ux-horizon-discotoc
 * [new branch]          ux-unify-appearance-filters -> origin/ux-unify-appearance-filters
   b0c2d83ec..045aefecb  ux/horizon-mobile-composer -> origin/ux/horizon-mobile-composer
 * [new branch]          ux/sidebar-my-messages-enhancements -> origin/ux/sidebar-my-messages-enhancements
 + 28d11bbd0...6f7d9e816 variable-additions-2    -> origin/variable-additions-2  (forced update)
   39d2564ba..57dcfda6a  vite-squashed-rebased   -> origin/vite-squashed-rebased
I, [2025-07-28T12:19:43.174876 #1]  INFO -- : 
I, [2025-07-28T12:19:43.174943 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [[ $(git symbolic-ref --short HEAD) == tests-passed ]] ; then
      git pull
  else
      git -c advice.detachedHead=false checkout tests-passed
  fi
'
error: RPC failed; curl 56 Recv failure: Connection reset by peer
error: 5470 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output
fatal: could not fetch bff89c0762e874ec88d553d89901dbda4fa89f20 from promisor remote
I, [2025-07-28T12:23:50.121438 #1]  INFO -- : 

While it is trying to fetch from Github I can see no activity whatsoever on the Host in htop.

Host details: Proxmox VM running Debian 11, 4 Cores, 12GB Memory. Plenty of free memory while rebuilding, so it should not be a memory issue.
The server is hosted in germany, so there shouldn’t be anything blocking access to github.
I’ve found that

fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

indicates a tiemout, e.G. when the connection is too slow. Checking the connection speed shows around 890MBit/s Up and Down. Storage is all NVMe, so I don’t see any reason for it to time out at this step.

I’ve tried clearing all the Docker Build cache, updating the host system first to the most recent packages, rebooting, even moving it to a different node in the cluster to remove a faulty host as the issue.

Almost forgot to add: Heading towards the Admin Panel, I get the Information that I am not on the most recent version, but clicking on the Click here to update results in an error:

Server-Error
while loading /admin/docker/repos
Errorcode: 502 error

I can see timeout errors there as well:

activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:128:in `block in wait_poll' 
<internal:kernel>:187:in `loop'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:117:in `wait_poll' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:78:in `internal_poll' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:204:in `internal_poll' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:73:in `block in poll' 
/usr/local/lib/ruby/3.3.0/monitor.rb:201:in `synchronize'
/usr/local/lib/ruby/3.3.0/monitor.rb:201:in `mon_synchronize'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:82:in `synchronize' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:73:in `poll' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:868:in `acquire_connection' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:564:in `checkout' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `with_connection' 
activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection' 
activerecord-7.2.2.1/lib/active_record/transactions.rb:410:in `with_transaction_returning_status' 
activerecord-7.2.2.1/lib/active_record/transactions.rb:366:in `save!' 
activerecord-7.2.2.1/lib/active_record/suppressor.rb:56:in `save!' 
activerecord-7.2.2.1/lib/active_record/persistence.rb:55:in `create!' 
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:128:in `process_queue' 
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:77:in `worker_loop' 
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:63:in `block (2 levels) in ensure_worker_threads' 

and

excon-1.2.5/lib/excon/socket.rb:386:in `select_with_timeout' 
excon-1.2.5/lib/excon/socket.rb:258:in `rescue in read_nonblock' 
excon-1.2.5/lib/excon/socket.rb:228:in `read_nonblock' 
excon-1.2.5/lib/excon/socket.rb:89:in `block in readline' 
<internal:kernel>:187:in `loop'
excon-1.2.5/lib/excon/socket.rb:78:in `readline' 
excon-1.2.5/lib/excon/response.rb:73:in `block in parse' 
<internal:kernel>:187:in `loop'
excon-1.2.5/lib/excon/response.rb:72:in `parse' 
excon-1.2.5/lib/excon/middlewares/response_parser.rb:7:in `response_call' 
excon-1.2.5/lib/excon/connection.rb:472:in `response' 
excon-1.2.5/lib/excon/connection.rb:297:in `request' 
/var/www/discourse/lib/discourse_updates.rb:136:in `new_features_payload' 
/var/www/discourse/app/jobs/scheduled/check_new_features.rb:24:in `execute' 
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform' 
rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform' 
/var/www/discourse/app/jobs/base.rb:299:in `each' 
/var/www/discourse/app/jobs/base.rb:299:in `perform' 
/var/www/discourse/app/jobs/base.rb:379:in `perform' 
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:137:in `process_queue' 
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:77:in `worker_loop' 
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:63:in `block (2 levels) in ensure_worker_threads' 

I’m really out of ideas here. I tried increasing the system ressources, but adding more cores or memory does not change anything, the error persists.

I tried increasing the git http.postBuffer as well, now it’s stuck a little longer before failing.

I hope someone has an idea, as I couldn’t find any more threads or posts about this kind of error.

Thanks!

Hai molte estensioni nel tuo file app.yml? Potrebbe valere la pena commentarle tutte e vedere se le cose funzionano, e in tal caso puoi iniziare a commentarle di nuovo.

Non utilizziamo molti plugin. Ho già rimosso quelli che sono stati implementati nel core secondo i changelog.

Attualmente sono impostati solo questi:

          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-translator.git
          - git clone https://github.com/discourse/onebox.git

Ho commentato queste righe, ma è ancora bloccato nello stesso punto.

Questa è anche solo un’istanza DEV, quindi non preoccuparti dei dati. Se tutto va storto, posso semplicemente caricare un dump dal server di produzione per farlo ripartire. Ma il nostro sistema di produzione è sulla stessa versione, quindi immagino che affronterò gli stessi problemi anche lì.

Sembra un problema del provider, o forse un problema del kernel. Ma non ho familiarità con un’installazione per sviluppatori.

È ospitato presso Hetzner in Germania, non c’è niente di speciale nemmeno nel kernel, solo debian 11 predefinito al Kernel 5.10.237-1.

DEV-Instance si riferisce solo al fatto che è la nostra istanza di test per provare cose come aggiornamenti/upgrade prima di eseguirli sulla nostra attuale configurazione di produzione per assicurarsi che non interrompa la versione live. Quindi è fondamentalmente solo una replica del nostro sistema live su cui provare le cose.

Ah, giusto. Se si basa sul contenitore usuale e ha problemi di connettività, penso che non sia un problema di Discourse.

Il tuo kernel è molto vecchio. Io sto eseguendo Ubuntu 24.04 con 6.8.0-53.

Il Kernel è stato compilato a Maggio 2025 ed è quello attuale per Debian 11, che è ancora pienamente supportato. 2 Mesi non sono poi così “vecchi”.

Tuttavia, per escludere questa possibilità, ho aggiornato il sistema a Debian 12 e al Kernel 6.10 più recente (di nuovo, non vecchio, questo è il kernel Debian 12 più recente senza eseguire build dev/nightly/preview) e il problema è esattamente lo stesso.

Tutto sull’host funziona, non ci sono problemi di connettività con GitHub o altri siti, anche un aggiornamento completo del sistema è andato a buon fine in 5 minuti e senza problemi. L’unica cosa che non funziona su questo sistema è discourse, che invece funzionava per diversi anni prima di questo aggiornamento.

È anche strano che l’Aggiornamento tramite il pannello Admin mostri solo un 502, che indica alcuni problemi all’interno di discourse, mentre si esegue un’immagine standard per lo più non modificata. Non sono installati plugin di terze parti, nessuna modifica oltre a un tema personalizzato.

È molto strano. Ben fatto per aver controllato il kernel: ci sono state incompatibilità di versione del kernel ma evidentemente non è questo il caso.

Puoi ottenere una riga di comando all’interno del container e magari provare alcune operazioni di rete (wget o curl) ma non sono sicuro di cosa potrebbe dimostrare.

Al momento non ho altre idee, mi dispiace.

Ho scoperto che gli errori puntano a configurazioni Git che potrebbero dover essere modificate, ma non sono sicuro di dove potrei modificarle dato che tutto avviene all’interno del container durante la ricompilazione. Modificarle sull’host stesso non ha sortito alcun effetto.

Quindi modifiche come git config http.postBuffer 524288000 probabilmente non influenzeranno la ricompilazione se modificate sul sistema host.
Lo stesso vale per le impostazioni di compressione o i limiti di memoria di Git.

Verificherò se riesco a creare una nuova configurazione su un host simile o se anche questo fallisce con la stessa versione.

Forse potresti inserire alcune specifiche di comando nel tuo file app.yml, vedi

Ho provato anche questo e purtroppo non è cambiato nulla. Non sono sicuro se il comando viene eseguito prima che tenti di scaricare/costruire il container effettivo.

Dovrebbe essere eseguito proprio all’avvio per (ri)costruire. Mi aspetterei che questi hook vengano eseguiti dopo aver scaricato/costruito il sito in /var/www/discourse, cosa che per me non si completa.

A questo punto sono davvero a corto di idee..

Modifica: Ho provato a diagnosticarlo dall’interno del container in esecuzione e sembra esserci anche un problema. Anche il tentativo di clonare il repository discourse docker fallisce qui:

root@community-app:/tmp# git clone https://github.com/discourse/discourse_docker.git
Clonazione in 'discourse_docker'...
remote: Enumerating objects: 7235, done.
remote: Counting objects: 100% (234/234), done.
remote: Compressing objects: 100% (104/104), done.
error: RPC failed; curl 56 Recv failure: Connection reset by peer
error: 1355 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

Quindi ci deve essere qualcosa che non va all’interno di docker o… non lo so.
Posso clonare lo stesso repository senza problemi dal sistema host, ma non all’interno del container. Che è lo stesso punto in cui fallisce la ricostruzione.

Diagnosticherò un po’ il networking di docker, forse troverò qualcosa.

Ooof, alla fine ho capito. Il problema era effettivamente con Docker e la rete host, non con Discourse.

Hetzner, se esegui un vSwitch con una subnet pubblica, richiede che l’MTU sia impostato su 1400 invece di 1500. L’avevo cambiato a un certo punto, ma apparentemente quel cambiamento è stato annullato a un certo punto. Quindi ho dovuto rifarlo e riavviare Docker con l’MTU corretto.

Ora funziona anche il sito di aggiornamento all’interno di Discourse.

È buffo come tutto il resto abbia funzionato per tutto il tempo.

1 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.