Closed ing-eoking closed 5 months ago
UDP ์์ผ ์คํจ ์ conn_closing์ผ๋ก ๋ฐ๊พธ๊ฒ ๋ ํ์ต๋๋ค.
์ด ๋ด์ฉ์ ํด๋น ์ด์์์ ์ค๋ช ํ ๋ถ๋ถ์ด๋ฏ๋ก ์๊ณ ์์ต๋๋ค.
UDP์์ connection ์ฌ์ฌ์ฉ์ ์ํด conn_cleanup ์ผ๋ถ ๋ก์ง์ conn_close๋ก ์ด๋ํ์ต๋๋ค. UDP์์ conn_cleanup ์ํ ํ conn_read๋ก ๋ฐ๊พธ๊ฒ ๋ ํ์ต๋๋ค. conn_cleanup๊ณผ conn_mwrite์์ ๊ณตํต๋๋ ๋ก์ง(item release ๋ฑ)์ conn_item_free ํจ์๋ก ๋ถ๋ฆฌํ์ต๋๋ค.
๋ฆฌํฉํ ๋ง์ด ๋ค์ด๊ฐ ๊ฒ ๊ฐ์ ๋ฐ, ์ด๋ฒ ์ด์๋ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ๊ฒ์ด๋ ๋ฒ๊ทธ ์์ ํ๋ ์ต์ํ์ ๋ณ๊ฒฝ๋ง ํฉ์๋ค.
๋ฒ๊ทธ ์์ ์ mergeํ ํ์ ๋ฆฌํฉํ ๋ง์ ๋ค์ PR ๋ฐ์๊ฒ์.
์์ ๋์์ต๋๋ค.
UDP์์ connection ์ฌ์ฌ์ฉ์ ์ํด conn_cleanup ์ผ๋ถ ๋ก์ง์ conn_close๋ก ์ด๋ํ์ต๋๋ค. UDP์์ conn_cleanup ์ํ ํ conn_read๋ก ๋ฐ๊พธ๊ฒ ๋ ํ์ต๋๋ค.
์ด ๋ ๋ถ๋ถ ๋ํ ๋ฒ๊ทธ์ ๊ฐ๊น์ต๋๋ค. (https://github.com/jam2in/arcus-works/issues/529#issuecomment-2062812416)
@namsic ๋ฆฌ๋ทฐ ๋ฐ๋๋๋ค.
UDP ์์ผ ๋ณด๋ผ ๋ ํ
์คํธํ๋ ์ฝ๋๋ ์๋์ ๊ฐ์ผ๋
์ฌ์ค์ ๋๋ฌด ๋จ์ํ๊ฒ set i 0 0 1
๋ช
๋ น์ด ๋ณด๋ด๋ ๊ฒ ๋ค ์ด๋ฉฐ,
์ค์ ๋ก๋ memcached ์ฝ๋๋ฅผ ๋ณ๊ฒฝ์์ผ์ ๋ก๊ทธ๋ฅผ ํ์ธํ์ต๋๋ค.
์ด ๋ถ๋ถ๋ ์ข๋ ๋ณด์ํด์ ๋์ค์ ๋ค์ ์ฌ๋ฆฌ๊ฒ ์ต๋๋ค.
#!/usr/bin/perl
use IO::Socket::INET;
my $socket;
my $cmd = "set i 0 0 1\r\n1\r\n";
$socket = new IO::Socket::INET (
PeerAddr => '127.0.0.1:11211',
Proto => 'udp'
) or die "ERROR : $!\n";
$reqid = 45;
$hdr = pack("nnnn", $reqid, 0, 1, 0);
my $pkt = $hdr . $cmd;
$socket->send($pkt);
my $got = 0;
my $pkts = 1;
my $resp = "";
while($got < $pkts) {
my $pkt;
$sock->recv($pkt, 1500, 0);
my ($resid, $total, $curr, $zero) = unpack("nnnn", substr($pkt, 0, 8));
die "A mismatch between response ID and request ID ($reqid != $resid)" unless $resid == $reqid;
die "Non-zero tail ($zero)" unless $resv == 0;
$pkts = $total;
$resp .= substr($pkt, 8);
$got++;
}
$socket->close();
@ing-eoking ๋ณธ PR๋ ์งํ ๋ฐ๋๋๋ค.
@jhpark816
์ฐ์ ์๋จ์ conn_cleanup์ ๋ก์ง ์ด๋์ด ํ์ํ ์ด์ ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
@ing-eoking ๋ก์ง ์ด๋์ด ํ์ํ ์ด์ ๋ ์ดํดํ์ต๋๋ค.
์ด๋๋๋ ๋ก์ง ์์ฒด์ ๋ํด ๋ฆฌ๋ทฐ ์ฝ๋ฉํธ๊ฐ ์์ผ๋ฏ๋ก, ๋ชจ๋ ๋ฆฌ๋ทฐ ์ฝ๋ฉํธ๋ฅผ ํ์ธํ๊ณ ์ฒ๋ฆฌ or ๋ต๋ณ ๋ฐ๋๋๋ค.
@jhpark816.
์ฝ๋ฉํธ์ ๋ค์ด์๋ ๋ถ๋ถ์ ์ฒ๋ฆฌ๋์์ต๋๋ค.
@jhpark816
๋ต๋ณ์ ์ต์๋จ์ ์ถ๊ฐํ์ต๋๋ค.
@ing-eoking ์ต์๋จ์ ํ ์คํธ ๋ฐฉ๋ฒ๋ ์ถ๊ฐํด ์ฃผ์์ฃ .
@ing-eoking ์ต์๋จ์ ํ ์คํธ ๋ฐฉ๋ฒ๋ ์ถ๊ฐํด ์ฃผ์์ฃ .
์์ ๋์์ต๋๋ค.
๐ Related Issue
โจ๏ธ What I did
๐ย About Issue
conn_cleanup ๋ง ์ํํด์ผ ํ๋๊ฒฝ์ฐ sfd๋ฅผ ์ด๊ธฐํํด์๋ ์๋ฉ๋๋ค.
๐งช Test