Node-redis: TypeError: Tidak dapat menetapkan untuk hanya membaca properti 'panggilan balik' dari decr

Dibuat pada 23 Jun 2016  ·  6Komentar  ·  Sumber: NodeRedis/node-redis

  • Versi : simpul redis 2.6.2
  • Platform : Node 4.4.5 di Ubuntu 14.04
  • Deskripsi :
    Saya terus mendapatkan kesalahan ini ketika mencoba mengurangi penghitung online sederhana di 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)

Kodenya adalah:

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

Sepertinya saya tidak dapat menirunya, tetapi itu hanya terjadi ketika banyak orang berada di situs tersebut. Ketika hanya saya dan beberapa teman yang mengujinya, tampaknya melakukan pekerjaan dengan baik untuk menambah dan mengurangi nilainya.

Omong-omong itu terjadi bahkan tanpa fungsi panggilan balik (hanya db.decr('online')), saya hanya menambahkan panggilan balik untuk melihat apakah itu akan menimbulkan kesalahan.

Saya ulangi, kode berfungsi dengan baik sampai lebih banyak orang mulai menggunakannya. Mungkin mencoba melakukan .decr pada saat yang sama dan tidak bisa mengatasinya atau?

question

Komentar yang paling membantu

Saya baru saja menemukan masalah ini dengan [email protected] dan [email protected] . Mengatur newrelic kembali ke 1.28.0 menghapus masalah.

Namun, menggunakan redis 2.6.2 dan newrelic 1.28.3 berfungsi dengan baik.

Semua 6 komentar

Perhatikan saja di log bahwa panggilan db.get() terkadang juga menimbulkan kesalahan serupa:

    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)

Kode:

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

Juga, bidang 'online' dan 'triviaAnswer' sudah disetel, dan kode di atas berfungsi sampai.. Yah sampai tidak. Ini juga bukan kode "baru", sudah bekerja di server yang berbeda selama berminggu-minggu sekarang, jadi saya ragu ada masalah dengan itu.

Ini sepertinya menjadi masalah dengan newrelic, jadi saya sarankan untuk menghubungi mereka tentang ini. Saya minta maaf karena saya tidak dapat membantu Anda lagi, karena saya tidak menggunakan newrelic sendiri.

Itu saja, terima kasih.

@Alchemystic maukah Anda menjelaskan detail tentang perbaikannya? Saya telah menemukan ini secara lokal juga dengan NR, tetapi memutakhirkan ke 2.6.2 (dari 2.6.0-1) tampaknya memperbaikinya untuk saya, jadi ingin memastikan itu bukan hanya ikan haring merah.

Saya baru saja berhenti menggunakan newrelic. Saya hanya mendapatkannya untuk mendiagnosis masalah jaringan, tetapi setelah mengetahui itu menyebabkan masalah, saya menghapusnya.

Saya baru saja menemukan masalah ini dengan [email protected] dan [email protected] . Mengatur newrelic kembali ke 1.28.0 menghapus masalah.

Namun, menggunakan redis 2.6.2 dan newrelic 1.28.3 berfungsi dengan baik.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

michaelwittig picture michaelwittig  ·  3Komentar

Atala picture Atala  ·  3Komentar

gpascale picture gpascale  ·  4Komentar

betimer picture betimer  ·  5Komentar

Stono picture Stono  ·  6Komentar