Suivi - Administration système Entrée redis louche "users//diff_karma"

#1918 Posté par (page perso) . État de l'entrée : corrigée. Licence CC by-sa.
Tags : aucun
0
29
déc.
2019

Identifier la source de l'entrée redis louche users//diff_karma

Indices :

  • en prod, revient régulièrement si on la vire
  • n'existe pas en dév
  • contient 20 soit le karma par défaut actuellement
app/models/node.rb:    $redis.incrby("users/#{self.user_id}/diff_karma", value)
app/models/account.rb:    self.karma += $redis.get("users/#{self.user_id}/diff_karma").to_i
app/models/account.rb:    $redis.del("users/#{self.user_id}/diff_karma")
app/models/comment.rb:      $redis.incrby("users/#{self.user_id}/diff_karma", value)
  • # Piste: vote sur des commentaires de comptes supprimés ?

    Posté par (page perso) . Évalué à 3 (+1/-0). Dernière modification le 01/01/20 à 10:57.

    Hello,

    Au sommet denode.rb, il y a une note qui dit que le user peut être NULL:

    class Node < ActiveRecord::Base
      belongs_to :user     # can be NULL

    J'imagine que ça peut être pareille pour les commentaires.

    C'est peut-être des votes sur des contenus/commentaires de comptes supprimés ?

    Une piste pour comprendre la production serait de lancer des requêtes SQL du style:

    select count(1), DATE(created_at) as creation_date
    from nodes
    where user_id is NULL
    and score <> 0
    and creation_date > DATE_SUB(CUR_DATE(),INTERVAL 1 MONTH)
    order by creation_date desc;
    
    select count(1), DATE(created_at)
    from comments
    where user_id is NULL
    and score <> 0
    and creation_date > DATE_SUB(CUR_DATE(),INTERVAL 1 MONTH)
    order by creation_date desc;

    Dans le where, on peut ajuster la condition sur la date de création pour l'analyse.

    Pour éviter d'avoir ces clés bizarres, on pourrait ajouter une condition à la fin des lignes que tu as trouvés (dans node.rb et comment.rb, ça devrait suffir):

    unless self.user_id.nil?

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.