RBoy
(RBoy)
10월 23, 2023, 3:26오후
1
이 문제를 여러 번 목격했지만, 일관되게 재현되지는 않습니다.
답글을 작성하고 게시한 뒤, 즉시 돌아가서 내용을 수정하고 저장 버튼을 누릅니다. 그리고 같은 과정을 한 번 더 수행하면, 때때로 UI에 최신 수정 내용이 표시되지 않습니다. 서버에는 수정 내용이 저장되어 있어 페이지를 새로고침하면 정상적으로 표시되지만, 문제는 새로고침을 하지 않으면 항상 표시되지 않는다는 점입니다. 이 현상은 새 답글을 작성했을 때와, 게시물이 수정 버전 태그를 등록하기 전에 2~3분 이내에 여러 번 수정된 경우에 발생합니다.
이 문제는 3.1.0 버전으로 업그레이드한 이후에 발생하기 시작했으며, 현재 3.1.2 버전을 사용 중입니다(메모리 1GB, Unicorn 1개). Chrome 브라우저(Win 10)와 iPhone Safari(iOS 17.0.3)에서 확인됩니다. 비교적 자주 발생하여 보고합니다.
이전에는 이러한 문제가 발생하지 않았습니다. 문제가 발생하기 시작한 이후 변경된 사항은 단 두 가지입니다:
Discourse를 3.x 버전으로 업데이트
Unicorn 인스턴스 수를 2개에서 1개로 감소
2개의 좋아요
Firepup650
(Firepup Sixfifty)
10월 23, 2023, 7:39오후
2
이 문제를 재현하는 쉬운 방법은 스태프/TL4가 주제의 제목과 내용을 모두 수정하는 것입니다. 이 경우 두 수정 중 하나만 표시되며(보통 게시글 수정), 다른 하나는 표시되지만 확인되지 않습니다.
2개의 좋아요
Canapin
(Coin-coin le Canapin)
10월 24, 2023, 2:28오후
3
리포트 감사합니다…
혹시 이 동작을 보여주는 짧은 영상을 녹화해 주실 수 있을까요?
sam
(Sam Saffron)
10월 25, 2023, 12:31오전
5
Chrome 개발자 도구를 열어 보면, 200이 아닌 요청들이나 에러가 많이 보이나요?
RBoy
(RBoy)
10월 25, 2023, 12:52오전
6
Chrome DevTools 콘솔에서 다음 내용이 표시됩니다. 429 오류로 보입니다. (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
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
$._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
Lhc_fl
(Linca)
10월 25, 2023, 2:49오전
7
RBoy:
429인 것으로 보입니다.
이는 너무 빠르게 작동하고 있음을 의미하며, 속도를 늦춰야 합니다. 이는 스크립트를 사용하여 포럼을 범람시키는 것을 방지하기 위한 보호 메커니즘입니다. 많은 웹 애플리케이션은 사용자가 너무 빠르게 작동할 때 이를 알려주고, 해당 작업을 거부합니다.
4개의 좋아요
RBoy
(RBoy)
10월 25, 2023, 2:36오후
8
429 오류 코드에서 그렇게 파악했습니다. 위의 동영상 샘플을 보시면 빠릿빠릿해 보이나요? 포럼은 같은 계정/IP에서 게시글을 빠르게 생성하는 경우와, 사용자가 게시글을 작성한 지 약 5초 후에 수정하는 경우를 구별할 수 있어야 합니다.
더불어: 이 게시글을 5초마다 수정하고 있지만 아무 문제가 없는 것 같습니다. 지금은 1분 안에 5번째 수정입니다.
6번째: 3.1.x 업그레이드 이후로 뭔가 바뀌었습니다. 이전에는 잘 작동했거든요. 아니면 429 임계값이 유니콘의 수에 따라 달라지는 건가요?
RBoy
(RBoy)
11월 2, 2023, 5:32오후
9
429 오류가 설정된 유니콘의 수(1개 vs 그 이상)와 관련이 있을까요? 이 사이트에서는 해당 문제를 확인하지 못했지만, 제 사이트에서는 일관되게 발생하고 있습니다.
RBoy
(RBoy)
11월 5, 2023, 5:34오후
10
그러면 이 사이트에는 영향을 주지 않는 건가요? 여기에서는 몇 초 간격으로 게시글을 여러 번 수정해도 전혀 문제가 없거든요(몇 초 안에 8번까지 수정해 봤습니다). 하지만 제 사이트에서는 문제가 생기는 것 같아요(수정 횟수가 2번뿐이어도).
1개의 좋아요