Favoritos desaparecendo e comportamento esperado de /bookmarks

Nossa comunidade tem relatado que, após atualizarmos para o Discourse 3.0 há cerca de 2 meses, seus marcadores às vezes desaparecem misteriosamente. Limitei as reclamações a usuários que usam principalmente /bookmarks (e não /my/activity/bookmarks) — há uma questão de usabilidade relacionada entre os dois, mas chegarei a isso mais tarde.

No momento, estou mais confuso sobre qual é o comportamento esperado de /bookmarks, já que eles não têm todos os marcadores dos usuários (conforme listado em /my/activity/bookmarks). Por quê? Para minha própria conta, a diferença é de quase 1/3 de marcadores faltando: essas duas seções não deveriam listar essencialmente a mesma quantidade de marcadores/tópicos?

Pensei que talvez /bookmarks apenas suportasse posts marcados (e não tópicos), mas isso não parece ser o caso: nossos usuários marcam consistentemente um post/tópico, veem que ele aparece bem em /bookmarks por algumas horas ou dias, e então ele simplesmente… desaparece? :confused: Se eles excluem o marcador, marcam novamente, ele aparece por um tempo e depois desaparece novamente. Para ser claro, os marcadores sempre aparecem bem em /my/activity/bookmarks, então o marcador em si existe — mas por algum motivo não aparece em /bookmarks depois de um tempo. Deve haver uma diferença entre o conteúdo das duas seções, mas não a vejo — o que estou perdendo? :thinking:


Agora, o motivo pelo qual isso é particularmente irritante para nossos usuários é que eles acham /my/activity/bookmarks inutilizável para seu principal caso de uso, que é encontrar quais de seus tópicos marcados têm atualizações (dentro de uma categoria específica, ou apenas em todo o fórum).

Posso ver muitas funcionalidades interessantes na interface /my/activity/bookmarks, mas ela ainda não atende ao seu principal objetivo: ser capaz de classificar por atividade recente, ao mesmo tempo em que vê quais tópicos têm atualizações (número de não lidos). Seria ótimo se a classificação funcionasse lá também e se o número de posts não lidos em cada tópico fosse exibido, mas não tenho certeza de como funcionaria a funcionalidade de filtrar os marcadores por categoria em /my/activity/bookmarks, então talvez seja justificável que exista /bookmarks também.

De qualquer forma, talvez estes sejam dois problemas separados (talvez um bug (?) e um problema de UX), mas eles estão relacionados: tenho incentivado a comunidade a evitar os “marcadores desaparecendo” usando /my/activity/bookmarks em vez disso, mas para o que eles o usam, realmente não funciona. Talvez se entendermos os marcadores “desaparecendo”, possamos encontrar uma solução alternativa — então: por que todos os marcadores não aparecem em /bookmarks?

5 curtidas

Reduzi parte dessa diferença pelo fato de que /bookmarks não inclui mensagens privadas marcadas e se um tópico tem vários posts marcados, ele mostra o tópico apenas uma vez em /bookmarks.

No entanto, os favoritos ainda estão faltando. Temos vários membros que têm tópicos aparecendo em /my/activity/bookmarks que nem sempre aparecem em /bookmarks. Ênfase no sempre porque inicialmente eles sempre aparecem, até que eventualmente desaparecem horas/dias depois. :anguished:

Novamente, isso só começou a acontecer quando atualizamos para o Discourse 3.0, então suspeito de um bug.

Não podemos marcar posts, apenas tópicos :thinking:

Meu entendimento é que você pode marcar posts específicos; até mesmo vários posts sobre o mesmo tópico:

4 curtidas

Sua compreensão é realmente válida e sólida. A minha não é.

Quando diabos nós tivemos isso?

Isso, juntamente com o marcador de mensagens de chat (que só funciona quando o plugin de chat está ativado) existe há algum tempo, pelo menos desde FEATURE: Promote polymorphic bookmarks to default and migrate (#16729) · discourse/discourse@fcc2e7e · GitHub .

Este é o cerne da questão, na verdade. Ainda temos essa rota antiga /bookmarks, que é um tanto útil por causa da classificação por não lidos/atividade, mas carece de coisas essenciais da nova rota, e também é provável que a consulta que ela usa tenha alguns problemas com marcadores de postagens/tópicos e não mostre marcadores de chat.

Isso faz sentido tecnicamente já que é apenas uma lista de tópicos, não uma lista de postagens, é uma das principais diferenças entre a rota antiga e a nova.

Não tenho certeza do que precisamos fazer aqui, vou investigar mais e discutir internamente. Não é ideal ter as duas rotas, seria melhor se a nova pudesse fazer a funcionalidade que falta na antiga.

1 curtida

Percebo agora que talvez eu devesse ter dividido meu tópico em dois: um para UX e outro para Bug, já que meu problema principal (favoritos desaparecendo) está sendo ofuscado pelo problema de usabilidade.

Enquanto isso, estive mexendo na funcionalidade de favoritos e encontrei outro bug, mas ainda não entendi por que os favoritos estão desaparecendo aleatoriamente de /bookmarks. Parece ser mais comum com alguns tópicos do que com outros por algum motivo, mas não encontrei um padrão comum. Para mim, o mais estranho é que, depois de marcar algo como favorito, ele parece ser exibido corretamente em /bookmarks por um número arbitrário de horas/dias, até que desapareça de lá e só seja “corrigido” removendo o favorito e marcando-o novamente.

Para ser claro, este não é um problema com a configuração de um lembrete de favorito para excluir o favorito: nenhum lembrete está envolvido, e os favoritos não estão sendo excluídos (eles ainda aparecem em /my/activity/bookmarks) — eles estão apenas faltando em /bookmarks depois de um tempo.

2 curtidas

Movi isto para Bug, já que Support não era nenhuma destas duas, na esperança de que ganhe mais atenção aqui.

Desculpas pelo “bump” indireto, mas temos um monte de usuários frustrados, muito insatisfeitos com isto. Talvez o /bookmarks não estar habilitado por padrão (ou seja, visível na interface) reduza um pouco a exposição a este bug, mas não consigo imaginar que isto seja específico do nosso fórum.

1 curtida

Só para dizer que não estamos ignorando você. :slight_smile: Estamos apenas vendo a melhor forma de lidar com isso. Esperamos ter mais novidades em breve. :crossed_fingers:

1 curtida

Este problema parece frustrante, mas ainda não consegui reproduzi-lo e ainda não tenho boas ideias sobre o que pode estar causando isso.

Vou ignorar o problema de UX por enquanto e focar no bug.

Vou começar reafirmando o problema:

Passos teóricos para reproduzir, mas não com 100% de certeza:

  1. Comece sem marcadores
    • Vá para /bookmarks e verifique se não há tópicos na lista
    • Vá para /my/activity/bookmarks e verifique se não há marcadores na lista
  2. Adicione marcadores a alguns posts e tópicos. (Por exemplo, 15 marcadores em 10 tópicos exclusivos)
    • Nós não achamos que lembretes estejam em jogo aqui, mas talvez estejam?
    • Nós ainda não sabemos se importa se você marca um post ou um tópico
  3. Anote quantos tópicos exclusivos foram marcados
  4. Vá para /bookmarks e verifique se há 10 tópicos na lista
  5. Vá para /my/activity/bookmarks e verifique se há 15 itens na lista de 10 tópicos
  6. Espere
  7. Volte para /my/activity/bookmarks e verifique se ainda há 15 itens na lista de 10 tópicos
  8. Vá para /bookmarks e veja que há menos de 10 tópicos na lista

Se alguém pudesse começar com um site novo e reproduzir isso com maior certeza, isso ajudaria muito a identificar o problema aqui.

Em vez disso, se alguém vir o problema, apenas com estes passos, talvez possamos orientar em algumas etapas de depuração para ajudar a identificar o problema:

  1. Vá para /my/activity/bookmarks e role até o final.
  2. Conte o número de tópicos exclusivos (N)
  3. Vá para /bookmarks e role até o final.
  4. Veja que há menos de N tópicos na lista
1 curtida

Obrigado por tentar resolver isso — sei que isso não está no topo da lista de bugs interessantes para corrigir. :sweat_smile:

Sim, esses são praticamente os passos corretos para chegar lá, com pequenas observações que mencionarei mais tarde abaixo.

Dito isso, devido à natureza aleatória do problema (acontece com um tópico aleatório a qualquer momento, desaparecendo após um tempo arbitrário), pode ser difícil reproduzi-lo apenas preparando o cenário com esses passos, já que o uso regular parece ser necessário e não está claro se ou qual é o gatilho (que pode ser o tempo): Não consegui reproduzir o bug eu mesmo sob demanda e os usuários que relatam isso são todos muito mais ativos do que eu no uso de /bookmarks.

No entanto, tenho relatos de vários usuários diferentes sendo afetados por isso, o que verifiquei através de personificação de conta. Pedi a alguns para não marcarem novamente pelo menos alguns dos tópicos que desapareceram de /bookmarks, então, embora eu não consiga reproduzir sob demanda, ainda tenho acesso a contas onde isso está acontecendo e comparar /bookmarks e /my/activity/bookmarks mostra as diferenças.

Embora eu não possa fornecer acesso de administrador ao nosso fórum, ficarei feliz em executar quaisquer consultas SQL ou requisições à API do Discourse da nossa instância (mesmo como os usuários que estão experimentando isso) se isso ajudar. Por favor, me envie uma mensagem privada com os detalhes do nosso fórum se alguém quiser dar uma olhada.

Eu brinquei brevemente com os endpoints /bookmarks.json e /my/activity/bookmarks.json, mas não cheguei longe: parece que a página /bookmarks já carrega com a primeira página de resultados, e só atinge o endpoint para mais páginas, ao contrário de /my/activity/bookmarks, que parece buscar todos os dados de favoritos do endpoint. Portanto, não consegui comparar as respostas da API.

Eu não sou um desenvolvedor Ruby, mas tentei descobrir onde no código esses 2 endpoints se encontram para tentar entender as diferenças, mas como não estou familiarizado com a stack tecnológica, me perdi no controller e só encontrei UsersController#bookmarks.

Agora, alguns comentários sobre os passos, possivelmente não muito relevantes, apenas para ser explícito.

Isso provavelmente está correto, mas não posso confirmar isso, pois todos os usuários afetados em nosso fórum são usuários de longa data com muitos favoritos existentes e foi a atualização para a versão 3.0 que trouxe isso. Mas, como o problema se repete ao remover um favorito e adicioná-lo novamente, presumo que se começasse com uma lousa em branco, também aconteceria. Um único relator disse que era mais comum logo após a atualização e tem sido menos frequente… mas pode ser que eles estejam apenas perdendo favoritos sem perceber. :sweat_smile:

Verifiquei com alguns usuários que foram pacientes o suficiente para ajudar a entender isso e me disseram:

  • eles sempre marcam tópicos, não posts
  • eles nunca usam os lembretes em favoritos.

Suponho que isso não signifique que não aconteceria com posts e lembretes, apenas que não parece depender disso.

Pequena observação apenas para mencionar que /my/activity/bookmarks também pode mostrar favoritos de mensagens privadas, então um N diferente pode ser disso também (algo que me confundiu em algum momento).


Novamente, ficarei feliz em executar consultas SQL, requisições de API ou fornecer mais informações se isso ajudar. Estou totalmente ciente de que é complicado depurar isso devido ao seu comportamento aleatório, mas é por isso que está frustrando os usuários.

1 curtida

Uma teoria é que talvez topic_users.bookmarked esteja de alguma forma dessincronizado. Se você identificou um tópico problemático, pode tentar consultar a tabela topic_users para a combinação de usuário/tópico que você encontrar e ver se bookmarked é verdadeiro ou falso?

Além disso, estou curioso para saber se o novo recurso experimental /filter mostra os tópicos “ausentes” com in:bookmarked, por exemplo, Discourse Meta. Você pode tentar isso também e nos informar?

1 curtida

Sim, parece ser o caso.

Eu investiguei um dos marcadores “ausentes” e topic_users.bookmarked estava definido como falso para ele. Este tópico não aparece em /bookmarks, mas aparece em /my/activity/bookmarks.

E não tenho certeza se é relevante, mas o topic_users.last_posted_at para esse registro tem uma data de quase um mês atrás (aproximadamente quando desapareceu), enquanto o tópico em questão tem postagens quase diariamente desde então.

De qualquer forma, não tenho certeza do que afeta essa flag bookmarked, mas acho que é uma suspeita.

Algo mais que eu possa verificar?

Ficaria feliz em tentar, mas estamos na versão estável (3.0.3), então ainda não temos isso.

2 curtidas

Isso é muito útil. Obrigado. Se você tiver uma ideia de qual versão era antes de atualizar para a 3.0.3, isso nos ajudaria a isolar quando o bug foi introduzido também.

Não posso garantir quando poderemos priorizar isso, mas acho que temos algo para trabalhar quando começarmos.

2 curtidas

Sempre estivemos no branch estável, então provavelmente estávamos na versão 2.8.14 antes. Atualizamos em 11 de março, provavelmente para a 3.0.1, e a primeira reclamação surgiu em 18 de março, então suponho que, em teoria, também poderia ser até a 3.0.2. Portanto, receio que houve muitas versões beta do 2.9 no meio.

Se houver algum log em algum lugar no sistema de arquivos para inferir versões anteriores, posso verificar isso, mas 2.8.14...3.0.2 deve estar correto.


Não tenho certeza se isso ajuda, pois não estou familiarizado com o esquema, mas executei a consulta abaixo:

SELECT
  topic_users.user_id,
  topic_users.topic_id
FROM
  bookmarks,
  topic_users
WHERE
  bookmarks.user_id = topic_users.user_id
  AND bookmarkable_type = 'Topic'
  AND bookmarks.bookmarkable_id = topic_users.topic_id
  AND topic_users.bookmarked = false;

e obtive mais de 3000 correspondências.

Imagino que algo equivalente possa ser executado em qualquer sistema de produção para encontrar alguns marcadores “ausentes”, o que, espero, nos aproximará um passo de reproduzir o problema. Desculpe se estou dizendo o óbvio, apenas tentando ser útil. :sweat_smile:

2 curtidas

Para que conste, estamos agora na versão 3.1.2 e o problema ainda persiste.

Os usuários relatam que alguns favoritos “desaparecem” até 5 vezes por dia (após re-favoritar cada vez). Como está, a funcionalidade está simplesmente muito quebrada para ser usada, e não há uma boa alternativa que forneça o mesmo nível de funcionalidade.

Agora que existe uma maneira de reproduzi-lo (por consulta SQL) e uma gama de versões para quando o bug foi introduzido, posso ter alguma esperança de que isso será abordado em algum momento?

Ah, agora que você está na versão 3.1.2, da próxima vez que vir isso, você pode verificar se esses tópicos também estão faltando em /filter ou se eles aparecem lá?

Acho que saber a resposta para essa pergunta nos ajudará a decidir o que fazer aqui.

3 curtidas

Eu testei com o recurso /filter e parece que o problema também se manifesta com uma busca in:bookmarked nele.

Devido à natureza aleatória de quando eles desaparecem, testei isso primeiro encontrando um favorito “ofensor” usando a consulta SQL que postei anteriormente e, em seguida, me passando por esse usuário, e encontrei com sucesso um favorito que:

  1. o favorito está presente em /my/activity/bookmarks (como esperado),
  2. mas o favorito não está listado em /bookmarks (mas deveria)
  3. e não aparece em /filter?q=in%3Abookmarked

Consultando a tabela bookmarks do banco de dados, ele está, é claro, lá. Consultando a tabela topic_users, no entanto, a coluna bookmarked está definida como false, o que eu suspeito que possa estar relacionado ao problema?

Para ser claro, esta conta também tinha favoritos nos quais o favorito estava sendo exibido em todos os 3 lugares acima (como deveria) — mas este é um estado temporário e eles eventualmente “desaparecem”. A consulta SQL parece retornar apenas os problemáticos. Portanto, executá-la em um sistema de produção movimentado e se passar pelo respectivo usuário deve permitir reproduzir o problema.

1 curtida

Obrigado @mentalstring. Vou levar isso de volta para a equipe novamente com esta nova informação e ver o que faremos a seguir.

2 curtidas

@mentalstring obrigado por ter paciência conosco durante todo esse tempo, desculpe por ter demorado tanto para chegar à raiz disso. Encontrei a causa e uma maneira de reproduzi-la hoje com base nos dados que você forneceu e em um relatório no Data Explorer no Meta. Para reproduzir:

  • Marque um tópico e não marque nenhuma postagem dentro dele
  • Exclua ou recupere qualquer postagem no tópico

Isso é causado por este job (adicionado por mim anos atrás) que não leva em consideração os marcadores de nível de tópico:

Portanto, uma correção está a caminho, juntamente com uma migração de dados para corrigir registros existentes. Postarei aqui novamente quando tiver mesclado.

3 curtidas