Non prise en compte de la balise `genie` d'un paquet.xml lors du vidage de cache
#3860
Closed
opened 6 years ago by marcimat
·
6 comments
No Branch/Tag Specified
1.8
1.9.1
1.9.2
2.0
2.1
3.0
3.1
3.2
4.0
4.1
4.2
boutons-danger
coquille_doc
debug_ecrire_fichier
dev-sortable
dev/autoloader
dev/hasard_fixe
dev/instituer_ergo
dev/issue_5447_exporter_csv
dev_infos_image
fix/valider_url_distante
fix_issue_5454
fix_modifier_login
issue_4101
issue_4678
issue_4705
issue_4717
issue_4836
issue_4946
issue_5258
issue_5344
issue_5427_bis
master
v1.8.3+b
v1.9.1+i
v1.9.2+f
v1.9.2+g
v1.9.2+h
v1.9.2+i
v1.9.2+j
v1.9.2+k
v1.9.2+m
v1.9.2+n
v1.9.2+o
v1.9.2+p
v2.0.0
v2.0.1
v2.0.10
v2.0.11
v2.0.12
v2.0.13
v2.0.14
v2.0.15
v2.0.16
v2.0.17
v2.0.18
v2.0.19
v2.0.2
v2.0.20
v2.0.21
v2.0.22
v2.0.23
v2.0.24
v2.0.25
v2.0.26
v2.0.3
v2.0.5
v2.0.6
v2.0.7
v2.0.8
v2.0.9
v2.1.0
v2.1.1
v2.1.10
v2.1.11
v2.1.12
v2.1.13
v2.1.14
v2.1.15
v2.1.16
v2.1.17
v2.1.18
v2.1.19
v2.1.2
v2.1.20
v2.1.21
v2.1.22
v2.1.23
v2.1.24
v2.1.25
v2.1.26
v2.1.27
v2.1.28
v2.1.29
v2.1.3
v2.1.30
v2.1.4
v2.1.5
v2.1.6
v2.1.7
v2.1.8
v2.1.9
v3.0.0
v3.0.0-alpha.1
v3.0.0-beta
v3.0.0-beta.2
v3.0.0-rc
v3.0.1
v3.0.10
v3.0.11
v3.0.12
v3.0.13
v3.0.14
v3.0.15
v3.0.16
v3.0.17
v3.0.18
v3.0.19
v3.0.2
v3.0.20
v3.0.21
v3.0.22
v3.0.23
v3.0.24
v3.0.25
v3.0.26
v3.0.27
v3.0.28
v3.0.3
v3.0.4
v3.0.5
v3.0.6
v3.0.7
v3.0.8
v3.0.9
v3.1.0
v3.1.0-alpha
v3.1.0-beta
v3.1.0-rc
v3.1.0-rc.2
v3.1.0-rc.3
v3.1.1
v3.1.10
v3.1.11
v3.1.12
v3.1.13
v3.1.14
v3.1.15
v3.1.2
v3.1.3
v3.1.4
v3.1.5
v3.1.6
v3.1.7
v3.1.8
v3.1.9
v3.2-alpha.1
v3.2.0
v3.2.0-alpha.1
v3.2.0-beta
v3.2.0-beta.2
v3.2.0-beta.3
v3.2.1
v3.2.10
v3.2.11
v3.2.12
v3.2.13
v3.2.14
v3.2.15
v3.2.16
v3.2.17
v3.2.2
v3.2.3
v3.2.4
v3.2.5
v3.2.6
v3.2.7
v3.2.8
v3.2.9
v4.0.0
v4.0.0-alpha
v4.0.0-beta
v4.0.1
v4.0.2
v4.0.3
v4.0.4
v4.0.5
v4.0.6
v4.0.7
v4.0.8
v4.0.9
v4.1.0
v4.1.0-alpha
v4.1.0-beta
v4.1.0-rc
v4.1.1
v4.1.2
v4.1.3
v4.1.4
v4.1.5
v4.1.6
v4.1.7
v4.2.0-alpha
v4.2.0-alpha2
Labels
Amélioration, nouvelle fonctionnalité APIs authentification base de données bug
Ca ne fonctionne pas code généré compilo css divers documentation doublon
Ce ticket est un doublon ergonomie espace privé filtres et balises formulaires Inscription installation invalide
Ticket invalide javascript langues LDAP plugin PostgreSQL refusé
Ignoré, c'est comme Ca... sécurité traduction
Apply labels
Clear labels
accessibilité
amélioration
Amélioration, nouvelle fonctionnalité APIs authentification base de données bug
Ca ne fonctionne pas code généré compilo css divers documentation doublon
Ce ticket est un doublon ergonomie espace privé filtres et balises formulaires Inscription installation invalide
Ticket invalide javascript langues LDAP plugin PostgreSQL refusé
Ignoré, c'est comme Ca... sécurité traduction
No Label
accessibilité
amélioration
APIs
authentification
base de données
bug
code généré
compilo
css
divers
documentation
doublon
ergonomie
espace privé
filtres et balises
formulaires
Inscription
installation
invalide
javascript
langues
LDAP
plugin
PostgreSQL
refusé
sécurité
traduction
Milestone
Set milestone
Clear milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
Assign users
Clear assignees
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.
No due date set.
Dependencies
This issue currently doesn't have any dependencies.
Reference in new issue
There is no content yet.
Delete Branch '%!s(MISSING)'
Deleting a branch is permanent. It CANNOT be undone. Continue?
No
Yes
La balise
genie
dans un paquet.xml n'ajoute pas l'entrée adéquat dans tmp/charger_pipelines.phpdès lors qu'on vide le cache. Il faut repasser sur la page admin_plugins pour qu'elle soit prise en compte.
Le problème vient du code suivant :
Effectivement à ce moment là, le chemin des plugins n'est pas encore pris en compte par SPIP et du coup, le charger_fonction() retourne toujours false.
Je vois deux possibilités pour corriger :
A) Ignorer ce if tout simplement, considérant que job_queue écrira un log (certes pas du niveau _LOG_ERREUR) en cas où il ne trouve pas la fonction demandée
B) Remonter le chargement des chemins des plugins : il est effectué juste avant le chargement des fichiers d'options, à la fin de la fonction.
La partie de chargement des chemins (
include_once(_CACHE_PLUGINS_PATH);
) pourrait être monté en tête de cette fonction, au niveau de$prepend_code = array();
Des avis ?
Pour info, le code pour la balise genie a été introduit par https://core.spip.net/projects/spip/repository/revisions/21828
Le déplacement des chargements des chemins et fichiers d'options en bas de cette fonction vient de https://core.spip.net/projects/spip/repository/revisions/15433
Dans le cas de B), on pourrait même peut être monter les 2 chargements : chemins & options.
Effectivement, les fichiers d'options peuvent aussi déclarer des chemins alors du coup…
Je pensais bien déplacer plus haut le chargement des chemins et options (le point B que j'indiquais).
Mais. Cela pourrait potentiellement impacter des plugins qui attendent d'avoir dans leur fichier d'option un 'spip_pipeline' un peu rempli.
Mais je vois 1 plugin (1 seul sur la zone il me semble) que ma pourrait impacter : Fastcache. (En fait non car Mutualisation déclare son pipeline dans son fichier d'option aussi donc, ça ne s'applique pas pour lui) mais je le mets pour l'exemple : si je remonte un peu le chargement des fichiers d'options, la globale 'spip_pipeline' ne sera pas remplie par les pipelines déclarés dans les plugin.xml ou paquet.xml des plugins à activer.
Or, dans Fastcache on a cette écriture :
On peut peut être du coup supposer que d'autres plugins dans la nature font de même ?
Ça se mord un peu la queue tout de même, vu que le fichier de chargement des pipelines (tmp/cache/charger_pipelines) pourrait aussi avoir besoin d'infos qui sont chargées dans les fichiers d'options de plugins. En tout cas là pour cette balise
<genie>
tel que c'est codé il en a besoin (des chemins au moins).Cependant je serai d'avis tout de même de recharger les chemins et options plus tôt (spip_pipeline sera presque vide dans les fichiers d'options), en considérant que le fichier d'option sert à remplir justement ce fichier de pipeline, pas à modifier des fonctions qu'ont demandé d'autres plugins.
Voici un patch, pour voir ce que j'indique en B donc, en pièce jointe.
Voir r23258 donc. De ce que je comprends l'effet de bord du patch ne me semble pas problématique, on devrait pouvoir reporter le patch en 3.1, merci marcimat :)
Reporté par r23304 dans la branche 3.1.
Faudra vérifier que ça ne casse rien :)
Statut changé à Résolu
Merci mignon :) (on ferme)
Statut changé à Fermé