Zammad: Le planificateur ne s'exécute pas en raison d'un descripteur de fichier incorrect dans PGConsumeInput ()

Créé le 11 sept. 2017  ·  23Commentaires  ·  Source: zammad/zammad

Depuis la mise à jour de 1.6.x vers 2.1.x, nous avons remarqué que les mails ne sont plus extraits. C'est à ce moment que nous avons remarqué que le planificateur rencontrait une erreur avec sa connexion PostgreSQL.

Infos:

  • Version Zammad utilisée: 2.1.1-1505128598.ef38800b.jessie
  • Source d'installation de Zammad utilisée: package
  • Système d'exploitation: Debian 8
  • Version PostgreSQL: 9.4.13-0 + deb8u1

Santé

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

Enregistrer

==> /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)

Le PostgreSQL est connectable et fonctionne très bien après.

bug

Commentaire le plus utile

@martini Je peux confirmer que la mise à jour a fait l'affaire. Merci beaucoup!

Je vais essayer de passer à la version 2.0 dans un instant.

Tous les 23 commentaires

Cela se produit généralement lorsqu'il n'y a plus d'espace sur temp ou dans le magasin de données. Je ne pense pas que ce soit lié à Zammad. Le retraçage provient directement de
ActiveRecord

Je suggère de vérifier le système de fichiers (espace et inodes) et d'effectuer une vérification sur la base de données PG.

Éditer:
Que se passe-t-il lorsque vous redémarrez à la fois Scheduler et Postgresql?

Noter:
Veuillez ne pas utiliser la branche develop en production! 2.0 est stable

Le système de fichiers n'a pas l'air presque plein.

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

PostgreSQL ne semble pas avoir de mécanisme de vérification interne. Redémarrer les deux ne change pas la situation.


Je comprends qu'il ne faut pas utiliser la branche de développement, mais nous devions commencer avec la version 1.6 car nous avions besoin de LDAP et oublions d'épingler la version.

PostgreSQL est également clairement opérationnel et accessible. Cela fonctionne également avec les informations d'identification définies dans /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)

Aujourd'hui, j'ai la même chose sur mac os 10.12.6 (mais cela fonctionnait les jours précédents 🤥) avec develop (Zammad 2.1). Tout fonctionne (rails c, rails s, ...) en attendant l'ordonnanceur.

J'ai la même mise à niveau de 1,5 à 2,0 100% d'utilisation du processeur et cette erreur

tail: scheduler_err.log: Datei abgeschnitten
ActiveRecord :: StatementInvalid: PG :: ConnectionBad: PQconsumeInput () n'a pas pu recevoir de données du serveur: descripteur de fichier incorrect
: SELECT "jobs_retardés". * FROM "jobs_retardés"
/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 bloc dans 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 chacun '
/opt/zammad/app/models/scheduler.rb:78:in cleanup' /opt/zammad/app/models/scheduler.rb:24:in threads '
script / scheduler.rb: 66: dans `block in

@Hagelsturm quel système d'

Dans notre cas, c'est script/scheduler.rb start -t .

Dans notre cas, c'est script/scheduler.rb start -t

C'est aussi de mon côté. Normalement, le planificateur s'exécute en mode démon ( script/scheduler.rb start ou script/scheduler.rb stop ).

script/scheduler.rb start -t n'est généralement utilisé que pour les développeurs car le planificateur ne s'exécute pas en arrière-plan (en tant que démon).

@mweinelt Une question pour moi est, pourquoi vous utilisez -t ?

JFI: Le planificateur fonctionne très bien pour moi en arrière-plan (en tant que démon).

J'utilise 2.1.1-1505985142.807a1d88.jessie car j'ai oublié d'épingler une version stable. L'option -t doit provenir des fichiers de service, je n'ai rien changé à cet égard.

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 $@

J'utilise Debian 8 hier, j'essaye aussi la version 9
Mais l'erreur c'est la même
Je ne modifie rien le -t vient du paquet pas de moi

Le processus avec 100% est Ruby
script / scheduler.rb start -t
Chaque fois démarre et plante

à partir de scheduler.rb --help:

  • "-t, --ontop Reste au top (ne démonise pas)"

Peut-être que le planificateur plante tout le temps
Die You Pensez que la raison en est le paramètre ontop?

@Hagelsturm
Non, je voulais juste clarifier ce qu'il fait. Je n'ai pas vu la réponse de Martinis.
La démonisation est effectuée par systemd donc normalement ce n'est pas un problème.

@martini
Si je me souviens bien, "-t" est utilisé parce que systemd pense que le planificateur a échoué et s'est arrêté lorsqu'il entre en arrière-plan à partir du fichier d'unité.

@mweinelt
Si vous utilisez 2.1.1, vous êtes dans le repo de développement.
Il n'y a aucun moyen d'y épingler un package stable.
Utilisez le référentiel stable pour obtenir des packages stables: https://packager.io/gh/zammad/zammad/builds/2414/install/debian-8

@monotek
La configuration de Type=forking devrait permettre de démarrer sans -t si je ne me trompe pas.

Concernant la rétrogradation vers une version stable (2.0.x):
Je devrais annuler certaines migrations si je n'ai pas de sauvegarde récente, n'est-ce pas?

Merci pour l'indice. J'essaierai de le changer plus tard. Je ne sais pas si possible dans packager.io.

ok j'utilise la version 2.0 maintenant
mais maintenant j'ai un problème avec le canal de messagerie

Email :: Notification out Impossible d'utiliser Channel :: Driver :: Smtp: # <: econnrefused: i = "6">

Je ne peux pas vérifier les paramètres car le compte est vide :-(

ticket
la chaîne est active mais n'a pas été récupérée pendant 1 heure
Channel: Email :: Notification out Impossible d'utiliser Channel :: Driver :: Smtp: # <: econnrefused: i = "7">

comment son possible de définir est nouveau sur le cli?

@Hagelsturm essayez de vérifier vos paramètres smtp, probablement le paramètre d'hôte pour SMTP dans les paramètres de votre canal de messagerie n'est pas là. De plus, puisque votre problème est un nouveau problème, vous devez créer un nouveau problème?

Salut! Le même problème ici. J'arrive ici à partir du # 1473. J'ai installé la version 2.0 mais je n'ai pas pu ajouter de nouveau compte de messagerie sur la configuration du canal de messagerie, peut-être lié au dernier commentaire de @Hagelsturm.

Je devrais annuler certaines migrations si je n'ai pas de sauvegarde récente, n'est-ce pas?

@mweinelt désolé, je n'ai pas vu ce commentaire. Pour le moment, il n'y a pas de migration de base de données entre stable et develop. Donc, pour l'instant, vous pouvez basculer entre stable / master et développer sans problème.

Quoi qu'il en soit, il semble que j'ai résolu le problème "Mauvais descripteur de fichier dans PGConsumeInput". Donc, si vous mettez à jour, développez d'abord (avant de revenir à stable), ce serait bien!

Merci pour vos commentaires!

-Martin

@Hagelsturm JFI votre problème de courrier électronique a noté que ce problème de planificateur a

@martini Je peux confirmer que la mise à jour a fait l'affaire. Merci beaucoup!

Je vais essayer de passer à la version 2.0 dans un instant.

Cette page vous a été utile?
0 / 5 - 0 notes