Node-redis: TypeError: no se puede asignar a la propiedad de solo lectura 'devolución de llamada' de decr

Creado en 23 jun. 2016  ·  6Comentarios  ·  Fuente: NodeRedis/node-redis

  • Versión : node redis 2.6.2
  • Plataforma : Nodo 4.4.5 en Ubuntu 14.04
  • Descripción :
    Sigo recibiendo este error al intentar disminuir un contador en línea simple en 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)

El código es:

    db.decr('online',function(err){
        if(err){
            console.log('DECREMENTING ONLINE NUMBER FAILED:');
            console.log(err);
        }
        console.log('DECREMENTING ONLINE NUMBER WAS SUCCESSFUL!');
    });

Parece que no puedo replicarlo, pero solo sucede cuando hay mucha gente en el sitio. Cuando solo estamos yo y un par de amigos probándolo, parece que funciona bien aumentando y disminuyendo el valor.

Por cierto, sucede incluso sin la función de devolución de llamada (solo db.decr ('online')), solo agregué la devolución de llamada para ver si arrojaría algún error.

Repito, el código funciona bien hasta que más personas comiencen a usarlo. ¿Quizás está tratando de hacer .decr al mismo tiempo y no puede manejar eso o?

question

Comentario más útil

Acabo de resolver este problema con [email protected] y [email protected] . Volver a establecer newrelic en 1.28.0 eliminó el problema.

Sin embargo, el uso de redis 2.6.2 y newrelic 1.28.3 funciona bien.

Todos 6 comentarios

Acabo de notar en los registros que las llamadas a db.get () también arrojan un error similar a veces:

    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)

Código:

            db.get('triviaAnswer',function(err,dbAnswer){
                if(err){
                    console.log('Error getting triviaAnswer from redis: '+err);
                    return;
                }

Además, los campos 'online' y 'triviaAnswer' ya están configurados, y el código anterior funciona hasta ... Bueno, hasta que no. Tampoco es un código "nuevo", ha estado funcionando en un servidor diferente durante semanas, así que dudo que haya un problema con eso.

Esto parece ser un problema con newrelic, por lo que recomiendo contactarlos al respecto. Lamento no poder ayudarlos más, ya que no uso newrelic por mi cuenta.

Eso fue todo, gracias.

@Alchemystic, ¿te importaría entrar en detalles sobre la solución? También encontré esto localmente con NR, pero la actualización a 2.6.2 (de 2.6.0-1) pareció solucionarlo para mí, así que quiero asegurarme de que no sea solo una pista falsa.

Dejé de usar newrelic. Solo lo obtuve para diagnosticar un problema de red, pero después de descubrir que estaba causando problemas, lo eliminé.

Acabo de resolver este problema con [email protected] y [email protected] . Volver a establecer newrelic en 1.28.0 eliminó el problema.

Sin embargo, el uso de redis 2.6.2 y newrelic 1.28.3 funciona bien.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

Atala picture Atala  ·  3Comentarios

michaelwittig picture michaelwittig  ·  3Comentarios

juriansluiman picture juriansluiman  ·  3Comentarios

twappworld picture twappworld  ·  7Comentarios

gpascale picture gpascale  ·  4Comentarios