Zammad: O agendador não está funcionando devido ao descritor de arquivo inválido em PGConsumeInput ()

Criado em 11 set. 2017  ·  23Comentários  ·  Fonte: zammad/zammad

Desde a atualização de 1.6.x para 2.1.x notamos que os e-mails não estão mais sendo puxados. Foi quando percebemos que o planejador estava executando um erro com sua conexão PostgreSQL.

Infos:

  • Versão Zammad usada: 2.1.1-1505128598.ef38800b.jessie
  • Fonte de instalação Zammad usada: pacote
  • Sistema operacional: Debian 8
  • Versão do PostgreSQL: 9.4.13-0 + deb8u1

Saúde

channel is active but not fetched for 1 hour
channel is active but not fetched for 1 hour
channel is active but not fetched for 1 hour
channel is active but not fetched for 1 hour
scheduler not running

Registro

==> /var/log/zammad/scheduler_err.log <==
ActiveRecord::StatementInvalid: PG::ConnectionBad: PQconsumeInput() could not receive data from server: Bad file descriptor
: SELECT "delayed_jobs".* FROM "delayed_jobs"
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `async_exec'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `block in exec_no_cache'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract_adapter.rb:590:in `block in log'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.5/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract_adapter.rb:583:in `log'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in `exec_no_cache'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:585:in `execute_and_clear'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql/database_statements.rb:103:in `exec_query'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract/database_statements.rb:377:in `select_prepared'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract/database_statements.rb:39:in `select_all'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract/query_cache.rb:95:in `select_all'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/querying.rb:39:in `find_by_sql'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation.rb:702:in `exec_queries'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation.rb:583:in `load'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation.rb:260:in `records'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation/delegation.rb:38:in `each'
  /opt/zammad/app/models/scheduler.rb:78:in `cleanup'
  /opt/zammad/app/models/scheduler.rb:24:in `threads'
  script/scheduler.rb:66:in `block in <top (required)>'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons/application.rb:266:in `block in start_proc'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons/application.rb:275:in `start_proc'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons/application.rb:296:in `start'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons/controller.rb:56:in `run'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons.rb:197:in `block in run_proc'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons/cmdline.rb:92:in `catch_exceptions'
  /opt/zammad/vendor/bundle/ruby/2.4.0/gems/daemons-1.2.4/lib/daemons.rb:196:in `run_proc'
  script/scheduler.rb:49:in `<top (required)>'
==> /var/log/zammad/scheduler_out.log <==
bundler: failed to load command: script/scheduler.rb (script/scheduler.rb)

O PostgreSQL pode ser conectado e está funcionando bem.

bug

Comentários muito úteis

@martini , posso confirmar que a atualização funcionou. Muito obrigado!

Vou tentar um downgrade para 2.0 em breve.

Todos 23 comentários

Isso geralmente acontece quando não há espaço restante na temp ou no armazenamento de dados. Não acho que isso seja relacionado a Zammad. O traceback é diretamente de
ActiveRecord

Sugiro verificar o sistema de arquivos (espaço e inodes) e realizar uma verificação no banco de dados do PG.

Editar:
O que acontece quando você reinicia o Scheduler e o Postgresql?

Observação:
Por favor, não use o ramo de desenvolvimento na produção! 2.0 é estável

O sistema de arquivos não parece nem perto de estar cheio.

hexa<strong i="6">@tickets</strong>:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  6.2G   13G  34% /
udev             10M     0   10M   0% /dev
tmpfs           502M   45M  457M   9% /run
tmpfs           1.3G   16K  1.3G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           1.3G     0  1.3G   0% /sys/fs/cgroup
tmpfs           251M     0  251M   0% /run/user/2000
hexa<strong i="7">@tickets</strong>:~$ df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/xvda1     1310720 97329 1213391    8% /
udev            314738   268  314470    1% /dev
tmpfs           320664   313  320351    1% /run
tmpfs           320664     5  320659    1% /dev/shm
tmpfs           320664     3  320661    1% /run/lock
tmpfs           320664    13  320651    1% /sys/fs/cgroup
tmpfs           320664     4  320660    1% /run/user/2000

O PostgreSQL não parece ter nenhuma mecânica de verificação interna. Reiniciar ambos não muda a situação.


Eu entendo que não devemos usar o branch de desenvolvimento, mas precisávamos começar com 1.6 já que exigíamos o LDAP e depois esquecer de fixar a versão.

Além disso, o PostgreSQL está claramente ativo e acessível. Isso também funciona com as credenciais definidas em /opt/zammad/config/database.yml .

root<strong i="7">@tickets</strong>:/home/hexa# sudo -u postgres psql
psql (9.4.13)
Type "help" for help.

postgres=# \connect zammad
You are now connected to database "zammad" as user "postgres".

zammad=# \dt
                      List of relations
 Schema |                Name                | Type  | Owner  
--------+------------------------------------+-------+--------
 public | activity_streams                   | table | zammad
 public | ar_internal_metadata               | table | zammad
 public | authorizations                     | table | zammad
 public | avatars                            | table | zammad
 public | calendars                          | table | zammad
 public | channels                           | table | zammad
 public | chat_agents                        | table | zammad
 public | chat_messages                      | table | zammad
 public | chat_sessions                      | table | zammad
 public | chat_topics                        | table | zammad
 public | chats                              | table | zammad
 public | cti_caller_ids                     | table | zammad
 public | cti_logs                           | table | zammad
 public | delayed_jobs                       | table | zammad
 public | email_addresses                    | table | zammad
 public | external_credentials               | table | zammad
 public | external_syncs                     | table | zammad
 public | groups                             | table | zammad
 public | groups_users                       | table | zammad
 public | histories                          | table | zammad
 public | history_attributes                 | table | zammad
 public | history_objects                    | table | zammad
 public | history_types                      | table | zammad
 public | http_logs                          | table | zammad
 public | import_jobs                        | table | zammad
 public | jobs                               | table | zammad
 public | karma_activities                   | table | zammad
 public | karma_activity_logs                | table | zammad
 public | karma_users                        | table | zammad
 public | link_objects                       | table | zammad
 public | link_types                         | table | zammad
 public | links                              | table | zammad
 public | locales                            | table | zammad
 public | macros                             | table | zammad
 public | network_categories                 | table | zammad
 public | network_categories_moderator_users | table | zammad
 public | network_category_subscriptions     | table | zammad
 public | network_category_types             | table | zammad
 public | network_item_comments              | table | zammad
 public | network_item_plus                  | table | zammad
 public | network_item_subscriptions         | table | zammad
 public | network_items                      | table | zammad
 public | network_privacies                  | table | zammad
 public | networks                           | table | zammad
 public | notifications                      | table | zammad
 public | oauth_access_grants                | table | zammad
 public | oauth_access_tokens                | table | zammad
 public | oauth_applications                 | table | zammad
 public | object_lookups                     | table | zammad
 public | object_manager_attributes          | table | zammad
 public | online_notifications               | table | zammad
 public | organizations                      | table | zammad
 public | organizations_users                | table | zammad
 public | overviews                          | table | zammad
 public | overviews_groups                   | table | zammad
 public | overviews_roles                    | table | zammad
 public | overviews_users                    | table | zammad
 public | package_migrations                 | table | zammad
 public | packages                           | table | zammad
 public | permissions                        | table | zammad
 public | permissions_roles                  | table | zammad
 public | postmaster_filters                 | table | zammad
 public | recent_views                       | table | zammad
 public | report_profiles                    | table | zammad
 public | roles                              | table | zammad
 public | roles_groups                       | table | zammad
 public | roles_users                        | table | zammad
 public | schedulers                         | table | zammad
 public | schema_migrations                  | table | zammad
 public | sessions                           | table | zammad
 public | settings                           | table | zammad
 public | signatures                         | table | zammad
 public | slas                               | table | zammad
 public | stats_stores                       | table | zammad
 public | store_files                        | table | zammad
 public | store_objects                      | table | zammad
 public | store_provider_dbs                 | table | zammad
 public | stores                             | table | zammad
 public | tag_items                          | table | zammad
 public | tag_objects                        | table | zammad
 public | tags                               | table | zammad
 public | taskbars                           | table | zammad
 public | templates                          | table | zammad
 public | templates_groups                   | table | zammad
 public | text_modules                       | table | zammad
 public | text_modules_groups                | table | zammad
 public | ticket_article_flags               | table | zammad
 public | ticket_article_senders             | table | zammad
 public | ticket_article_types               | table | zammad
 public | ticket_articles                    | table | zammad
 public | ticket_counters                    | table | zammad
 public | ticket_flags                       | table | zammad
 public | ticket_priorities                  | table | zammad
 public | ticket_state_types                 | table | zammad
 public | ticket_states                      | table | zammad
 public | ticket_time_accountings            | table | zammad
 public | tickets                            | table | zammad
 public | tokens                             | table | zammad
 public | translations                       | table | zammad
 public | triggers                           | table | zammad
 public | type_lookups                       | table | zammad
 public | user_devices                       | table | zammad
 public | users                              | table | zammad
(103 rows)

Hoje tenho o mesmo no mac os 10.12.6 (mas estava funcionando nos dias anteriores 🤥) com o Develop (Zammad 2.1). Tudo está funcionando (rails c, rails s, ...) esperando o escalonador.

Eu tenho a mesma atualização de 1,5 para 2,0 100% de uso da CPU e este erro

cauda: scheduler_err.log: Datei abgeschnitten
ActiveRecord :: StatementInvalid: PG :: ConnectionBad: PQconsumeInput () não pôde receber dados do servidor: Descritor de arquivo incorreto
: SELECT "delayed_jobs". * FROM "delayed_jobs"
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in async_exec' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in bloco em exec_no_cache '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract_adapter.rb:590:in block in log' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activesupport-5.0.5/lib/active_support/notifications/instrumenter.rb:21:in instrument '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract_adapter.rb:583:in log' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:598:in exec_no_cache '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql_adapter.rb:585:in execute_and_clear' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/postgresql/database_statements.rb:103:in exec_query '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract/database_statements.rb:377:in select_prepared' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract/database_statements.rb:39:in select_all '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/connection_adapters/abstract/query_cache.rb:95:in select_all' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/querying.rb:39:in find_by_sql '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation.rb:702:in exec_queries' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation.rb:583:in load '
/opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation.rb:260:in records' /opt/zammad/vendor/bundle/ruby/2.4.0/gems/activerecord-5.0.5/lib/active_record/relation/delegation.rb:38:in each '
/opt/zammad/app/models/scheduler.rb:78:in cleanup' /opt/zammad/app/models/scheduler.rb:24:in threads '
script / scheduler.rb: 66: em `bloco em

@Hagelsturm qual

No nosso caso, é script/scheduler.rb start -t .

No nosso caso, é script/scheduler.rb start -t

Isso também está do meu lado. Normalmente o agendador está rodando em modo daemon ( script/scheduler.rb start ou script/scheduler.rb stop ).

script/scheduler.rb start -t geralmente é usado apenas para desenvolvedores porque o planejador não está sendo executado em segundo plano (como daemon).

@mweinelt Uma pergunta para mim é: por que você está usando -t ?

JFI: O planejador está funcionando bem para mim em segundo plano (como daemon).

Estou executando 2.1.1-1505985142.807a1d88.jessie porque esqueci de fixar em uma versão estável. A opção -t deve vir dos arquivos de serviço, não mudei nada a esse respeito.

root<strong i="8">@tickets</strong>:/opt/zammad# grep -ri "scheduler.rb start" *
contrib/systemd/zammad-scheduler.service:ExecStart=/bin/bash -l -c "${BUNDLE_BINARY} exec script/scheduler.rb start -t"
Procfile:worker: bundle exec script/scheduler.rb start -t
Procfile.frontend:worker: bundle exec ruby script/scheduler.rb start -t
script/init-script-normal-user-rvm-fedora:    script/scheduler.rb start &> /dev/null && echo_success || echo_failure
script/init.d/zammad:  execute "RAILS_ENV=production script/scheduler.rb start $SCHEDULER_OPTS"
script/build/test_startup.sh:bundle exec script/scheduler.rb start
script/local_browser_tests.sh:script/scheduler.rb start
vendor/pkgr/processes/worker:exec bundle exec script/scheduler.rb start -t $@

Eu uso o Debian 8 ontem, tento a versão 9 também
Mas o erro é o mesmo
Eu não modifico nada o -t veio do pacote e não de mim

O processo com 100% é Ruby
script / scheduler.rb start -t
Everytime está começando e travando

de scheduler.rb --help:

  • "-t, --ontop Fique por dentro (não daemoniza)"

Talvez, mas o Scheduler trava o tempo todo
Die You Think que a razão é o parâmetro ontop?

@Hagelsturm
Não, só queria esclarecer o que ele faz. Não vi a resposta dos martinis.
A daemonização é feita pelo systemd, então normalmente não há problema.

@martini
Se bem me lembro, "-t" é usado porque o systemd pensa que o planejador falhou e parou quando ele vai para o backround do arquivo de unidade.

@mweinelt
Se você estiver usando 2.1.1, você está no repositório de desenvolvimento.
Não há como fixar um pacote estável ali.
Use o repositório estável para obter pacotes estáveis: https://packager.io/gh/zammad/zammad/builds/2414/install/debian-8

@monotek
Definir Type=forking deve permitir começar sem -t se não estiver errado.

Em relação ao downgrade para uma versão estável (2.0.x):
Eu teria que reverter algumas migrações se não tivesse um backup recente, certo?

Obrigado pela dica. Vou tentar mudar mais tarde. Não tenho certeza se possível em packager.io.

ok eu uso a versão 2.0 agora
mas agora eu tenho um problema com o canal de e-mail

Email :: Saída de notificação Não é possível usar Canal :: Driver :: Smtp: # <: econnrefused: i = "6">

Não consigo verificar as configurações porque a conta está vazia :-(

ticket
o canal está ativo, mas não foi buscado por 1 hora
Canal: E-mail :: Saída de notificação Não é possível usar Canal :: Driver :: Smtp: # <: econnrefused: i = "7">

como é possível definir é novo no cli?

@Hagelsturm tente verificar suas configurações de smtp, provavelmente o parâmetro de host para SMTP em suas configurações de canal de e-mail não está lá. Além disso, como seu problema é um problema novo, você deve criar um novo problema?

Olá! O mesmo problema aqui. Eu chego aqui do # 1473. Instalei a versão 2.0 mas não consegui adicionar uma nova conta de e-mail na configuração do canal de e-mail, talvez relacionado ao último comentário de @Hagelsturm.

Eu teria que reverter algumas migrações se não tivesse um backup recente, certo?

@mweinelt desculpe, não vi esse feedback. No momento não há migrações de banco de dados entre stable e development. Portanto, agora você pode alternar entre estável / mestre e desenvolver sem problemas.

De qualquer forma, parece que resolvi o problema "Descritor de arquivo inválido em PGConsumeInput". Portanto, se você atualizar o desenvolvimento primeiro (antes de voltar ao estável), tudo bem!

Obrigado pelo feedback!

-Martin

@Hagelsturm JFI seu problema de e-mail não tem

@martini , posso confirmar que a atualização funcionou. Muito obrigado!

Vou tentar um downgrade para 2.0 em breve.

Esta página foi útil?
0 / 5 - 0 avaliações