2.7.0.beta2 aggiornamento fallito

Hi, I just received an email from discourse, proposing to upgrade from 2.7.0.beta1 to 2.7.0.beta2.
I went to the admin page and clicked on upgrade, and it seems like something has failed.
As a result, it is not possible to access my dicourse instance anymore (Error 500).

I include here the final part of the log. The full log was too long and therefore I could not include it here.
Instead, you can access it through pastebin.

The instance is hosted on a 2GB memory, 50GB hard disk digital ocean droplet. Nothing special was configured at this discourse instance. In fact, nobody even ever sent a single message on this instance.

brotli -f --quality=6 /var/www/discourse/public/assets/locales/zh_TW-09cd38bbba5770af30c208be36b0763fb1db74e336db84185e8a173201f7548e.js --output=/var/www/discourse/public/assets/locales/zh_TW-09cd38bbba5770af30c208be36b0763fb1db74e336db84185e8a173201f7548e.js.br


Done compressing locales/zh_TW-09cd38bbba5770af30c208be36b0763fb1db74e336db84185e8a173201f7548e.js : 0.11 secs

5746.556775825 Compressing: locales/sv-dfd441e5e9497b2361a61cc46e5f3491508ad05a9d84ef0a2c17dac10890fd24.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/sv-dfd441e5e9497b2361a61cc46e5f3491508ad05a9d84ef0a2c17dac10890fd24.js > /var/www/discourse/public/assets/locales/sv-dfd441e5e9497b2361a61cc46e5f3491508ad05a9d84ef0a2c17dac10890fd24.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/locales/sv-dfd441e5e9497b2361a61cc46e5f3491508ad05a9d84ef0a2c17dac10890fd24.js --output=/var/www/discourse/public/assets/locales/sv-dfd441e5e9497b2361a61cc46e5f3491508ad05a9d84ef0a2c17dac10890fd24.js.br


Done compressing locales/sv-dfd441e5e9497b2361a61cc46e5f3491508ad05a9d84ef0a2c17dac10890fd24.js : 0.11 secs

5746.662857966 Compressing: locales/sl-97d2fc2eec6a4603afbd6466d84b4281605561c943f4b70c52d8b6874a54acef.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/sl-97d2fc2eec6a4603afbd6466d84b4281605561c943f4b70c52d8b6874a54acef.js > /var/www/discourse/public/assets/locales/sl-97d2fc2eec6a4603afbd6466d84b4281605561c943f4b70c52d8b6874a54acef.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/locales/sl-97d2fc2eec6a4603afbd6466d84b4281605561c943f4b70c52d8b6874a54acef.js --output=/var/www/discourse/public/assets/locales/sl-97d2fc2eec6a4603afbd6466d84b4281605561c943f4b70c52d8b6874a54acef.js.br


Done compressing locales/sl-97d2fc2eec6a4603afbd6466d84b4281605561c943f4b70c52d8b6874a54acef.js : 0.1 secs

5746.764039922 Compressing: locales/hy-afe58e4f81b01be42710b51b1eb32d913a9a77fb35efd5f197144d7113693a04.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/hy-afe58e4f81b01be42710b51b1eb32d913a9a77fb35efd5f197144d7113693a04.js > /var/www/discourse/public/assets/locales/hy-afe58e4f81b01be42710b51b1eb32d913a9a77fb35efd5f197144d7113693a04.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/locales/hy-afe58e4f81b01be42710b51b1eb32d913a9a77fb35efd5f197144d7113693a04.js --output=/var/www/discourse/public/assets/locales/hy-afe58e4f81b01be42710b51b1eb32d913a9a77fb35efd5f197144d7113693a04.js.br


Done compressing locales/hy-afe58e4f81b01be42710b51b1eb32d913a9a77fb35efd5f197144d7113693a04.js : 0.14 secs

5746.902258561 Compressing: locales/da-2c6e181ef146930e8baa63c4ffe80df59414b8de019ee19058aa4ee1dcd88280.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/da-2c6e181ef146930e8baa63c4ffe80df59414b8de019ee19058aa4ee1dcd88280.js > /var/www/discourse/public/assets/locales/da-2c6e181ef146930e8baa63c4ffe80df59414b8de019ee19058aa4ee1dcd88280.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/locales/da-2c6e181ef146930e8baa63c4ffe80df59414b8de019ee19058aa4ee1dcd88280.js --output=/var/www/discourse/public/assets/locales/da-2c6e181ef146930e8baa63c4ffe80df59414b8de019ee19058aa4ee1dcd88280.js.br


Done compressing locales/da-2c6e181ef146930e8baa63c4ffe80df59414b8de019ee19058aa4ee1dcd88280.js : 0.11 secs

5747.007671073 Compressing: locales/te-9740a00eaeb5b1140e0042391528339d963a5a043a8edae6ca33d4e939d50133.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/te-9740a00eaeb5b1140e0042391528339d963a5a043a8edae6ca33d4e939d50133.js > /var/www/discourse/public/assets/locales/te-9740a00eaeb5b1140e0042391528339d963a5a043a8edae6ca33d4e939d50133.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/locales/te-9740a00eaeb5b1140e0042391528339d963a5a043a8edae6ca33d4e939d50133.js --output=/var/www/discourse/public/assets/locales/te-9740a00eaeb5b1140e0042391528339d963a5a043a8edae6ca33d4e939d50133.js.br


Done compressing locales/te-9740a00eaeb5b1140e0042391528339d963a5a043a8edae6ca33d4e939d50133.js : 0.15 secs

5747.159975235 Compressing: locales/ko-0c03d0523d94c0739085171c60657b22b01c8eb0b2b2bb690e7fb3422b756e17.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/ko-0c03d0523d94c0739085171c60657b22b01c8eb0b2b2bb690e7fb3422b756e17.js > /var/www/discourse/public/assets/locales/ko-0c03d0523d94c0739085171c60657b22b01c8eb0b2b2bb690e7fb3422b756e17.js.gz

brotli -f --quality=6 /var/www/discourse/public/assets/locales/ko-0c03d0523d94c0739085171c60657b22b01c8eb0b2b2bb690e7fb3422b756e17.js --output=/var/www/discourse/public/assets/locales/ko-0c03d0523d94c0739085171c60657b22b01c8eb0b2b2bb690e7fb3422b756e17.js.br


Done compressing locales/ko-0c03d0523d94c0739085171c60657b22b01c8eb0b2b2bb690e7fb3422b756e17.js : 0.12 secs

Skipping: plugins/discourse-local-dates-85c0a52c5a0ee4c69ce0a55fb5c6047c7fd2c12f0437b843240bb9ea3d4457b1.js already compressed
Skipping: plugins/discourse-narrative-bot-d88c63e1a6fadc2e6371b706e54750b554e3ee890061223c9af0f8feeb89915a.js already compressed
Skipping: plugins/discourse-presence-da4864123e624ace0b06153a5b9e6b600e5d5b6d6c28ada211bb7ec50894a66c.js already compressed
Skipping: plugins/poll-91a566fa78da0bffec70d7c8923ac79757032168b646e8c84d921d9810789bb1.js already compressed
Skipping: application-bd6ed652347208302845f7e2be3f2d2dbbbb72be7df2c0e46c18422a61188ff0.js already compressed
5747.281046973 Compressing: vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js
uglifyjs '/var/www/discourse/public/assets/_vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js' -m -c -o '/var/www/discourse/public/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js' --source-map "base='/var/www/discourse/public/assets',root='/assets',url='/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js.map'"
Parse error at _vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js:1850,34
        return Handlebars.compile(...arguments);
                                  ^
ERROR: Unexpected token: punc ÂŤ.Âť
    at JS_Parse_Error.get (eval at <anonymous> (/usr/lib/node_modules/uglify-js/tools/node.js:18:1), <anonymous>:71:23)
    at fatal (/usr/lib/node_modules/uglify-js/bin/uglifyjs:332:27)
    at run (/usr/lib/node_modules/uglify-js/bin/uglifyjs:275:9)
    at Object.<anonymous> (/usr/lib/node_modules/uglify-js/bin/uglifyjs:190:5)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
rake aborted!
Errno::ENOENT: No such file or directory @ rb_file_s_size - /var/www/discourse/public/assets/vendor-b631d4ab0775fdbe453aa2158e18dc41826d0ba619e5f2731e5b9fa4c458af99.js
/var/www/discourse/lib/tasks/assets.rake:287:in `size'
/var/www/discourse/lib/tasks/assets.rake:287:in `block (4 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:178:in `block in concurrent?'
/var/www/discourse/lib/tasks/assets.rake:278:in `block (3 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:269:in `each'
/var/www/discourse/lib/tasks/assets.rake:269:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:178:in `concurrent?'
/var/www/discourse/lib/tasks/assets.rake:266:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:178:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:86:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/commands/runner/runner_command.rb:42:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/command/base.rb:69:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/command.rb:46:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `block in require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:291:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `require'
bin/rails:17:in `<main>'
Spinning up 3 Unicorn worker(s) that were stopped initially

Hai installato plugin non standard?

Hai eseguito

 ./launcher rebuild app

a riga di comando?

3 Mi Piace

Dal mio lato, non ho plugin non standard e ho avviato questo tramite riga di comando. La prima volta ricevevo ancora l’errore.

Poi ho riavviato il server, ricompilato l’app… e ora funziona.

Ciao, grazie per la risposta veloce!
Ho un’installazione vanilla, non ho mai modificato nulla tranne cliccare sul pulsante “aggiorna” di tanto in tanto. Per questo motivo, ciò che è successo alla mia istanza di Discourse mi ha molto sorpreso.
Non ho provato a eseguire ./launcher rebuild app, lo farò e riferirò il risultato.

Il mio aggiornamento a 2.7.0.Beta2 non può nemmeno essere avviato: ho cliccato sul link di aggiornamento in un clic nell’email che annunciava questo aggiornamento

Evviva, è disponibile una nuova versione di Discourse!

La tua versione: 2.7.0.beta1
Nuova versione: 2.7.0.beta2

Effettua l’aggiornamento utilizzando il nostro semplice aggiornamento in un clic dal browser

Scopri le novitĂ  nelle note di rilascio o visualizza il registro delle modifiche grezzo su GitHub

Visita meta.discourse.org per notizie, discussioni e supporto per Discourse

Il risultato è:

Perché sta succedendo questo? Dovrei eseguire l’aggiornamento dalla console, accedendo al droplet Digital Ocean che ospita Discourse?

Dovrai eseguire l’aggiornamento da riga di comando. È disponibile una nuova immagine base Docker.

./launcher rebuild app

L’annuncio lo menziona, ma non è chiaro nella email standard di aggiornamento.

2 Mi Piace

Ho appena aggiornato alla versione 2.7.0.Beta2
È necessario eseguire questo aggiornamento specifico da riga di comando.

cd /var/discourse
git pull
./launcher rebuild app
2 Mi Piace

Le mie scuse per questa discussione asincrona: ho iniziato a porre la mia domanda e ho dovuto lasciare improvvisamente il mio ufficio. Per evitare di perdere il messaggio incompleto, l’ho salvato, e questo ti ha dato l’opportunità di rispondere alla mia domanda prima che lo pubblicassi completamente :wink:

La console DO funzionerebbe se non usassi un terminale.

I pulsanti nello screenshot sono inizialmente disabilitati, costringendoti a eseguire prima l’aggiornamento di Docker.

A proposito: avresti potuto lasciare la tua risposta così com’è, poiché viene salvata automaticamente come bozza.

Ho parlato troppo presto

Grazie, @geoff777 - ora ha tutto senso

Sto cercando di eseguire

cd /var/discourse
git pull
 ./launcher rebuild app

Lo script rebuild app è fallito due volte di fila, nello stesso punto esatto:

Non può essere un’interferenza di rete casuale. Vi prego di consigliarmi.

1 Mi Piace

Nel mio caso, la ricompilazione si è bloccata sul plugin discourse-vk-auth. Attualmente la mia istanza funziona senza questo plugin.

gem install rrule -v 0.4.2 -i /var/www/discourse/plugins/discourse-calendar/gems/2.7.2 --no-document --ignore-dependencies --no-user-install
Installato correttamente rrule-0.4.2
1 gem installato
gem install omniauth-vkontakte -v 1.6.1 -i /var/www/discourse/plugins/discourse-vk-auth/gems/2.7.2 --no-document --ignore-dependencies --no-user-install
Installato correttamente omniauth-vkontakte-1.6.1
1 gem installato

I, [2021-01-22T17:13:51.391038 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Gem::ConflictError: Impossibile attivare omniauth-vkontakte-1.6.1, perchĂŠ omniauth-oauth2-1.7.1 entra in conflitto con omniauth-oauth2 (>= 1.5, <= 1.7.0)
1 Mi Piace

Anche io ho avuto problemi con quel plugin vk nelle versioni precedenti. Il mio consiglio è di rimuoverlo e incollare il registro degli errori nel topic dedicato a quel plugin sul forum, cosÏ da poter risolvere il problema. :+1:

2 Mi Piace

Difficile dirlo dallo screenshot. Hai abbastanza spazio su disco?

Hai modificato entrambi i tuoi post precedenti dopo che ho interagito.

La seconda volta ho messo ‘mi piace’ a un post positivo, ma l’hai modificato e ora parla di un problema.
Il che, apparentemente, mi piace?

Le mie scuse @geoff777 - senza pensarci troppo ho riclassificato il tuo commento “mi piace” (il mio intento era mantenere basso il numero dei miei post, riducendo così la possibilità di incomprensioni)


Credo di avere spazio sufficiente:

 System information as of Fri Jan 22 20:56:56 UTC 2021

  System load:  0.02               Users logged in:          0
  Usage of /:   39.7% of 24.06GB   IPv4 address for docker0: 172.17.0.1
  Memory usage: 50%                IPv4 address for eth0:    xxx.xxx.xxx.xxx
  Swap usage:   1%                 IPv4 address for eth0:    
  Processes:    107                IPv4 address for eth1:    

Tuttavia, sospetto che il mio problema sia legato alla console di Digital Ocean: va in timeout molto rapidamente, quindi è possibile che l’aggiornamento sia andato a buon fine e io semplicemente non ne sia a conoscenza. Contatterò il supporto di DO e riferirò qui i risultati.

Grazie.

Puoi verificare nella dashboard del tuo forum che l’aggiornamento sia andato a buon fine.
Spero che abbia funzionato.

Il tuo desiderio/speranza @geoff777 non ha aiutato. Ho provato a effettuare il login, ma il server Discourse non rispondeva.

Ho deciso di eseguire discourse-doctor dalla console DO, avviata tramite lo strumento PuTTY (sto utilizzando un computer Windows 10), e la mia console si è fermata nello stesso punto.

Nota l’inizio di questa esecuzione: - app not running!

root@discourse-server:/var/discourse# ./discourse-doctor
DISCOURSE DOCTOR ven 22 gen 22:14:45 UTC 2021
OS: Linux discourse-server 5.4.0-62-generic #70-Ubuntu SMP mar 12 gen 12:45:47 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux


Trovato containers/app.yml

==================== IMPOSTAZIONI YML ====================
DISCOURSE_HOSTNAME=forum.congral.tech
SMTP_ADDRESS=smtp.mailgun.org
DEVELOPER_EMAILS=admin@congral.com
SMTP_PASSWORD=3a22be2a4ba5ce9b0865199dc7083871-xxxxxx
SMTP_PORT=587
SMTP_USER_NAME=postmaster@forum.congral.tech
LETSENCRYPT_ACCOUNT_EMAIL=nikolaj.ivancic@congral.com

==================== INFORMAZIONI DOCKER ====================
VERSIONE DOCKER: Docker version 20.10.2, build 2291f61

PROCESSI DOCKER (docker ps -a)

CONTAINER ID   IMAGE                              COMMAND                  CREAT              ED          STATUS                      PORTS     NAMES
4e0150995f6a   discourse/base:2.0.20201221-2020   "/bin/bash -c 'cd /p…"   16 mi              nutes ago   Exited (1) 14 minutes ago             mystifying_fermat
271aff6b3bce   discourse/base:2.0.20201221-2020   "/bin/bash -c 'cd /p…"   5 hou              rs ago      Exited (1) 5 hours ago                modest_brown
30ed32bab133   discourse/base:2.0.20201221-2020   "/bin/bash -c 'cd /p…"   5 hou              rs ago      Exited (1) 5 hours ago                laughing_lalande
add2d921333a   local_discourse/app                "/sbin/boot"             2 wee              ks ago      Exited (5) 5 hours ago                app

==================== PROBLEMA GRAVE!!!! ====================
app not running!
Tentativo di ricostruzione
==================== LOG DI RICOSTRUZIONE ====================
Verifica che il launcher sia aggiornato
Recupero di origin
Il launcher è aggiornato
Arresto del contenitore precedente
+ /usr/bin/docker stop -t 60 app
...

Ecco il log completo fino al punto di errore, salvato nel mio repository Github per risparmiare spazio qui.

Il fatto che abbia ripetuto questo aggiornamento più volte e che dopo ogni errore (segnalato come “errore di rete della console”) sia evidente che questo aggiornamento distrugge l’istanza Discourse esistente.

Si prega di consigliare. Sono disponibile a fornirvi i miei certificati nel caso vogliate eseguire voi stessi il test.

Entrambe le volte hai ricevuto quell’errore fatale di PuTTY?

Sembra un problema di PuTTY, anche se non riesco a immaginare il motivo.

Sì, @pfaffman, ricevo lo stesso errore. Se l’esecuzione di ./discourse-doctor causa un fallimento catastrofico, è possibile che questo fallimento risulti nell’errore fatale di PuTTY — almeno dal mio punto di vista (remoto) del suo fallimento?

Non sembra molto probabile, ma creerò un ticket di supporto per DO, sperando che possano avere una visione migliore di questo problema.

Immagino che proverò la console di DigitalOcean (in realtà, useresti un terminale su Ubuntu, ma non è quello che ti consiglierei).

Da ieri ho notato un sacco di comportamenti strani. Prima di condividerli qui, fatemi sapere se continuare questo thread è utile per qualcuno (l’alternativa è che sto solo calpestando il mio stesso d… e tutto questo è una perdita di tempo per tutti). Ho scoperto che:

  • il reset della password root (dal pannello di controllo di DO) ha permesso di utilizzare la console di Digital Ocean (come suggerito da @pfaffman qui sopra)
  • successivamente ho eseguito discourse-doctor in quella console e non ha rilevato alcun problema (prima di quel reset, https://forum.congral.tech non rispondeva - ora invece funziona perfettamente)
  • tutti i miei tentativi di aggiornare Discourse (come questo) sono falliti piĂš volte (la console PuTTY mostrava “Network Error” come motivo), e oggi posso confermare che l’aggiornamento è fallito:
content="Discourse 2.7.0.beta1 - https://github.com/discourse/discourse version 1cf92310456fb6e6424f6b532770461c56378d53"

Cambiare la password root e poi utilizzare la console di Digital Ocean è un cambiamento significativo che potrebbe interessare il team di Discourse per una migliore comprensione. Dovrei continuare a scavare e condividere le mie scoperte qui, @pfaffman?