ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅:
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, ΠΎΡ Π΄Π²ΡΡ Π΄ΠΎ Π΄Π²ΡΡ ΡΠ°Π·Π½ΡΡ Ρ ΠΎΡΡΠΎΠ²
Traceback Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½ 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)
ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ²Π°ΠΌΠΈ ΠΈ ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΡΡΡΠ²Π°Π΅Ρ ΠΎΡΠ΅Π½Ρ Π²ΡΡΠΎΠΊΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ ΠΈΠ·-Π·Π° Π·Π°Π΄Π°Π½ΠΈΡ cron.
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, ΠΎΡ Π΄Π²ΡΡ Π΄ΠΎ Π΄Π²ΡΡ ΡΠ°Π·Π½ΡΡ Ρ ΠΎΡΡΠΎΠ²
Traceback Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½ OP, Π½ΠΎ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΡΡ: