Question

Il y a un bug très étrange qui se produit sur l'un de nos sites Web clients, et nous n'avons pas pu comprendre ce qui se passe. C'est difficile.

Le problème


En termes simples, Drupal charge le mauvais fichier JavaScript. Nous avons un thème personnalisé pour le site. Dans le fichier .info du thème, il y a cette ligne:

scripts[] = script/script.js

Il y a quelques semaines, nous avons mis à jour le fichier .info. Le fichier .info d'origine contenait:

scripts[] = script/script-min.js

Le script et les fichiers de script-mini sont des fichiers complètement différents, et le serveur doit charger le script.js dossier.

Voici le comportement que nous assistons:

  • Lorsque nous rincer le cache du thème, Drupal se lit dans le fichier .info et charge script.js
  • Après que Cron fonctionne (toutes les 5 minutes), Drupal décidera au hasard de charger script-min.js
  • Si nous vérifions la base de données, la system Le tableau montre que Drupal a mis en cache script-min.js

Il convient de noter que rien dans le code ne charge le script-moins.js. Nous avons grimpé et nous ne pouvons pas trouver où Drupal essaierait même de charger le fichier. Le fichier script-mini.js existe dans le répertoire de script le long du fichier script.js, mais il n'est rien référencé.

Notre configuration


  • Acquia cloud hébergement avec git et php 5.3+
  • 3 environnements (Dev, Stage, Production)
  • L'environnement de production a deux serveurs Web, un équilibreur, un vernis et un mysql. Les serveurs Web utilisent le système de fichiers Gluster pour synchroniser les fichiers
  • Ce problème ne semble pas apparaître sur nos serveurs Dev / Stage

Ce que nous avons essayé


Aucun de ces correctifs n'a fonctionné:

  • Rebuilding Registry
  • Suppression du fichier script-moins.js
  • Cibler les IP du serveur Web pour exclure un problème avec la configuration à double serveur
  • Effacer toutes les caches
  • Effacer le cache de vernis

Pourquoi nous avons besoin d'aide


Nous essayons de diagnostiquer ce problème depuis près de deux semaines maintenant, et nous manquons des idées évidentes. Notre théorie principale en ce moment est que leur peut être un problème avec les deux serveurs Web, mais de tous nos tests, cela ne semble pas être le cas ... mais a le plus de sens.

Nous sommes conscients que nous pourrions probablement amener le serveur à utiliser le bon fichier JS en utilisant simplement drupal_add_js au lieu de la méthode .info, mais nous voulons vraiment savoir Pourquoi Le serveur charge un fichier que nous ne le disons pas.

Modification


Ces modules implémentent hook_cron () sur le site: acquia_agent, acquia_spi, ctools, dblog, champ, googleanalytics, nœud, planificateur, système, mise à jour, xmlsitemap_node, xmlsitemap, xmlsitemap_engines

J'ai déjà vérifié, et pendant Cron, le drupal_clear_js_cache, system_rebuild_theme_data, et drupal_theme_rebuild Les fonctions sont ne pas succès. Mes hypothèses originales avaient à voir avec ces fonctions, mais si elles ne fonctionnent pas pendant Cron, elles ne sont probablement pas le problème.

Nous pensons que le problème pourrait être lié à ce rapport de bogue: http://drupal.org/node/1765812

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à drupal.stackexchange
scroll top