TypeError: Cannot assign to read only property 'callback' of decr
at RedisClient.internalSendCommandWrapper (/home/alex/node_modules/newrelic/lib/instrumentation/redis.js:76:22)
at RedisClient.wrappedFunction [as internal_send_command] (/home/alex/node_modules/newrelic/lib/transaction/tracer/index.js:354:24)
at RedisClient.(anonymous function).RedisClient.(anonymous function) (/home/alex/node_modules/redis/lib/commands.js:45:25)
at Socket.eval (eval at <anonymous> (/home/alex/server2.js:2:52), <anonymous>:2456:12)
at emitOne (events.js:77:13)
at Socket.emit (events.js:169:7)
at Socket.emit (/home/alex/node_modules/socket.io/lib/socket.js:128:10)
at Socket.onclose (/home/alex/node_modules/socket.io/lib/socket.js:425:8)
at Client.onclose (/home/alex/node_modules/socket.io/lib/client.js:232:24)
at Client.onerror (/home/alex/node_modules/socket.io/lib/client.js:213:8)
์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
db.decr('online',function(err){
if(err){
console.log('DECREMENTING ONLINE NUMBER FAILED:');
console.log(err);
}
console.log('DECREMENTING ONLINE NUMBER WAS SUCCESSFUL!');
});
๋ณต์ ํ ์์๋ ๊ฒ ๊ฐ์ง๋ง ์ฌ์ดํธ์ ๋ง์ ์ฌ๋์ด์์ ๋๋ง ๋ฐ์ํฉ๋๋ค. ๋์ ๋ช ๋ช ์ ์น๊ตฌ ๋ง ํ ์คํธ ํ ๋ ๊ฐ์ ๋์ด๊ณ ๋ฎ์ถ๋ ์์ ์ ์ํํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ ์ฝ๋ฐฑ ํจ์๊ฐ ์์ด๋ (db.decr ( 'online')) ๋ฐ์ํ์ง๋ง ์ค๋ฅ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ๊ธฐ ์ํด ์ฝ๋ฐฑ ๋ง ์ถ๊ฐํ์ต๋๋ค.
๋ฐ๋ณตํฉ๋๋ค. ๋ ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ฉํ๊ธฐ ์์ํ ๋๊น์ง ์ฝ๋๊ฐ ์ ์๋ํฉ๋๋ค. .decr์ ๋์์ ์ํํ๋ ค๊ณ ํ๋๋ฐ ์ฒ๋ฆฌ ํ ์ โโ์์ต๋๊น?
๋ก๊ทธ์์ db.get () ํธ์ถ๋ ๋น์ทํ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
TypeError: Cannot assign to read only property 'callback' of get
at RedisClient.internalSendCommandWrapper (/home/alex/node_modules/newrelic/lib/instrumentation/redis.js:76:22)
at RedisClient.wrappedFunction [as internal_send_command] (/home/alex/node_modules/newrelic/lib/transaction/tracer/index.js:354:24)
at RedisClient.(anonymous function).RedisClient.(anonymous function) (/home/alex/node_modules/redis/lib/commands.js:45:25)
at eval (eval at <anonymous> (/home/alex/server2.js:2:52), <anonymous>:2384:16)
at checkLogin (eval at <anonymous> (/home/alex/server2.js:2:52), <anonymous>:572:13)
at Socket.eval (eval at <anonymous> (/home/alex/server2.js:2:52), <anonymous>:2001:9)
at emitOne (events.js:77:13)
at Socket.emit (events.js:169:7)
at Socket.onevent (/home/alex/node_modules/socket.io/lib/socket.js:335:8)
at Socket.onpacket (/home/alex/node_modules/socket.io/lib/socket.js:295:12)
์ํธ:
db.get('triviaAnswer',function(err,dbAnswer){
if(err){
console.log('Error getting triviaAnswer from redis: '+err);
return;
}
๋ํ 'online'๋ฐ 'triviaAnswer'ํ๋๋ ์ด๋ฏธ ์ค์ ๋์ด ์์ผ๋ฉฐ ์ ์ฝ๋๋ ์๋ํ์ง ์์ ๋๊น์ง ์๋ํฉ๋๋ค. "์๋ก์ด"์ฝ๋๋ ์๋๊ณ ๋ช ์ฃผ ๋์ ๋ค๋ฅธ ์๋ฒ์์ ์๋ํ๊ณ ์์ผ๋ฏ๋ก ๋ฌธ์ ๊ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ newrelic์ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ผ๋ฏ๋ก ์ด์ ๋ํด ๋ฌธ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ ์ด์ ๋น์ ์ ๋์ธ ์ ์์ด์ ๋ฏธ์ํฉ๋๋ค. ์ ๋ newrelic์ ํผ์์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๊ทธ๊ฒ ๋ค์ผ, ๊ณ ๋ง์.
@Alchemystic ์์ ์ ๋ํด ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? ๋๋ ์ด๊ฒ์ NR์์๋ ๋ก์ปฌ๋ก ๋ฐ๊ฒฌํ์ง๋ง 2.6.2 (2.6.0-1์์)๋ก ์ ๊ทธ๋ ์ด๋ ํ๋ฉด ๋์๊ฒ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์์ผ๋ฏ๋ก ์ด๊ฒ์ด ๋จ์ง ๋ถ์ ์ฒญ์ด๊ฐ ์๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค.
๋ฐฉ๊ธ newrelic ์ฌ์ฉ์ ์ค๋จํ์ต๋๋ค. ๋คํธ์ํฌ ๋ฌธ์ ๋ฅผ ์ง๋จํ๊ธฐ ์ํด์๋ง ๊ฐ์ ธ ์์ง๋ง ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ๊ฒ์ ํ์ธํ ํ์ ์ ๊ฑฐํ์ต๋๋ค.
๋ฐฉ๊ธ [email protected]
๋ฐ [email protected]
์ผ๋ก์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. newrelic์ ๋ค์ 1.28.0์ผ๋ก ์ค์ ํ๋ฉด ๋ฌธ์ ๊ฐ ์ ๊ฑฐ๋์์ต๋๋ค.
๊ทธ๋ฌ๋ redis 2.6.2 ๋ฐ newrelic 1.28.3์ ์ฌ์ฉํ๋ฉด ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฐฉ๊ธ
[email protected]
๋ฐ[email protected]
์ผ๋ก์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. newrelic์ ๋ค์ 1.28.0์ผ๋ก ์ค์ ํ๋ฉด ๋ฌธ์ ๊ฐ ์ ๊ฑฐ๋์์ต๋๋ค.๊ทธ๋ฌ๋ redis 2.6.2 ๋ฐ newrelic 1.28.3์ ์ฌ์ฉํ๋ฉด ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค.