You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-fr@cocoon.apache.org by Laurent Perez <ha...@gmail.com> on 2006/06/23 12:05:49 UTC

Problème avec CacheableProcessingComponent

Hello

J'ai écris un Generator caché dont le generate() effectue un process
assez complexe, et qui en fonction de divers paramètres devrait
retourner une SourceValidity valide ou invalide dans getValidity(). En
gros, si je trouve un certain code d'erreur dans mon generate(), je
souhaite retourner une SourceValidity invalide pour ne pas cacher une
génération avec ce code d'erreur.

J'ai utilisé le flag suivant avant les overrides des méthodes de
AbstractGenerator : private boolean cache_allowed = fase;

Dans mon generate(), si je ne trouve pas un code d'erreur, je change
le flag : this.cache_allowed = true; . Si j'en trouve un, je maintient
le flag : this.cache_allowed = false;

Puis dans getValidity(), je test avec un if(this.cache_allowed) pour
savoir si je peux retourner une SourceValidity valide ou pas.

Je précise que getKey() retourne une clef construite à partir de
paramètres de requête définis dans setup();

Mon problème est qu'une fois le cache_allowed changé à true, cette
variable reste éternellement à true, même lorsque la clef est pourtant
différente.

Est-ce la manière correcte pour invalider une SourceValidity en
fonction d'un état trouvé dans generate() ?

merci
laurent

-- 
<a href="http://in-pocket.blogspot.com">http://in-pocket.blogspot.com
- Mobile world, technology and more</a>

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Problème avec CacheableProcessingComponent

Posted by Laurent Perez <ha...@gmail.com>.
> C'est expliqué sur http://wiki.apache.org/cocoon/WritingForCacheEfficiency

Oki en effet, je n'avais pas vraiment respecté l'ordre des appels,
j'ai déplacé le calcul dans getValidity() maintenant.

Par contre, je n'arrive pas à éviter l'appel à getValidity(), quoi
qu'il arrive je vois toujours dans mes logs un appel à getKey() suivi
de getValidity().

Mon getKey() retourne toujours la même clef -pour tester-, et mon
getValidity() retourne un NOPValidity.SHARED_INSTANCE, qui normalement
veut dire "toujours valide" (?).

J'ai rajouté un peu de debug dans la source de
o.a.c.components.pipeline.impl.AbstractCachingProcessingPipeline, et
j'y retrouve ma key ainsi que NOPValidity venant de "if
(this.generatorIsCacheableProcessingComponent) {
validity = ((CacheableProcessingComponent)super.generator).getValidity();".

Est-ce normal de toujours voir un appel à getValidity() ?

laurent

---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Re: Problème avec CacheableProcessingComponent

Posted by Sylvain Wallez <sy...@apache.org>.
Laurent Perez wrote:
> Hello
>
> J'ai écris un Generator caché dont le generate() effectue un process
> assez complexe, et qui en fonction de divers paramètres devrait
> retourner une SourceValidity valide ou invalide dans getValidity(). En
> gros, si je trouve un certain code d'erreur dans mon generate(), je
> souhaite retourner une SourceValidity invalide pour ne pas cacher une
> génération avec ce code d'erreur.

L'idée du cache, c'est d'éviter d'appeler generate(). getKey() et
getValidity() sont dont appelés *avant* generate()! Tout le calcul des
informations de cache doit se faire dans setup/getKey/getValidity.

C'est expliqué sur http://wiki.apache.org/cocoon/WritingForCacheEfficiency

Sylvain

-- 
Sylvain Wallez - http://bluxte.net


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org