Node-redis: TypeError: μ •μ˜λ˜μ§€ μ•Šμ€ '콜백' 속성을 읽을 수 μ—†μŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2019λ…„ 04μ›” 04일  Β·  4μ½”λ©˜νŠΈ  Β·  좜처: NodeRedis/node-redis

였λ₯˜ λ©”μ‹œμ§€ 세뢀정보:
C:\Users\xxxxx\node_modules\redis\index.js:722 if (typeof command_obj.callback === 'function') { ^ TypeError: Cannot read property 'callback' of undefined at normal_reply (C:\Users\xxxxx\node_modules\redis\index.js:722:28) at RedisClient.return_reply (C:\Users\xxxxx\node_modules\redis\index.js:824:9) at JavascriptRedisParser.returnReply (C:\Users\xxxxx\node_modules\redis\index.js:192:18) at JavascriptRedisParser.execute (C:\Users\xxxxx\node_modules\redis-parser\lib\parser.js:574:12) at Socket.<anonymous> (C:\Users\xxxxx\node_modules\redis\index.js:274:27) at Socket.emit (events.js:189:13) at addChunk (_stream_readable.js:284:12) at readableAddChunk (_stream_readable.js:265:11) at Socket.Readable.push (_stream_readable.js:220:10) at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

redis ν΄λΌμ΄μ–ΈνŠΈμ˜ μ†ŒμŠ€ μ½”λ“œ:
function normal_reply (self, reply) { var command_obj = self.command_queue.shift(); if (typeof command_obj.callback === 'function') { if (command_obj.command !== 'exec') { reply = self.handle_reply(reply, command_obj.command, command_obj.buffer_args); } command_obj.callback(null, reply); } else { debug('No callback for reply'); } }
이 였λ₯˜λŠ” 항상 λ°œμƒν•˜λŠ” 것이 μ•„λ‹ˆλΌ 가끔 λ°œμƒν•©λ‹ˆλ‹€. 버그가 μžˆμ„ 수 μžˆλ‹€κ³  μƒκ°ν•˜κ³  λͺ…λ Ή λŒ€κΈ°μ—΄μ—μ„œ 이동할 λ•Œ command_objλ₯Ό 확인해야 ν•©λ‹ˆλ‹€.

pending-author-input

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이 였λ₯˜λ„ κ°„ν—μ μœΌλ‘œ λ°œμƒν•©λ‹ˆλ‹€. 제 κ²½μš°μ—λŠ” "client.punsubcribe()"λ₯Ό ν˜ΈμΆœν•œ ν›„ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ‹€μ‹œ μ‹œμž‘ν•  λ•ŒκΉŒμ§€ μ΄λŸ¬ν•œ 였λ₯˜κ°€ λ²”λžŒν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

νŽΈμ§‘: λ˜ν•œ λ…Έλ“œ μΈμŠ€ν„΄μŠ€λ‹Ή 일반적으둜 4개의 λ™μ‹œ Redis ν΄λΌμ΄μ–ΈνŠΈ, 2~2개의 λ‹€λ₯Έ ν˜ΈμŠ€νŠΈκ°€ μžˆμŒμ„ μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

  • "λ ˆλ””μŠ€": "2.8.0"
  • λ…Έλ“œ 10
  • "redis-parser": "2.6.0"

역좔적은 OP와 거의 λ™μΌν•˜μ§€λ§Œ 완전성을 μœ„ν•΄:

TypeError: Cannot read property 'callback' of undefined
    at normal_reply (/snapshot/stream-node/node_modules/redis/index.js:722:28)
    at RedisClient.return_reply (/snapshot/stream-node/node_modules/redis/index.js:824:9)
    at JavascriptRedisParser.returnReply (/snapshot/stream-node/node_modules/redis/index.js:192:18)
    at JavascriptRedisParser.execute (/snapshot/stream-node/node_modules/redis-parser/lib/parser.js:574:12)
    at Socket.<anonymous> (/snapshot/stream-node/node_modules/redis/index.js:274:27)
    at Socket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:287:12)
    at readableAddChunk (_stream_readable.js:268:11)
    at Socket.Readable.push (_stream_readable.js:223:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

λͺ¨λ“  4 λŒ“κΈ€

이 μ½”λ“œκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

const redis = require('redis');
require('bluebird').promisifyAll(redis);

이것을 λ””λ²„κΉ…ν•˜λŠ” 것은 맀우 μ–΄λ ΅μŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œλŠ” μ ˆλŒ€ μΌμ–΄λ‚˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€. μ΄λŠ” μƒνƒœκ°€ 더 이상 μ˜¬λ°”λ₯΄μ§€ μ•ŠμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 이 였λ₯˜λ₯Ό μ•ˆμ •μ μœΌλ‘œ νŠΈλ¦¬κ±°ν•  수 μžˆλŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ? 저에 λŒ€ν•œ μΆ”κ°€ 정보가 μžˆμŠ΅λ‹ˆκΉŒ? 잘린 μ΅œμ†Œ μ½”λ“œ, node_redis 버전 및 νŒŒμ„œ 버전, μ‚¬μš©ν•˜λŠ” λͺ…λ Ή 및 이λ₯Ό λ””λ²„κ·Έν•˜λŠ” 데 도움이 될 수 μžˆλŠ” 기타 λͺ¨λ“  것.

이 였λ₯˜λ„ κ°„ν—μ μœΌλ‘œ λ°œμƒν•©λ‹ˆλ‹€. 제 κ²½μš°μ—λŠ” "client.punsubcribe()"λ₯Ό ν˜ΈμΆœν•œ ν›„ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ‹€μ‹œ μ‹œμž‘ν•  λ•ŒκΉŒμ§€ μ΄λŸ¬ν•œ 였λ₯˜κ°€ λ²”λžŒν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

νŽΈμ§‘: λ˜ν•œ λ…Έλ“œ μΈμŠ€ν„΄μŠ€λ‹Ή 일반적으둜 4개의 λ™μ‹œ Redis ν΄λΌμ΄μ–ΈνŠΈ, 2~2개의 λ‹€λ₯Έ ν˜ΈμŠ€νŠΈκ°€ μžˆμŒμ„ μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

  • "λ ˆλ””μŠ€": "2.8.0"
  • λ…Έλ“œ 10
  • "redis-parser": "2.6.0"

역좔적은 OP와 거의 λ™μΌν•˜μ§€λ§Œ 완전성을 μœ„ν•΄:

TypeError: Cannot read property 'callback' of undefined
    at normal_reply (/snapshot/stream-node/node_modules/redis/index.js:722:28)
    at RedisClient.return_reply (/snapshot/stream-node/node_modules/redis/index.js:824:9)
    at JavascriptRedisParser.returnReply (/snapshot/stream-node/node_modules/redis/index.js:192:18)
    at JavascriptRedisParser.execute (/snapshot/stream-node/node_modules/redis-parser/lib/parser.js:574:12)
    at Socket.<anonymous> (/snapshot/stream-node/node_modules/redis/index.js:274:27)
    at Socket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:287:12)
    at readableAddChunk (_stream_readable.js:268:11)
    at Socket.Readable.push (_stream_readable.js:223:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

디버그 λͺ¨λ“œμ—μ„œ μ‹€ν–‰ ν•œ ν›„ λ‚˜λŠ” μ΄λŸ¬ν•œ 였λ₯˜μ™€ 좔적 κ²ƒμœΌλ‘œ λ‚˜νƒ€λ‚¬μŠ΅λ‹ˆλ‹€ connection gone from close event λ©”μ‹œμ§€ (λ°˜λŒ€λ‘œ μ „ν˜•μ μΈ connection gone from end event λ‚˜λŠ” λ ˆλ”” 슀 μ„œλ²„μ—μ„œ 정상 유휴 ν”„λ‘œμ„ΈμŠ€ μ’…λ£Œμ‹œ μ°Έμ‘°)

λ˜ν•œ κ°„ν—μ μœΌλ‘œ λ°œμƒν•˜λ©° μ•± μ„œλ²„κ°€ 크둠 μž‘μ—…μ—μ„œ ν˜„μ €ν•˜κ²Œ 높은 λΆ€ν•˜λ₯Ό λ°›λŠ” κ²½μš°μ—λ§Œ λ°œμƒν•©λ‹ˆλ‹€.

redis 3.0.2 λ…Έλ“œ 14.15.1, redis-parser 3

TypeError: Cannot read property 'callback' of undefined
    at normal_reply (/app/node_modules/redis/index.js:650:28)
    at RedisClient.return_reply (/app/node_modules/redis/index.js:752:9)
    at JavascriptRedisParser.returnReply (/app/node_modules/redis/index.js:137:18)
    at JavascriptRedisParser.execute (/app/node_modules/redis-parser/lib/parser.js:544:14)
    at Socket.<anonymous> (/app/node_modules/redis/index.js:218:27)
    at /app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
    at Scope._activate (/app/node_modules/dd-trace/packages/dd-trace/src/scope/async_hooks.js:53:14)
    at Scope.activate (/app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
    at Socket.bound (/app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
    at Socket.emit (events.js:315:20)
    at addChunk (_stream_readable.js:309:12)
    at readableAddChunk (_stream_readable.js:284:9)
    at Socket.Readable.push (_stream_readable.js:223:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:188:23)
    at TCP.callbackTrampoline (internal/async_hooks.js:129:14)

λ˜ν•œ 작히기 λ•Œλ¬Έμ— μ„œλ²„κ°€ μΆ©λŒν•˜μ§€ μ•ŠλŠ” λΉ„μŠ·ν•œ μ‹œκ°„μ— κ΄€λ ¨λœ AbortErrorsκ°€ μžˆμŠ΅λ‹ˆλ‹€.

AbortError: Redis connection lost and command aborted. It might have been processed.
    at RedisClient.flush_and_error (/app/node_modules/redis/index.js:297:23)
    at RedisClient.connection_gone (/app/node_modules/redis/index.js:602:14)
    at Socket.<anonymous> (/app/node_modules/redis/index.js:226:14)
    at /app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
    at Scope._activate (/app/node_modules/dd-trace/packages/dd-trace/src/scope/async_hooks.js:53:14)
    at Scope.activate (/app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
    at Socket.bound (/app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
    at Object.onceWrapper (events.js:422:26)
    at Socket.emit (events.js:315:20)
    at TCP.<anonymous> (net.js:673:12)
    at TCP.callbackTrampoline (internal/async_hooks.js:129:14)
    at new Command (/app/node_modules/redis/lib/command.js:12:22)
    at RedisClient.info (/app/node_modules/redis/lib/individualCommands.js:169:39)
    at RedisClient.ready_check (/app/node_modules/redis/index.js:469:10)
    at RedisClient.on_connect (/app/node_modules/redis/index.js:363:14)
    at Socket.<anonymous> (/app/node_modules/redis/index.js:212:14)
    at /app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:54:19
    at Scope._activate (/app/node_modules/dd-trace/packages/dd-trace/src/scope/async_hooks.js:53:14)
    at Scope.activate (/app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:12:19)
    at Socket.bound (/app/node_modules/dd-trace/packages/dd-trace/src/scope/base.js:53:20)
    at Object.onceWrapper (events.js:421:28)
    at Socket.emit (events.js:327:22)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1132:10)
    at TCPConnectWrap.callbackTrampoline (internal/async_hooks.js:129:14)
{
    code: 'UNCERTAIN_STATE',
    command: 'INFO'
}
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰

κ΄€λ ¨ 문제

shmendo picture shmendo  Β·  6μ½”λ©˜νŠΈ

id0Sch picture id0Sch  Β·  4μ½”λ©˜νŠΈ

adamgajzlerowicz picture adamgajzlerowicz  Β·  4μ½”λ©˜νŠΈ

twappworld picture twappworld  Β·  7μ½”λ©˜νŠΈ

michaelwittig picture michaelwittig  Β·  3μ½”λ©˜νŠΈ