Node-redis: TypeError: Eigenschaft 'Rückruf' von undefined kann nicht gelesen werden

Erstellt am 4. Apr. 2019  ·  4Kommentare  ·  Quelle: NodeRedis/node-redis

Details zur Fehlermeldung:
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)

Quellcode des Redis-Clients:
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'); } }
Dieser Fehler tritt gelegentlich auf, nicht die ganze Zeit. Ich denke, vielleicht gibt es einen Fehler und sollte command_obj überprüfen, wenn Sie aus der Befehlswarteschlange wechseln.

pending-author-input

Hilfreichster Kommentar

Ich bekomme diesen Fehler auch zeitweise. In meinem Fall scheint es, dass ich manchmal nach dem Aufrufen von "client.punsubcribe()" mit diesen Fehlern überflutet werde, bis ich den Prozess neu starte.

Bearbeiten: Ich sollte auch hinzufügen, dass es normalerweise 4 gleichzeitige Redis-Clients pro Knoteninstanz gibt, zwei bis zwei verschiedene Hosts

  • "redis": "2.8.0"
  • Knoten 10
  • "redis-parser": "2.6.0"

Traceback ist mehr oder weniger identisch mit OPs, aber der Vollständigkeit halber:

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)

Alle 4 Kommentare

Hast du diesen Code drin?

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

Es ist sehr schwer, dies zu debuggen. Es sollte eigentlich nie passieren. Dies zeigt an, dass der Zustand nicht mehr korrekt ist. Gibt es eine Möglichkeit, diesen Fehler zuverlässig auszulösen und haben Sie weitere Informationen für mich? Wie ein minimaler Code-Schnipsel, die node_redis-Version und die Parser-Version, welche Befehle Sie verwenden und alles andere, was hilfreich sein könnte, um dies zu debuggen.

Ich bekomme diesen Fehler auch zeitweise. In meinem Fall scheint es, dass ich manchmal nach dem Aufrufen von "client.punsubcribe()" mit diesen Fehlern überflutet werde, bis ich den Prozess neu starte.

Bearbeiten: Ich sollte auch hinzufügen, dass es normalerweise 4 gleichzeitige Redis-Clients pro Knoteninstanz gibt, zwei bis zwei verschiedene Hosts

  • "redis": "2.8.0"
  • Knoten 10
  • "redis-parser": "2.6.0"

Traceback ist mehr oder weniger identisch mit OPs, aber der Vollständigkeit halber:

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)

Nach der Ausführung im Debug-Modus bemerkte ich, dass diese Fehler mit connection gone from close event Meldungen verfolgt werden (im Gegensatz zu den typischeren connection gone from end event ich während der normalen Beendigung des Leerlaufprozesses vom Redis-Server sehe).

Es passiert auch nur zeitweise und wenn der App-Server durch einen Cron-Job besonders stark belastet wird

Redis 3.0.2-Knoten 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)

Außerdem gibt es ungefähr zur gleichen Zeit verwandte AbortErrors, die den Server nicht zum Absturz bringen, weil sie erwischt werden

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'
}
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

betimer picture betimer  ·  5Kommentare

Stono picture Stono  ·  6Kommentare

dotSlashLu picture dotSlashLu  ·  5Kommentare

twappworld picture twappworld  ·  7Kommentare

Mickael-van-der-Beek picture Mickael-van-der-Beek  ·  6Kommentare