μ€λ₯ λ©μμ§ μΈλΆμ 보:
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λ₯Ό νμΈν΄μΌ ν©λλ€.
μ΄ μ½λκ° μμ΅λκΉ?
const redis = require('redis');
require('bluebird').promisifyAll(redis);
μ΄κ²μ λλ²κΉ νλ κ²μ λ§€μ° μ΄λ ΅μ΅λλ€. μ€μ λ‘λ μ λ μΌμ΄λμ§ μμμΌ ν©λλ€. μ΄λ μνκ° λ μ΄μ μ¬λ°λ₯΄μ§ μμμ λνλ λλ€. μ΄ μ€λ₯λ₯Ό μμ μ μΌλ‘ νΈλ¦¬κ±°ν μ μλ λ°©λ²μ΄ μμ΅λκΉ? μ μ λν μΆκ° μ λ³΄κ° μμ΅λκΉ? μλ¦° μ΅μ μ½λ, node_redis λ²μ λ° νμ λ²μ , μ¬μ©νλ λͺ λ Ή λ° μ΄λ₯Ό λλ²κ·Ένλ λ° λμμ΄ λ μ μλ κΈ°ν λͺ¨λ κ².
μ΄ μ€λ₯λ κ°νμ μΌλ‘ λ°μν©λλ€. μ κ²½μ°μλ "client.punsubcribe()"λ₯Ό νΈμΆν ν νλ‘μΈμ€λ₯Ό λ€μ μμν λκΉμ§ μ΄λ¬ν μ€λ₯κ° λ²λνλ κ² κ°μ΅λλ€.
νΈμ§: λν λ Έλ μΈμ€ν΄μ€λΉ μΌλ°μ μΌλ‘ 4κ°μ λμ Redis ν΄λΌμ΄μΈνΈ, 2~2κ°μ λ€λ₯Έ νΈμ€νΈκ° μμμ μΆκ°ν΄μΌ ν©λλ€.
μμΆμ μ 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'
}
κ°μ₯ μ μ©ν λκΈ
μ΄ μ€λ₯λ κ°νμ μΌλ‘ λ°μν©λλ€. μ κ²½μ°μλ "client.punsubcribe()"λ₯Ό νΈμΆν ν νλ‘μΈμ€λ₯Ό λ€μ μμν λκΉμ§ μ΄λ¬ν μ€λ₯κ° λ²λνλ κ² κ°μ΅λλ€.
νΈμ§: λν λ Έλ μΈμ€ν΄μ€λΉ μΌλ°μ μΌλ‘ 4κ°μ λμ Redis ν΄λΌμ΄μΈνΈ, 2~2κ°μ λ€λ₯Έ νΈμ€νΈκ° μμμ μΆκ°ν΄μΌ ν©λλ€.
μμΆμ μ OPμ κ±°μ λμΌνμ§λ§ μμ μ±μ μν΄: