Skip to content

Conversation

@uhm0311
Copy link
Collaborator

@uhm0311 uhm0311 commented Nov 6, 2025

๐Ÿ”— Related Issue

  • delayed switchover ์ฒ˜๋ฆฌ ๋„์ค‘, old master์˜ ์—ฐ์‚ฐ์„ new master๋กœ ์ด๊ด€ํ•˜๋Š” ๊ณผ์ •์—์„œ new master๊ฐ€ ๋งˆ์นจ ์žฌ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋˜์–ด auth ์—ฐ์‚ฐ์„ ํ•ด์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ old master์—๊ฒŒ ์ด๊ด€๋ฐ›์€ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „์— auth ์—ฐ์‚ฐ์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๊ธฐ์กด์—๋Š” ์ด๊ด€ ๋ฐ›์€ ์—ฐ์‚ฐ์„ writeQ์— ๊ทธ๋Œ€๋กœ ๋„ฃ๊ณ  ์žˆ์—ˆ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ์ด๊ด€ํ•  ๊ฒฝ์šฐ, auth ์—ฐ์‚ฐ์€ inputQ์— ๋“ค์–ด๊ฐ€๊ณ  ์ด๊ด€ ๋ฐ›์€ ์—ฐ์‚ฐ์€ writeQ์— ๋“ค์–ด๊ฐ€๋ฏ€๋กœ auth ์—ฐ์‚ฐ์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์„ ๊ฐ€๋Šฅ์„ฑ์ด ์ƒ๊ธด๋‹ค.
  • ๋”ฐ๋ผ์„œ new master๊ฐ€ auth๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ผ ๋•Œ์—๋Š” old master์—๊ฒŒ ์ด๊ด€ ๋ฐ›์€ ์—ฐ์‚ฐ์„ ๊ณง๋ฐ”๋กœ writeQ์— ๋„ฃ์ง€ ์•Š๊ณ  ์ž„์‹œ ํ์— ๋„ฃ์–ด๋‘” ํ›„, auth๊ฐ€ ๋๋‚ฌ์„ ๋•Œ ์ž„์‹œ ํ์—์„œ writeQ๋กœ ์˜ฎ๊ธธ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

โŒจ๏ธ What I did

  • MemcachedNode ํด๋ž˜์Šค์— authBlockedWriteQ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    • authBlockedWriteQ ํ•„๋“œ๋Š” IO Thread๊ฐ€ ํ˜ผ์ž์„œ ์‚ฌ์šฉํ•  ํ•„๋“œ์ด๋ฏ€๋กœ ๋™์‹œ์„ฑ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • MemcachedNode#setupForAuth()์—์„œ authBlockedWriteQ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • MemcachedNode#addOpToWriteQ()์—์„œ auth๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” authBlockedWriteQ์— ์—ฐ์‚ฐ์„ ๋„ฃ์Šต๋‹ˆ๋‹ค.
    • old master์˜ ์—ฐ์‚ฐ์„ new master๋กœ ์ด๊ด€ํ•  ๋•Œ์— addOpToWriteQ()๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
  • switchover ์ƒํ™ฉ์—์„œ ์—ฐ์‚ฐ์„ ์ด๊ด€ํ•˜๋Š” ๊ฒฝ์šฐ ์™ธ์— addOpToWriteQ()๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    • migration์œผ๋กœ ์ธํ•ด NOT_MY_KEY ์‘๋‹ต์„ ๋ฐ›์•˜์„ ๋•Œ : ์—ฐ์‚ฐ ์ด๊ด€์ด๋ผ๋Š” ๊ด€์ ์—์„œ old master์˜ ์—ฐ์‚ฐ์„ new master๋กœ ์ด๊ด€ํ•˜๋Š” ๊ฒฝ์šฐ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
    • ์—ฐ๊ฒฐ ์ˆ˜๋ฆฝ ์งํ›„ version ์—ฐ์‚ฐ์„ ๋ณด๋‚ผ ๋•Œ : version ์—ฐ์‚ฐ์ด auth ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ ์ดํ›„๋กœ ๋ฏธ๋ค„์ง€๊ฒŒ ๋˜์ง€๋งŒ, ๋ฏธ๋ค„์ง€๋”๋ผ๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ์—ฐ์‚ฐ์ž…๋‹ˆ๋‹ค.
  • MemcachedNode#authComplete()์—์„œ auth๊ฐ€ ์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ authBlockedWriteQ์˜ ์—ฐ์‚ฐ์„ writeQ๋กœ ์˜ฎ๊น๋‹ˆ๋‹ค.
    • auth๊ฐ€ ์‹คํŒจํ–ˆ๋‹ค๋ฉด authBlockedWriteQ์˜ ์—ฐ์‚ฐ์„ ๋ชจ๋‘ ์บ”์Šฌํ•ฉ๋‹ˆ๋‹ค.
  • IO Thread์˜ handleWrites() ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๊ฑด๋„ˆ ๋›ฐ๋Š” ์กฐ๊ฑด์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
    • AS-IS : delayed switchover๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ ˆ๋Œ€๋กœ handleWrites() ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Œ
    • TO-Be : delayed switchover๋ฅผ ํ•ด์•ผ ํ•˜๋”๋ผ๋„, auth๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ƒํƒœ๋ผ๋ฉด handleWrites() ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•จ

@uhm0311 uhm0311 force-pushed the uhm0311/f/3 branch 4 times, most recently from 3cdda91 to 22e5704 Compare November 6, 2025 08:24
@uhm0311 uhm0311 requested review from jhpark816 and removed request for brido4125 and oliviarla November 10, 2025 02:57
@jhpark816 jhpark816 requested review from brido4125 and oliviarla and removed request for jhpark816 November 10, 2025 03:01
@jhpark816
Copy link
Collaborator

@oliviarla @brido4125 ๋ฆฌ๋ทฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@oliviarla

This comment was marked as outdated.

jhpark816

This comment was marked as outdated.

@jhpark816

This comment was marked as outdated.

@uhm0311 uhm0311 changed the title INTERNAL: Remove AuthThread and do auth on IO Thread INTERNAL: Add operation to temp writeQ when auth is needed Nov 12, 2025
@uhm0311 uhm0311 changed the title INTERNAL: Add operation to temp writeQ when auth is needed FIX: Add operation to temp writeQ when auth is needed Nov 12, 2025
@uhm0311
Copy link
Collaborator Author

uhm0311 commented Nov 12, 2025

@jhpark816 @oliviarla @brido4125

์ž„์‹œ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์•ˆ์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
์ฒซ๋ฒˆ์งธ ์ฝ”๋ฉ˜ํŠธ์— PR์˜ ์„ค๋ช…์„ ์ˆ˜์ •ํ•ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค.
์ถ”๊ฐ€ ์„ค๋ช…์ด ํ•„์š”ํ•˜์‹œ๋‹ค๋ฉด ๋ง์”€ํ•ด์ฃผ์„ธ์š”.

@oliviarla
Copy link
Collaborator

old master์˜ ์—ฐ์‚ฐ์„ new master๋กœ ์ด๊ด€ํ•˜๋Š” ๊ณผ์ •์—์„œ new master๊ฐ€ ๋งˆ์นจ ์žฌ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋˜์–ด auth ์—ฐ์‚ฐ์„ ํ•ด์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค.

์ด ์ƒํ™ฉ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”?

๊ทธ๋ฆฌ๊ณ , ๋ฐฉ์•ˆ์„ ๋ณ€๊ฒฝํ•œ ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์ ์–ด์„œ์ธ์ง€ ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ์ด์ ์ด ์žˆ๋Š”์ง€์š”?

@uhm0311
Copy link
Collaborator Author

uhm0311 commented Nov 12, 2025

๋ฐฉ์•ˆ์„ ๋ณ€๊ฒฝํ•œ ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์ ์–ด์„œ์ธ์ง€ ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ์ด์ ์ด ์žˆ๋Š”์ง€์š”?

๋ฐฉ์•ˆ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์ ๊ณ  ๊ธฐ์กด ํ‹€์— ๋” ์ž˜ ๋งž๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.


์ด ์ƒํ™ฉ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”?

์˜ˆ๋ฅผ ๋“ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์ธ๋ฐ, ์กฐ๊ธˆ ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•˜๋‹ค๋ฉด ์˜คํ”„๋ผ์ธ์œผ๋กœ ๋” ์„ค๋ช…ํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

  • old master : ZK๋กœ๋ถ€ํ„ฐ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์•„์„œ switchover๋ฅผ ํ•ด์•ผ ํ•˜์ง€๋งŒ, readQ์— ๋น„๋ฉฑ๋“ฑ์„ฑ ์—ฐ์‚ฐ์ด ์žˆ์–ด์„œ delayed switchover๋กœ ๋ถ„๋ฅ˜๋จ
  • new master : Socket IO ์ˆ˜ํ–‰ ๋„์ค‘ Exception์ด ๋ฐœ์ƒํ•˜์—ฌ 1์ดˆ ๋’ค ์žฌ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๊ธฐ๋กœ ํ•จ
  • old master : readQ์—์„œ ๋จผ์ € ์ฒ˜๋ฆฌ๋˜๋Š” ์—ฐ์‚ฐ๋“ค์ด get๊ณผ ๊ฐ™์€ read ์„ฑ๊ฒฉ์˜ ์—ฐ์‚ฐ์ด๋ผ์„œ ์ •์ƒ ์‘๋‹ต์„ ๋ฐ›์Œ
  • new master : 1์ดˆ๊ฐ€ ์ง€๋‚˜์„œ ์žฌ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋จ
  • old master : readQ์— ์žˆ๋˜ write ์„ฑ๊ฒฉ์˜ ์—ฐ์‚ฐ ์‘๋‹ต์œผ๋กœ REPL_SLAVE ์‘๋‹ต์„ ๋ฐ›์•˜๊ณ , ์ด์— ๋”ฐ๋ผ old master์— ๋‚จ์•„ ์žˆ๋Š” ์—ฐ์‚ฐ์„ new master๋กœ ์ด๊ด€ํ•ด์•ผ ํ•จ

์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ new master์˜ writeQ์— ๊ณง๋ฐ”๋กœ ์—ฐ์‚ฐ์„ ์ด๊ด€์‹œํ‚ค๋Š” ๊ฒฝ์šฐ, new master๊ฐ€ ์›๋ž˜ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” auth ์—ฐ์‚ฐ์€ inputQ์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ๋˜๋ฉด old master์—๊ฒŒ ์ด๊ด€ ๋ฐ›์€ ์—ฐ์‚ฐ๋“ค์€ auth๊ฐ€ ์•„์ง ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•„์„œ ์‹คํŒจํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ์‹คํŒจํ•˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด, auth๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก writeQ ๋Œ€์‹  ์ž„์‹œ ํ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ auth ์—ฐ์‚ฐ๋งŒ inputQ - writeQ๋ฅผ ๊ฑฐ์ณ์„œ ์—ฐ์‚ฐ์ด ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ ค๋Š” ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.

@brido4125
Copy link
Collaborator

authBlockedWriteQ ๋งŒ๋“œ๋Š” ๋Œ€์‹  ๊ธฐ์กด write ํ๋ฅผ ๋ฑ์œผ๋กœ ์จ์„œ,
auth ์—ฐ์‚ฐ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ œ์ผ ์•ž๋‹จ์— ๊ฐ์ฒด ๋„ฃ์–ด์ฃผ๋Š”๊ฑด ๊ตฌํ˜„์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•œ๊ฐ€์š”?

@uhm0311
Copy link
Collaborator Author

uhm0311 commented Nov 12, 2025

authBlockedWriteQ ๋งŒ๋“œ๋Š” ๋Œ€์‹  ๊ธฐ์กด write ํ๋ฅผ ๋ฑ์œผ๋กœ ์จ์„œ,
auth ์—ฐ์‚ฐ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ œ์ผ ์•ž๋‹จ์— ๊ฐ์ฒด ๋„ฃ์–ด์ฃผ๋Š”๊ฑด ๊ตฌํ˜„์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•œ๊ฐ€์š”?

๊ฐ€๋Šฅ์€ ํ•˜์ง€๋งŒ ์กฐ๊ธˆ ๋ณต์žกํ•œ ๊ตฌํ˜„์ด ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ์กด MemcachedNode#fillWriteBuffer()์—์„œ๋Š” writeQ์˜ ์—ฐ์‚ฐ์„ ํ•˜๋‚˜๋งŒ ๊บผ๋‚ด์„œ ์ „์†กํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ•˜๋‚˜๋ฅผ ์ „์†กํ•˜๊ณ ๋„ ๋” ์ „์†กํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๊ณ„์† ๊บผ๋‚ด์„œ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ auth ์—ฐ์‚ฐ์ด ํ•„์š”ํ•จ && ๋งจ ์•ž์˜ ์—ฐ์‚ฐ์ด auth ์—ฐ์‚ฐ์ž„ ์กฐ๊ฑด์„ ๋™์‹œ์— ๋งŒ์กฑํ•  ๋•Œ์—๋งŒ writeQ์—์„œ ๊บผ๋‚ด์„œ ์ „์†กํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๋กœ์ง์ด ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@brido4125
Copy link
Collaborator

์ „ ํ˜„์žฌ์ฒ˜๋Ÿผ ๊ธฐ์กด write ํ์— ์žˆ๋Š” ์—ฐ์‚ฐ์„ ์˜ฎ๊ฒผ๋‹ค๊ฐ€, Auth ์™„๋ฃŒํ•˜๊ณ  ๋‚˜์„œ ๋‹ค์‹œ ์˜ฎ๊ฒจ ๋†“์€ ์—ฐ์‚ฐ๋“ค ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฑ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌํ˜„์ด ์ง๊ด€์ ์ด์ง€ ์•Š๋‚˜ ์‹ถ๊ธดํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ถ€๋ถ„์€ @jhpark816 ์ด๋‚˜ @uhm0311 ๋‹˜์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”?

@uhm0311
Copy link
Collaborator Author

uhm0311 commented Nov 12, 2025

Deque๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์•„๋ž˜์˜ ์ž‘์—…์ด ๋จผ์ €, ํ˜น์€ ๋™์‹œ์— ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • AuthThread ์ œ๊ฑฐ : ๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ์œ„ํ•ด AuthThread๊ฐ€ writeQ์— ์ง์ ‘ ๋„ฃ์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, writeQ ๋งจ ์•ž์— ์ง์ ‘ ๋„ฃ์œผ๋ ค๋ฉด AuthThread๋ฅผ ๋จผ์ € ์ œ๊ฑฐํ•ด์•ผ ํ•จ

oliviarla

This comment was marked as resolved.

Copy link
Collaborator

@jhpark816 jhpark816 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ฆฌ๋ทฐ ์™„๋ฃŒ

Copy link
Collaborator

@jhpark816 jhpark816 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ฆฌ๋ทฐ ์™„๋ฃŒ

@jhpark816
Copy link
Collaborator

@oliviarla @brido4125
์ˆ˜์ • ์‚ฌํ•ญ์„ ํ™•์ธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@jhpark816 jhpark816 merged commit 91413d5 into naver:develop Nov 13, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants