Exportação do Mastodon travada em ‘Download pendente’: como resolver
🔍 WiseChecker

Exportação do Mastodon travada em ‘Download pendente’: como resolver

Você solicita uma exportação dos seus dados do Mastodon, mas o status do download fica em “Download pendente” por horas ou até dias. Esse problema geralmente ocorre quando a fila de tarefas em segundo plano do seu servidor Mastodon está sobrecarregada ou travada em uma tarefa com falha. O servidor nunca gera o arquivo de exportação, deixando você sem como fazer backup das suas postagens, listas e seguidores. Este artigo explica por que as exportações ficam travadas e fornece soluções passo a passo tanto para usuários da instância quanto para administradores do servidor.

Principais pontos: Como resolver uma exportação travada do Mastodon

  • Preferências > Importar e exportar > Exportar dados: O local onde você solicita cada tipo de exportação; se estiver travado, primeiro é preciso limpar o trabalho pendente.
  • Painel do Sidekiq (apenas admin): O visualizador de filas que mostra trabalhos de exportação travados; tente novamente ou exclua o trabalho com falha para desbloquear as exportações.
  • Comando no console Rails ExportWorker purge: Uma correção no lado do servidor que remove todos os trabalhos de exportação pendentes e permite solicitar um novo.

Por que as exportações do Mastodon ficam travadas em “Download pendente”

O Mastodon não cria arquivos de exportação instantaneamente. Quando você clica em um botão de download na página Preferências > Importar e exportar > Exportar dados, o sistema coloca um trabalho em segundo plano na fila, processado pelo Sidekiq, o processador de trabalhos. O Sidekiq pega o trabalho, executa a classe ExportWorker e escreve o arquivo em um local temporário. A interface web então mostra um link de download em vez da mensagem “Download pendente”.

O trabalho pode ficar pendente por três motivos principais:

A fila do Sidekiq está congestionada

Se sua instância do Mastodon processa um volume alto de tarefas — federar postagens, enviar notificações ou gerar miniaturas — o trabalho de exportação fica atrás de outras tarefas. Uma fila com milhares de trabalhos esperando pode atrasar uma exportação por horas.

Um trabalho com falha bloqueia a fila

Às vezes, um trabalho de exportação anterior falha devido a um arquivo ausente, um timeout no banco de dados ou um erro de falta de memória. O Sidekiq tenta novamente o trabalho com falha várias vezes, mas se a causa raiz persistir, o trabalho fica no conjunto de novas tentativas. Novos trabalhos de exportação para o mesmo usuário podem ser bloqueados até que o trabalho antigo seja resolvido.

O ExportWorker trava sem nova tentativa

Em instâncias menores com RAM limitada, o ExportWorker pode consumir muita memória e ser morto pelo sistema operacional. O Sidekiq nem sempre recoloca o trabalho na fila após uma morte por OOM, deixando o status da exportação como “Download pendente” permanentemente.

Passos para desbloquear uma exportação pendente do Mastodon

O método de correção depende se você é um usuário comum ou um administrador do servidor. Siga a seção que se aplica ao seu papel.

Para usuários comuns: Cancelar e solicitar novamente a exportação

  1. Abra Preferências > Importar e exportar > Exportar dados
    Navegue até as configurações do seu Mastodon. A página de exportação de dados lista todos os tipos de exportação: postagens, mídia, listas, favoritos, seguidores, bloqueios, silêncios e bloqueios de domínio.
  2. Clique no botão “Solicitar” para o tipo de exportação travado novamente
    Se o botão estiver cinza ou mostrar “Download pendente”, aguarde 30 segundos e atualize a página. Se o status não mudar, vá para o próximo passo.
  3. Faça logout e login novamente
    Fazer logout limpa o cache da sua sessão. Após fazer login novamente, volte para a página de exportação de dados. O trabalho travado pode ter sido limpo pelo servidor nesse meio tempo. Se o botão agora estiver clicável, solicite a exportação novamente.
  4. Entre em contato com o administrador da sua instância
    Se a exportação ainda estiver pendente após fazer logout, o problema está no lado do servidor. Envie uma mensagem direta para o administrador da sua instância com o tipo exato de exportação que está travado. Inclua o horário em que você solicitou pela primeira vez.

Para administradores de servidor: Limpar o trabalho travado via Sidekiq

  1. Acesse o painel do Sidekiq
    Abra https://sua-instancia.exemplo.com/sidekiq no navegador. Você precisa ter privilégios de administrador e estar logado na sua conta do Mastodon. Se vir um erro 404, sua instância pode ter o Sidekiq web desabilitado — use o método do console Rails.
  2. Navegue até a aba Retries (Tentativas)
    Clique no link “Retries” no topo do painel do Sidekiq. Procure por trabalhos com a classe ExportWorker. O payload do trabalho contém o ID do usuário da conta afetada.
  3. Exclua ou tente novamente o trabalho ExportWorker
    Clique no botão “Delete” para remover completamente o trabalho travado. Alternativamente, clique em “Retry” para tentar a exportação novamente imediatamente. Se o trabalho falhar novamente em segundos, exclua-o e peça ao usuário para solicitar uma nova exportação.
  4. Verifique a aba Busy (Ocupados) para um ExportWorker em execução
    Um trabalho travado no estado “Busy” significa que o Sidekiq está tentando processá-lo, mas não consegue finalizar. Reinicie o processo Sidekiq no seu servidor: execute systemctl restart mastodon-sidekiq em uma configuração baseada em systemd. Após a reinicialização, o trabalho será tentado novamente ou movido para a aba Dead (Mortos).

Para administradores de servidor: Limpar todas as exportações pendentes via Rails Console

  1. Abra uma sessão do Rails console
    Conecte-se via SSH ao seu servidor Mastodon e execute cd /home/mastodon/live && RAILS_ENV=production bin/rails console. Substitua o caminho pelo diretório de instalação do seu Mastodon, se diferente.
  2. Exclua todos os trabalhos de exportação pendentes
    Digite o seguinte comando e pressione Enter:
    Sidekiq::Queue.new("default").each { |job| job.delete if job.display_class == "ExportWorker" }
    Isso remove todos os trabalhos de exportação enfileirados na fila padrão.
  3. Limpe o conjunto de tentativas para trabalhos de exportação
    Execute:
    Sidekiq::RetrySet.new.each { |job| job.delete if job.display_class == "ExportWorker" }
    Isso remove quaisquer trabalhos de exportação com falha que o Sidekiq planejava tentar novamente.
  4. Peça ao usuário para solicitar a exportação novamente
    Após limpar os trabalhos, o usuário verá um botão “Solicitar” novamente na página de exportação de dados. Instrua-o a clicar e aguardar até cinco minutos para o arquivo aparecer.

Se a exportação ainda mostrar “Download pendente” após a correção principal

Arquivo de exportação excede os limites de armazenamento do servidor

O Mastodon armazena arquivos de exportação em um diretório temporário, geralmente /home/mastodon/live/public/system/export. Se o disco estiver cheio, o Sidekiq não consegue escrever o arquivo. Execute df -h no seu servidor para verificar o uso do disco. Libere espaço removendo exportações antigas ou aumentando o armazenamento.

Exportação de mídia expira em contas grandes

O arquivo de exportação de mídia contém todos os arquivos que você enviou. Uma conta com milhares de imagens pode fazer o trabalhador exceder o timeout padrão de 25 minutos do Sidekiq. Aumente o timeout na sua configuração do Sidekiq ou aconselhe o usuário a solicitar apenas a exportação de postagens.

Cache do navegador mostra um status desatualizado

Mesmo após a exportação ser concluída, seu navegador pode exibir a mensagem antiga “Download pendente”. Limpe o cache do navegador para sua instância do Mastodon ou abra a página de exportação em uma janela privada. Se o link de download aparecer lá, a exportação está pronta.

Tema personalizado ou extensão interfere na interface

Extensões de navegador que modificam a interface web do Mastodon podem ocultar o link de download. Desative todas as extensões temporariamente e recarregue a página de exportação de dados. Se o botão aparecer, reative as extensões uma por uma para encontrar a culpada.

Item Verificação de fila via Sidekiq Verificação de fila via Rails Console
Nível de habilidade necessário Intermediário (requer login de admin) Avançado (SSH e linha de comando)
Tempo para executar 2-5 minutos 5-10 minutos
Remove trabalhos com tentativas Sim, manualmente por trabalho Sim, exclusão em massa por classe
Requer reinicialização do servidor Apenas se o trabalho estiver travado no estado Busy Não
Risco de perda de dados Nenhum Nenhum (exclui apenas o trabalho na fila, não os dados de exportação)

Agora você sabe por que as exportações do Mastodon ficam travadas e como corrigi-las tanto no lado do usuário quanto do administrador. Para usuários comuns, a correção mais rápida é fazer logout e login novamente, e então solicitar a exportação outra vez. Se isso falhar, peça ao seu administrador para limpar a fila do Sidekiq. Administradores de servidor devem primeiro verificar o painel do Sidekiq em busca de trabalhos ExportWorker travados, depois usar o Rails console para limpar todas as exportações pendentes se a fila estiver profundamente bloqueada. Após a correção, verifique se a exportação é concluída em até cinco minutos. Para prevenção contínua, monitore a profundidade da fila do Sidekiq diariamente e reinicie o serviço se a fila exceder 500 trabalhos.