Node-redis: TypeError : decr์˜ ์ฝ๊ธฐ ์ „์šฉ ์†์„ฑ '์ฝœ๋ฐฑ'์— ํ• ๋‹น ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 06์›” 23์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: NodeRedis/node-redis

  • ๋ฒ„์ „ : node redis 2.6.2
  • ํ”Œ๋žซํผ : Ubuntu 14.04์˜ Node 4.4.5
  • ์„ค๋ช… :
    redis์—์„œ ๊ฐ„๋‹จํ•œ ์˜จ๋ผ์ธ ์นด์šดํ„ฐ๋ฅผ ์ค„์ด๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๋™์•ˆ์ด ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
    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์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ ํ•˜๋Š”๋ฐ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์—†์Šต๋‹ˆ๊นŒ?

question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฐฉ๊ธˆ [email protected] ๋ฐ [email protected] ์œผ๋กœ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. newrelic์„ ๋‹ค์‹œ 1.28.0์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ redis 2.6.2 ๋ฐ newrelic 1.28.3์„ ์‚ฌ์šฉํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  6 ๋Œ“๊ธ€

๋กœ๊ทธ์—์„œ 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์„ ์‚ฌ์šฉํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰