Suppression objet du store

Julien Valéry · le 09/04/13 à 12:48

Bonjour,

En face de développement, j'ai du modifier un type de contenu, suite à ça j'ai quelques objets dans le store à supprimer, mais qui ne s'affiche plus dans les interfaces.

Comment puis je procéder à la suppression sachant que j'ai les identifiants ?

Je ne connais pas l'outil mergestore par exemple, existe t'il un autre outil pour effectuer la modification de suppression de cet objet dans mon fichier store.xml en dehors d'une suppression avec un éditeur de texte par exemple qui si j'ai bien compris peut corrompre le store.

Merci,

Julien

32 pts
Julien Valéry · le 09/04/13 à 13:11

Ou comment supprimer les stamp pour un id donné.

0 pt
Olivier Jaquemet · le 09/04/13 à 14:21

Bonjour,

Vous pouvez utiliser le "nettoyage du store" disponible dans le back office.

Couplé avec le développement de CleanFilter vous aurez la possibilité de nettoyer un store comme bon vous le semble. (fonctionnalité présentée dans l'article Catalogue des points de débranchement (hooks) disponibles dans l'API JCMS)

1 pt
Julien Valéry · le 09/04/13 à 14:25

Bonjour,

Je vois à peut prêt pour l'utilisation d'un hook type CleanFilter mais avec le nettoyage du store dispo en B.O je ne vois pas trop. Dans ma version jcms j'ai le choix entre:

Du début du store De la date De la marque De l'estampille De l'estampille de synchronisation (13 mars 2012 18:03)

Mais pas vraiment la possibilité de nettoyer par ID.

Développement custom obligatoire ?

Merci,

Julien

0 pt
Olivier Jaquemet · le 09/04/13 à 14:29

Que souhaitez vous faire comme nettoyage ? Vous ne l'avez pas précisé ou bien je n'ai pas compris.

0 pt
Julien Valéry · le 09/04/13 à 14:35

J'ai un type de contenu qui a évolué et donc des marques associés dans le store qui génèrent des erreurs au démarrage du serveur.

Avec la liste des stamp ou id (affichés dans mes logs) je pensais pouvoir les supprimer mais je cherche le meilleur moyen :

Exemple d'erreurs générées

16:32:17,047 WARN [Crédit Agricole] [Store] - * INVALID OPERATION * stamp jul_1083436: attempt to update a null storable (id=*jul_1083435*) 16:32:17,048 WARN [Crédit Agricole] [LogManagerHandler] - An exception occured while processing log entry generated.MyType...

0 pt
Olivier Jaquemet · le 09/04/13 à 14:39

L'exemple d'erreur que vous indiquez concerne la tentative de mise à jour d'un objet qui n'existe pas (probablement car son type a été supprimé), dans ce cas l'action standard disponible "Effacer toutes les opérations portant sur des objets supprimés." dans le nettoyage du store résoudra le problème.

N'oubliez cependant pas que le nettoyage du store n'est pas une action anodine, sauvegardez votre store, et vérifier avant après.

0 pt
Julien Valéry · le 09/04/13 à 14:46

Oui c'est bcp plus clair comme ça, merci je vais faire l'essai.

0 pt
Julien Valéry · le 09/04/13 à 14:59

Après plusieurs essais à partir de l'outil du B.O Nettoyage du Store, ma webapp tombe quand j'essaie un nettoyage du store "Debut du Store" => "Fin du Store", il n'y a pas une alternative ?

0 pt
Olivier Jaquemet · le 09/04/13 à 15:07

<bad-joke>J'espère qu'elle ne s'est pas trop fait mal.</bad-joke>

Elle tombe comment ? OutOfMemoryException ? Autre ?<bad-joke>StumbleException</bad-joke>

Pensez à préciser le plus d'information possible sur votre contexte quand vous souhaitez de l'aide, rappelez vous que nous n'avons pas votre écran en face des yeux

Si OutOfMemory -> augmentez la mémoire, un nettoyage de store nécessite une importante consommation mémoire.

0 pt
Julien Valéry · le 09/04/13 à 15:28

Aucune erreur mais je vais faire quelques tests, activer des logs, remonter la mémoire, en attendant une belle 503 sur http://...admin/storeInfo.jsp

0 pt
Julien Valéry · le 09/04/13 à 16:16

Activé les traces au maxi:

  • Portée du Nettoyage, une date de début éloignée, une date de fin aujourd'hui.
  • Espace de travail : tous les espaces
  • Règles de nettoyage
    • Effacer toutes les opérations portant sur des objets supprimés.
    • Effacer Fusionner les modifications mineures
  • Le lance le nettoyage
  • Voici les logs, on a l'impression qu'il n'a rien pu traité, désolé pr la pile de logs :

[edit Olivier Jaquemet log supprimé]

Au redémarrage, j'ai toujours dans les logs plusieurs exceptions, avec une donnée de type multivalué ou autre qui génère l'erreur:

18:06:49,938 WARN [Crédit Agricole] [Store] - ** INVALID OPERATION ** stamp jul_1081842: attempt to update a null storable (id=jul_1081744)
18:06:49,938 WARN [Crédit Agricole] [Store] - ** INVALID OPERATION ** stamp jul_1081843: attempt to update a null storable (id=jul_1081744)
18:06:49,940 WARN [Crédit Agricole] [Store] - ** INVALID OPERATION ** stamp jul_1081873: attempt to update a null storable (id=jul_1081749)
18:06:49,940 WARN [Crédit Agricole] [Store] - ** INVALID OPERATION ** stamp jul_1081876: attempt to update a null storable (id=jul_1081744)
18:06:49,941 WARN [Crédit Agricole] [Store] - ** INVALID OPERATION ** stamp jul_1081879: attempt to update a null storable (id=jul_1081739)
18:06:50,166 WARN [Crédit Agricole] [LogManagerHandler] - An exception occured while processing log entry generated.FichePresentationCR
java.lang.IllegalArgumentException: array element type mismatch
	at java.lang.reflect.Array.set(Native Method)
	at com.jalios.jstore.StoreUtil.decodeObjectArray(StoreUtil.java:814)
	at com.jalios.jstore.StoreUtil.decodeObject(StoreUtil.java:428)
	at generated.FichePresentationCR_HANDLER.setAttributes(FichePresentationCR_HANDLER.java:77)
	at com.jalios.jstore.Store.setStorableAttributes(Store.java:871)
	at com.jalios.jstore.Store.processStorableLogEntry(Store.java:731)
	at com.jalios.jstore.LogManagerLoadHandler.processStorableLogEntry(LogManagerLoadHandler.java:127)
	at com.jalios.jstore.LogManagerHandler.startElement(LogManagerHandler.java:95)
	at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
	at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
	at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
	at com.jalios.jstore.LogManager.parseLog(LogManager.java:362)
	at com.jalios.jstore.LogManager.parseLog(LogManager.java:322)
	at com.jalios.jstore.LogManager.load(LogManager.java:143)
	at com.jalios.jstore.Store.load(Store.java:538)
	at com.jalios.jstore.Store.load(Store.java:524)
	at com.jalios.jcms.Channel.loadStore(Channel.java:1256)
	at com.jalios.jcms.ChannelInitServlet.init(ChannelInitServlet.java:116)
	at com.jalios.jcms.ChannelInitServlet.init(ChannelInitServlet.java:70)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
18:06:50,168 WARN [Crédit Agricole] [Store] - ** INVALID OPERATION ** stamp jul_1083436: attempt to update a null storable (id=jul_1083435)
18:06:50,169 WARN [Crédit Agricole] [LogManagerHandler] - An exception occured while processing log entry generated.FichePresentationCR
java.lang.IllegalArgumentException: array element type mismatch
	at java.lang.reflect.Array.set(Native Method)
	at com.jalios.jstore.StoreUtil.decodeObjectArray(StoreUtil.java:814)
	at com.jalios.jstore.StoreUtil.decodeObject(StoreUtil.java:428)
	at generated.FichePresentationCR_HANDLER.setAttributes(FichePresentationCR_HANDLER.java:77)
	at com.jalios.jstore.Store.setStorableAttributes(Store.java:871)
	at com.jalios.jstore.Store.processStorableLogEntry(Store.java:731)
	at com.jalios.jstore.LogManagerLoadHandler.processStorableLogEntry(LogManagerLoadHandler.java:127)
	at com.jalios.jstore.LogManagerHandler.startElement(LogManagerHandler.java:95)
	at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
	at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
	at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
	at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
	at com.jalios.jstore.LogManager.parseLog(LogManager.java:362)
	at com.jalios.jstore.LogManager.parseLog(LogManager.java:322)
	at com.jalios.jstore.LogManager.load(LogManager.java:143)
	at com.jalios.jstore.Store.load(Store.java:538)
0 pt
Julien Valéry · le 09/04/13 à 16:18

Euh le format de ma réponse est pas génial non ?

0 pt
Olivier Jaquemet · le 10/04/13 à 07:05

J'ai supprimé vos logs, rappelez vous qu'ils contiennent souvent des informations confidentiels.
Préferez une communication via notre mail support dans ces cas là.

0 pt
Olivier Jaquemet · le 10/04/13 à 07:08

L'exception qui reste visible au démarrage n'est pas la même qu'avant et elle concerne le chargement des valeurs d'un champ du type FichePresentationCR.

Je suppose que vous avez modifier un champ en cours de route pour ce type et que le stockage qui était avant dans un format spécifique (Set, Array ou autre) n'est plus le même.

Il faudra passer par un nettoyage spécifique pour ces champs.

0 pt
Julien Valéry · le 10/04/13 à 07:37

Bonjour Olivier,

Merci pour ces infos, je me rends bien compte que les logs peuvent être sensibles et à l'avenir je tiendrai compte de vos remarques. Je fais aussi tjs en sorte d'épurer le contenu sensible.

Oui, le type de donnée à changé et c'est bien ça qui pose problème (type de champ).

Quand vous parlez de nettoyage spécifique, on retombe sur le cas d'un hook en charge du nettoyage ?

Julien

0 pt
Julien Valéry · le 10/04/13 à 08:34

Je tente d'utiliser le CleanFilter.

Il est déclaré dans ma liste de plugins, implanté une règle pour qu'il nettoie une liste de d'entry selon mes stamp qui passent en erreur.

Au lancement du nettoyage, je ne sais pas si mon hook est pris en compte, (mes traces n'apparaissent pas) et la webapp passe en erreur systématiquement pour finir sur Etat HTTP 503 - JCMS sur la page admin/storeInfo.jsp

0 pt
Frédéric Touitou · le 10/04/13 à 09:48

Ticket de support (4320) créé sur ce sujet (CleanFilter non pris en compte), suite à un mail envoyé audit support. :-)

Le problème de déclaration du CleanFilter est connu, et corrigé ou ayant une solution de contournement : JCMS-2528.

Bien cordialement,
Frédéric Touitou

0 pt
Julien Valéry · le 10/04/13 à 10:29

Le patch s'applique bien sur la version 6.1.3, par conséquent le plugin est bien chargé et effectif lors du lancement d'un nettoyage (testé en debug).

Merci Guillaume et Frédéric pour votre aide.

Par contre, je retombe un problème car la webapp tombe très rapidement en 503. Pas d'erreur de mémoire, mais la webapp ne réponds plus, malgré le process tomcat qui est bien actif.

Ma démarche consiste à nettoyer ces erreurs récurrentes au démarrage depuis que j'ai du faire des changements divers sur un type de contenu:

INVALID OPERATION stamp jul_1083441: attempt to update a null storable (id=*jul_1083440*) - An exception occured while processing log entry generated.MonType java.lang.IllegalArgumentException: array element type mismatch

Je souhaite mettre en oeuvre un CleanFilter qui reprends tous ces stamps en erreur pour les supprimer, type:

@Override public boolean isCleanable(StorableLogEntry entry, Class clazz) {

if (entry.getStamp().equals(new Stamp("*jul_1083462*"))) { Requête listéreturn true;

} ...

Mais ça ne fonctionne pas. Y'a pas plus pratique pour faire ce type d'action de nettoyages ?

Le numéro de ticket que vous m'avez fait parvenir, je ne le trouve pas sur Jira.

0 pt
Olivier Jaquemet · le 10/04/13 à 11:22

L'erreur 503 que vous rencontrez est très probablement du au processus de redémarrage automatique après le nettoyage du store. En 6.1 un redémarrage automatique est tenté, mais il n'est que très rarement fonctionnelle, et donc la webapp n'est plus disponible. (toutes les actions de redémarrage automatique depuis la webapp ont été retiré à partir de JCMS 7.1, cf JCMS-2644.
Il est donc "normal" que vous ayez à faire un redémarrage manuel.

Pour le reste de votre demande d'assistance sur le développement de le CleanFilter, je n'ai malheureusement pas le temps de me plonger dessus.

0 pt
Julien Valéry · le 10/04/13 à 11:37

Merci pour toutes ces informations Olivier, d'où est venu le prénom de Guillaume précédemment je ne sais pas.

0 pt