[SPIP Zone] r111634 - in _plugins_/memoization/trunk casse l'installation de SPIP si dans plugins-dist

spip-zone-commit@rezo.net a écrit le 20/09/2018 à 13:09 :

Author: cedric@yterium.com
Date: 2018-09-20 11:09:57 +0000 (Thu, 20 Sep 2018)
New Revision: 111634
Details: Connexion · GitLab

Cette révision empêche d'installer SPIP dans le cas suivant :
plugin memoization placé dans plugins-dist
Testé hors et dans un mutualisation de SPIP 3.2.1

À ce moment là, on a cette call stack (en mettant ligne 202 de ecrire/base/connec_sql.php
  + debug_print_backtrace();
  include_spip('inc/minipres');
  echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'), array('status' => 503));
  exit;

)
#0 spip_connect_sql(1, select, , ) called at [/var/www/_mutualisation_32/www/ecrire/base/abstract_sql.php:107]
#1 sql_serveur(select, , ) called at [/var/www/_mutualisation_32/www/ecrire/base/abstract_sql.php:242]
#2 sql_select(valeur, spip_meta, nom='secret_du_site', Array (), Array (), , Array (), , 1) called at [/var/www/_mutualisation_32/www/ecrire/base/abstract_sql.php:1603]
#3 sql_fetsel(valeur, spip_meta, nom='secret_du_site', Array (), Array (), , Array (), , 1) called at [/var/www/_mutualisation_32/www/ecrire/base/abstract_sql.php:1750]
#4 sql_getfetsel(valeur, spip_meta, nom='secret_du_site') called at [/var/www/_mutualisation_32/www/ecrire/inc/securiser_action.php:256]
#5 secret_du_site() called at [/var/www/_mutualisation_32/www/ecrire/inc/securiser_action.php:279]
#6 calculer_cle_action(memoization) called at [/var/www/_mutualisation_32/www/plugins-dist/_soyezcreateurs_/memoization/memoization_options.php:127]
#7 include_once(/var/www/_mutualisation_32/www/plugins-dist/_soyezcreateurs_/memoization/memoization_options.php) called at [/var/www/_mutualisation_32/www/ecrire/inc/utils.php:118]
#8 include_once_check(/var/www/_mutualisation_32/www/plugins-dist/_soyezcreateurs_/memoization/memoization_options.php) called at [/var/www/_mutualisation_32/www/sites/bird/tmp/cache/charger_plugins_options.php:5]
#9 include_once(/var/www/_mutualisation_32/www/sites/bird/tmp/cache/charger_plugins_options.php) called at [/var/www/_mutualisation_32/www/ecrire/inc_version.php:444]
#10 include(/var/www/_mutualisation_32/www/ecrire/inc_version.php) called at [/var/www/_mutualisation_32/www/ecrire/index.php:22]

Et c'est le drame, ligne 127 de memoization_options.php
$key = pack("H*", calculer_cle_action('memoization'));
fini par provoquer un appel à MySQL
qui plante l'installation :frowning:

comme je ne sais pas comment gérer ça, je ne touche à rien.

Cerdic, tu vois comment gérer ça ?

PS : pour tester, il faut supprimer dans le cache charger_plugins_options.php et sans doute plugin_xml_cache.gz

--
RealET

  Le 09/10/2018 à 22:12, RealET a écrit :

spip-zone-commit@rezo.net a écrit le 20/09/2018 à 13:09 :

Author: cedric@yterium.com
Date: 2018-09-20 11:09:57 +0000 (Thu, 20 Sep 2018)
New Revision: 111634
Details: Connexion · GitLab

L'identifiant _CACHE_KEY calculé par pack("H*", calculer_cle_action('memoization'));
est un binaire et bien que la base soit utf8,
sur mon hébergement MYSQL ne parvient pas à l'enregistrer dans la table meta.

Il n'y a pas d'erreur, mais la valeur reste vide.

Et du coup, il y avait plus tard une boucle infinie (pas nul) et un plantage,
ce qu'a corrigé le commit Connexion · GitLab
Tu as bien la dernière version de memoization ?

Sur ton hébergement, il est possible que l'enregistrement d'un binaire soit moins bien toléré que sur le mien...

Par ailleurs, ce fix corrige le plantage du à la boucle infinie,
mais ne change rien au fait que la _CACHE_KEY est vide, car mal enregistrée,
et que donc les données APCU ne sont pas codées.
(Sur mon hébergement, les caches ne sont pas partagés donc ce n'est pas un pb).

Ayant exposé le pb à cerdic lors de la Dromen party, il avait évoqué la possibilité d'encoder le _CACHE_KEY en base64 avant de le stocker en BDD...

JLuc

Cette révision empêche d'installer SPIP dans le cas suivant :
plugin memoization placé dans plugins-dist
Testé hors et dans un mutualisation de SPIP 3.2.1

À ce moment là, on a cette call stack (en mettant ligne 202 de ecrire/base/connec_sql.php
+ debug_print_backtrace();
include_spip('inc/minipres');
echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'), array('status' => 503));
exit;

)
#0 spip_connect_sql(1, select, , ) called at [/var/www/_mutualisation_32/www/ecrire/base/abstract_sql.php:107]
#1 sql_serveur(select, , ) called at [/var/www/_mutualisation_32/www/ecrire/base/abstract_sql.php:242]
#2 sql_select(valeur, spip_meta, nom='secret_du_site', Array (), Array (), , Array (), , 1) called at [/var/www/_mutualisation_32/www/ecrire/base/abstract_sql.php:1603]
#3 sql_fetsel(valeur, spip_meta, nom='secret_du_site', Array (), Array (), , Array (), , 1) called at [/var/www/_mutualisation_32/www/ecrire/base/abstract_sql.php:1750]
#4 sql_getfetsel(valeur, spip_meta, nom='secret_du_site') called at [/var/www/_mutualisation_32/www/ecrire/inc/securiser_action.php:256]
#5 secret_du_site() called at [/var/www/_mutualisation_32/www/ecrire/inc/securiser_action.php:279]
#6 calculer_cle_action(memoization) called at [/var/www/_mutualisation_32/www/plugins-dist/_soyezcreateurs_/memoization/memoization_options.php:127]
#7 include_once(/var/www/_mutualisation_32/www/plugins-dist/_soyezcreateurs_/memoization/memoization_options.php) called at [/var/www/_mutualisation_32/www/ecrire/inc/utils.php:118]
#8 include_once_check(/var/www/_mutualisation_32/www/plugins-dist/_soyezcreateurs_/memoization/memoization_options.php) called at [/var/www/_mutualisation_32/www/sites/bird/tmp/cache/charger_plugins_options.php:5]
#9 include_once(/var/www/_mutualisation_32/www/sites/bird/tmp/cache/charger_plugins_options.php) called at [/var/www/_mutualisation_32/www/ecrire/inc_version.php:444]
#10 include(/var/www/_mutualisation_32/www/ecrire/inc_version.php) called at [/var/www/_mutualisation_32/www/ecrire/index.php:22]

Et c'est le drame, ligne 127 de memoization_options.php
$key = pack("H*", calculer_cle_action('memoization'));
fini par provoquer un appel à MySQL
qui plante l'installation :frowning:

comme je ne sais pas comment gérer ça, je ne touche à rien.

Cerdic, tu vois comment gérer ça ?

PS : pour tester, il faut supprimer dans le cache charger_plugins_options.php et sans doute plugin_xml_cache.gz

JLuc a écrit le 09/10/2018 à 23:25 :

Le 09/10/2018 à 22:12, RealET a écrit :

spip-zone-commit@rezo.net a écrit le 20/09/2018 à 13:09 :

Author: cedric@yterium.com
Date: 2018-09-20 11:09:57 +0000 (Thu, 20 Sep 2018)
New Revision: 111634
Details: Connexion · GitLab

L'identifiant _CACHE_KEY calculé par pack("H*", calculer_cle_action('memoization'));
est un binaire et bien que la base soit utf8,
sur mon hébergement MYSQL ne parvient pas à l'enregistrer dans la table meta.

Ton cas est différent du miens : tu as déjà config/connect.php qui existe (SPIP est déjà installé).
Moi, c'est à l'installation de SPIP, quand config/connect.php n'existe pas encore.

--
RealET

Hello,

En effet, et je crois bien que j’en suis victime aussi en cli mais je n’avais pas identifié la cause.
Je vais mettre ça dans un upgrade de base, ça semble le plus propre, sachant qu’au pire tant que l’upgrade n’est pas fait on encodera pas
Je m’en occupe

--
Cédric
Le 10 oct. 2018 à 00:20 +0200, RealET <real3t@gmail.com>, a écrit :

spip-zone-commit@rezo.net a écrit le 20/09/2018 à
13:09 :
> Author: cedric@yterium.com
> Date: 2018-09-20 11:09:57 +0000 (Thu, 20 Sep 2018)
> New Revision: 111634
> Details: Connexion · GitLab

Cette révision empêche d'installer SPIP dans le cas suivant :
plugin memoization placé dans plugins-dist
Testé hors et dans un mutualisation de SPIP 3.2.1

À ce moment là, on a cette call stack (en mettant ligne 202 de
ecrire/base/connec_sql.php
+ debug_print_backtrace();
include_spip('inc/minipres');
echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'),
array('status' => 503));
exit;

)
#0 spip_connect_sql(1, select, , ) called at
[/var/www/_mutualisation_32/www/ecrire/base/abstract_sql.php:107]
#1 sql_serveur(select, , ) called at
[/var/www/_mutualisation_32/www/ecrire/base/abstract_sql.php:242]
#2 sql_select(valeur, spip_meta, nom='secret_du_site', Array (), Array
(), , Array (), , 1) called at
[/var/www/_mutualisation_32/www/ecrire/base/abstract_sql.php:1603]
#3 sql_fetsel(valeur, spip_meta, nom='secret_du_site', Array (), Array
(), , Array (), , 1) called at
[/var/www/_mutualisation_32/www/ecrire/base/abstract_sql.php:1750]
#4 sql_getfetsel(valeur, spip_meta, nom='secret_du_site') called at
[/var/www/_mutualisation_32/www/ecrire/inc/securiser_action.php:256]
#5 secret_du_site() called at
[/var/www/_mutualisation_32/www/ecrire/inc/securiser_action.php:279]
#6 calculer_cle_action(memoization) called at
[/var/www/_mutualisation_32/www/plugins-dist/_soyezcreateurs_/memoization/memoization_options.php:127]
#7
include_once(/var/www/_mutualisation_32/www/plugins-dist/_soyezcreateurs_/memoization/memoization_options.php)
called at [/var/www/_mutualisation_32/www/ecrire/inc/utils.php:118]
#8
include_once_check(/var/www/_mutualisation_32/www/plugins-dist/_soyezcreateurs_/memoization/memoization_options.php)
called at
[/var/www/_mutualisation_32/www/sites/bird/tmp/cache/charger_plugins_options.php:5]
#9
include_once(/var/www/_mutualisation_32/www/sites/bird/tmp/cache/charger_plugins_options.php)
called at [/var/www/_mutualisation_32/www/ecrire/inc_version.php:444]
#10 include(/var/www/_mutualisation_32/www/ecrire/inc_version.php)
called at [/var/www/_mutualisation_32/www/ecrire/index.php:22]

Et c'est le drame, ligne 127 de memoization_options.php
$key = pack("H*", calculer_cle_action('memoization'));
fini par provoquer un appel à MySQL
qui plante l'installation :frowning:

comme je ne sais pas comment gérer ça, je ne touche à rien.

Cerdic, tu vois comment gérer ça ?

PS : pour tester, il faut supprimer dans le cache
charger_plugins_options.php et sans doute plugin_xml_cache.gz

--
RealET

----
spip-zone@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-zone

Cerdic a écrit le 11/10/2018 à 09:11 :

Hello,

En effet, et je crois bien que j’en suis victime aussi en cli mais je n’avais pas identifié la cause.
Je vais mettre ça dans un upgrade de base, ça semble le plus propre, sachant qu’au pire tant que l’upgrade n’est pas fait on encodera pas
Je m’en occupe

Je vois que tu as fais ceci :
https://zone.spip.net/trac/spip-zone/changeset/111975/spip-zone

Si je comprends bien, il faudrait mettre dans config/mes_options.php
define('_CACHE_KEY', 'kkk');

Mais que mettre de pertinent dans 'kkk' ?

Merci

--
RealET

N’importe quoi, surtout si tu n’utilises pas APCu !
Mais c’est un fix provisoire temporaire, j’y reviens dès que j’ai 1 heure devant moi

--
Cédric
Le 12 oct. 2018 à 12:05 +0200, RealET <real3t@gmail.com>, a écrit :

Cerdic a écrit le 11/10/2018 à 09:11 :
> Hello,
>
> En effet, et je crois bien que j’en suis victime aussi en cli mais je
> n’avais pas identifié la cause.
> Je vais mettre ça dans un upgrade de base, ça semble le plus propre,
> sachant qu’au pire tant que l’upgrade n’est pas fait on encodera pas
> Je m’en occupe
Je vois que tu as fais ceci :
https://zone.spip.net/trac/spip-zone/changeset/111975/spip-zone

Si je comprends bien, il faudrait mettre dans config/mes_options.php
define('_CACHE_KEY', 'kkk');

Mais que mettre de pertinent dans 'kkk' ?

Merci

--
RealET

----
spip-zone@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-zone