Interface do usuário não é atualizada após múltiplas edições de posts

Notei isso muitas vezes, mas é inconsistente.

Quando crio uma postagem de resposta, publico. Em seguida, volto imediatamente e edito e clico em salvar. Então, faço o mesmo novamente, às vezes a interface do usuário não mostra as últimas edições. As edições são salvas no servidor porque, quando atualizo a página, elas aparecem, mas o problema é que elas nem sempre aparecem até que a página seja atualizada. Isso acontece para uma nova postagem de resposta e quando ela é editada várias vezes em 2-3 minutos antes que a postagem registre a tag de revisão editada.

Estou vendo isso acontecer após a atualização para a versão 3.1.0 (atualmente executando 3.1.2, 1 GB de RAM e 1 Unicorn) ao usar o Navegador Chrome (Win 10) e o Safari do iPhone (iOS 17.0.3). Está acontecendo com bastante frequência, por isso estou relatando.

Isso não acontecia antes. Apenas 2 mudanças desde que começou a acontecer:

  1. Atualiza o discourse para a versão 3.x
  2. Reduziu o número de Unicrons para 1 de 2
2 curtidas

Uma reprodução fácil para isso é um funcionário/TL4 editar o título e o conteúdo de um tópico, apenas uma das duas edições será exibida (geralmente a edição da postagem), e a outra é indicada, mas não pode ser vista.

2 curtidas

Obrigado pelo relatório… :slight_smile:
Você poderia gravar um vídeo curto mostrando esse comportamento, por acaso?

Se você olhar nas ferramentas de desenvolvedor do Chrome, há um monte de erros lá, requisições que não são 200?

No console do Chrome DevTools, vejo isto, parece ser um 429 (não sei para que serve o 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

Isso significa que você está operando muito rápido e precisa diminuir a velocidade. Este é um mecanismo de proteção para evitar que alguém inunde seu fórum com scripts. Muitos aplicativos da web informarão quando você opera muito rapidamente e, em seguida, rejeitarão sua operação.

4 curtidas

Entendi isso a partir do 429. Se você vir a amostra de vídeo acima, ela parece rápida? O fórum deve ser capaz de diferenciar entre a criação rápida de posts da mesma conta/IP versus um usuário editando um post cerca de 5 segundos depois.

Além disso: E eu não estou vendo nenhum problema em editar este post a cada 5 segundos ou mais. Esta é a minha 5ª edição agora em um minuto.

6ª: então algo mudou após o upgrade 3.1.x porque estava funcionando bem antes. Ou o limite 429 depende do número de unicórnios?

O 429 tem algo a ver com o número de unicórnios configurados (1 vs mais)? Não vejo esse problema neste site, mas o vejo consistentemente no meu site.

Então isso não afeta este site? Posso fazer edições a cada poucos segundos na minha postagem aqui sem qualquer problema (tentei editar até 8 vezes em poucos segundos), mas no meu site parece ser um problema (mesmo com apenas 2 edições).

1 curtida