L'UI non si aggiorna dopo molteplici modifiche al post

Ho notato questo molte volte ma è incoerente.

Quando creo un post di risposta, lo pubblico. Poi torno immediatamente indietro e modifico e premo Salva. Poi faccio lo stesso di nuovo, a volte l’interfaccia utente non mostra le ultime modifiche. Le modifiche vengono salvate sul server perché quando aggiorno la pagina vengono visualizzate, ma il problema è che non vengono sempre visualizzate finché la pagina non viene aggiornata. Questo accade per un nuovo post di risposta e quando viene modificato più volte entro 2-3 minuti prima che il post registri il tag di revisione modificato.

Sto riscontrando questo problema dopo l’aggiornamento alla versione 3.1.0 (attualmente in esecuzione 3.1.2, 1 GB di RAM e 1 Unicorn) quando utilizzo il browser Chrome (Win 10) e Safari su iPhone (iOS 17.0.3). Sta accadendo abbastanza spesso, motivo per cui lo segnalo.

Questo non accadeva prima. Solo 2 modifiche da quando ha iniziato a succedere:

  1. Aggiornamento di Discourse a 3.x
  2. Riduzione del numero di Unicorn da 2 a 1
2 Mi Piace

Una facile riproduzione per questo è che uno staff/TL4 modifichi sia il titolo che il contenuto di un argomento, solo una delle due modifiche verrà mostrata (tipicamente la modifica del post), e l’altra è indicata, ma non può essere vista.

2 Mi Piace

Grazie per la segnalazione… :slight_smile:
Potresti per caso registrare un breve video che mostri questo comportamento?

Se guardi negli strumenti per sviluppatori di Chrome, ci sono molti errori lì, richieste che non sono 200?

Nella console degli strumenti per sviluppatori di Chrome vedo questo, sembra un 429 (non so a cosa serva il 404):

content-script.js:1 cornhusk, shared-service, error: TypeError: Failed to construct 'URL': Invalid URLInvalid url: 
extractOriginPath @ content-script.js:1
Show 1 more frame
Show less
content-script.js:1 cornhusk, shared-service, error: TypeError: Failed to construct 'URL': Invalid URLInvalid url: 
extractOriginPath @ content-script.js:1
Show 1 more frame
Show less
video.google.com/get_player?docid=1wQ5F_aEDhPpC8sW7ZTrAhbNVrSOAXsXr&ps=docs&partnerid=30&cc_load_policy=1:1 

       Failed to load resource: the server responded with a status of 404 ()
content-script.js:1 cornhusk, shared-service, error: TypeError: Failed to construct 'URL': Invalid URLInvalid url: 
extractOriginPath @ content-script.js:1
Show 1 more frame
Show less
content-script.js:1 cornhusk, shared-service, error: TypeError: Failed to construct 'URL': Invalid URLInvalid url: 
extractOriginPath @ content-script.js:1
Show 1 more frame
Show less
content-script.js:1 cornhusk, shared-service, error: TypeError: Failed to construct 'URL': Invalid URLInvalid url: 
extractOriginPath @ content-script.js:1
Show 1 more frame
Show less
content-script.js:1 cornhusk, shared-service, error: TypeError: Failed to construct 'URL': Invalid URLInvalid url: 
extractOriginPath @ content-script.js:1
fingerprintPage @ content-script.js:1
observeCheckoutMutations @ content-script.js:1
Show 3 more frames
Show less
content-script.js:1 cornhusk, shared-service, error: TypeError: Failed to construct 'URL': Invalid URLInvalid url: 
extractOriginPath @ content-script.js:1
fingerprintPage @ content-script.js:1
observeCheckoutMutations @ content-script.js:1
Show 3 more frames
Show less
jquery.js:9930 

       POST https://xxxx.com/message-bus/2089d5dd986440908b29e8064c58d208/poll 429 (Too Many Requests)
send @ jquery.js:9930
ajax @ jquery.js:9511
s @ message-bus.js:22
n.baseUrl.n.ajax @ message-bus.js:88
k @ chunk.660.3ca404a8b6b50dfefca7.js:2
n @ chunk.660.3ca404a8b6b50dfefca7.js:2
(anonymous) @ chunk.660.3ca404a8b6b50dfefca7.js:2
setTimeout (async)
complete @ chunk.660.3ca404a8b6b50dfefca7.js:2
e.complete @ message-bus.js:17
l @ jquery.js:3213
fireWith @ jquery.js:3343
E @ jquery.js:9632
abort @ jquery.js:9332
unsubscribe @ chunk.660.3ca404a8b6b50dfefca7.js:2
unsubscribe @ presence.js:179
_unsubscribe @ presence.js:397
unsubscribe @ presence.js:101
_setupChannel @ composer-presence-display.js:81
_setupChannels @ composer-presence-display.js:93
b @ index.js:207
l @ index.js:423
p.invoke @ queue.ts:201
p.flush @ queue.ts:98
h.flush @ deferred-action-queues.ts:75
$._end @ index.ts:616
_boundAutorunEnd @ index.ts:257
Promise.then (async)
n @ platform.ts:28
flush @ index.js:41
$._scheduleAutorun @ index.ts:803
$._end @ index.ts:623
_boundAutorunEnd @ index.ts:257
Promise.then (async)
n @ platform.ts:28
flush @ index.js:41
$._scheduleAutorun @ index.ts:803
$._end @ index.ts:623
_boundAutorunEnd @ index.ts:257
Promise.then (async)
n @ platform.ts:28
flush @ index.js:41
$._scheduleAutorun @ index.ts:803
$._end @ index.ts:623
_boundAutorunEnd @ index.ts:257
Promise.then (async)
n @ platform.ts:28
flush @ index.js:41
$._scheduleAutorun @ index.ts:803
$._end @ index.ts:623
_boundAutorunEnd @ index.ts:257
Promise.then (async)
n @ platform.ts:28
flush @ index.js:41
$._scheduleAutorun @ index.ts:803
$._end @ index.ts:623
_boundAutorunEnd @ index.ts:257
Promise.then (async)
n @ platform.ts:28
flush @ index.js:41
$._scheduleAutorun @ index.ts:803
$._ensureInstance @ index.ts:791
$.ensureInstance @ index.ts:579
scheduleRevalidate @ index.js:5390
dirtyTag @ validator.js:411
R @ validator.js:486
F @ index.js:497
z @ index.js:533
De @ index.js:1409
Te @ index.js:1385
set @ observable.js:175
save @ composer.js:707
saveAction @ composer.js:554
_triggerAction @ d-button.js:178
click @ d-button.js:144
jquery.js:9930 

       POST https://xxxx.com/message-bus/2089d5dd986440908b29e8064c58d208/poll?dlp=t 429 (Too Many Requests)
send @ jquery.js:9930
ajax @ jquery.js:9511
s @ message-bus.js:22
n.baseUrl.n.ajax @ message-bus.js:88
k @ chunk.660.3ca404a8b6b50dfefca7.js:2
n @ chunk.660.3ca404a8b6b50dfefca7.js:2
(anonymous) @ chunk.660.3ca404a8b6b50dfefca7.js:2
setTimeout (async)
complete @ chunk.660.3ca404a8b6b50dfefca7.js:2
e.complete @ message-bus.js:17
l @ jquery.js:3213
fireWith @ jquery.js:3343
E @ jquery.js:9632
(anonymous) @ jquery.js:9878
load (async)
send @ jquery.js:9897
ajax @ jquery.js:9511
s @ message-bus.js:22
n.baseUrl.n.ajax @ message-bus.js:88
k @ chunk.660.3ca404a8b6b50dfefca7.js:2
n @ chunk.660.3ca404a8b6b50dfefca7.js:2
document.addEventListener.e.onVisibilityChange @ chunk.660.3ca404a8b6b50dfefca7.js:2
callback @ message-bus.js:49
d @ user-presence.js:90
p @ user-presence.js:103
m @ user-presence.js:110
22:1 Error handling response: TypeError: Cannot read properties of undefined (reading 'isCheckout')
    at chrome-extension://clmkdohmabikagpnhjmgacbclihgmdje/content-script.js:1:5043
22:1 Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received

Ciò significa che stai operando troppo velocemente e devi rallentare. Questo è un meccanismo di protezione per impedire a qualcuno di inondare il tuo forum con script. Molte applicazioni web ti avvisano quando operi troppo velocemente e poi rifiutano la tua operazione.

4 Mi Piace

Ho capito questo dal 429. Se vedi il video di esempio qui sopra, sembra veloce? Il forum dovrebbe essere in grado di distinguere tra la creazione rapida di post dallo stesso account/IP rispetto a un utente che modifica un post circa 5 secondi dopo.

Inoltre: E non sto riscontrando problemi nel modificare questo post ogni 5 secondi circa. Questa è la mia quinta modifica in un minuto.

Sesto: quindi qualcosa è cambiato dopo l’aggiornamento 3.1.x perché prima funzionava bene. O la soglia 429 dipende dal numero di unicorni?

Il 429 ha a che fare con il numero di unicorni configurati (1 o più)? Non vedo questo problema su questo sito, ma lo vedo costantemente sul mio sito.

Quindi non influisce su questo sito? Posso apportare modifiche ogni pochi secondi al mio post qui senza alcun problema (ho provato a modificare fino a 8 volte a pochi secondi di distanza l’una dall’altra), ma sul mio sito sembra essere un problema (anche con solo 2 modifiche).

1 Mi Piace