Débogage de la synchronisation

Préambule

Cette page présente les procédures d'exploitation permettant une première analyse lors d'éventuels problèmes pendant la phase de synchronisation des données, dans le logiciel Allegro-ObsDeb du SIH.

Activation des logs SQL

Côté client

Objectif :

  • Afficher dans le fichier de log (obsdeb.log) les requêtes exécutées par le module de synchronisation.

Types d'erreur concernés :

  • Concerne les erreurs suivantes (visibles dans le log coté client) : Caused by: java.sql.BatchUpdateException: failed batch

  • Autres erreurs HSQLSB, du type : java.sql.SQLException (...)

Procédure :

  • Désactivation du mode « batch » (insertion par bloc)

  • Editer le fichier config/obsdeb.config

  • Ajouter la ligne suivante :

    synchro.jdbc.batch.enable=false
  • Activer les logs SQL de synchro :

    • Dézipper le fichier obsdeb/obsdeb-ui-swing-x.y.jar

    • Editer le fichier log4j.properties

    • Modifier las lignes de propriété suivantes (ou les ajouter) :

      log4j.logger.fr.ifremer.adagio.synchro=DEBUG
      log4j.logger.fr.ifremer.common.synchro=DEBUG
      log4j.logger.fr.ifremer.common.synchro.dao.Daos=ERROR
    • Reformer l'archive JAR (sans répertoire racine)

  • Résultat obtenu :

    Les tables sont traitées tables par table. Voici par exemple la sequence qui concerne la table TAXON_NAME :

    [TAXON_NAME] Prepare insert query: INSERT INTO TAXON_NAME (reference_taxon_fk, citation_fk, is_obsolete, taxonomic_level_fk, creation_date, id, is_virtual, is_temporary, end_date, complete_name, upper_rank, name, is_referent, update_date, parent_taxon_name_fk, is_naming, start_date, comments) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    [TAXON_NAME] Prepare update query: UPDATE TAXON_NAME SET reference_taxon_fk = ?, citation_fk = ?, is_obsolete = ?, taxonomic_level_fk = ?, creation_date = ?, id = ?, is_virtual = ?, is_temporary = ?, end_date = ?, complete_name = ?, upper_rank = ?, name = ?, is_referent = ?, update_date = ?, parent_taxon_name_fk = ?, is_naming = ?, start_date = ?, comments = ? WHERE id = ?
    [TAXON_NAME] Prepare select query: SELECT t.reference_taxon_fk, t.citation_fk, t.is_obsolete, t.taxonomic_level_fk, t.creation_date, t.id, t.is_virtual, t.is_temporary, t.end_date, t.complete_name, t.upper_rank, t.name, t.is_referent, t.update_date, t.parent_taxon_name_fk, t.is_naming, t.start_date, t.comments FROM TAXON_NAME t WHERE (t.update_date IS NULL OR t.update_date > :updateDate)
    [TAXON_NAME] Execute select query: SELECT t.reference_taxon_fk, t.citation_fk, t.is_obsolete, t.taxonomic_level_fk, t.creation_date, t.id, t.is_virtual, t.is_temporary, t.end_date, t.complete_name, t.upper_rank, t.name, t.is_referent, t.update_date, t.parent_taxon_name_fk, t.is_naming, t.start_date, t.comments FROM TAXON_NAME t WHERE (t.update_date IS NULL OR t.update_date > ?)
    [TAXON_NAME]          with params: [2016-01-18 09:23:04.0]
    (…)
    [TAXON_NAME] - 106 existing rows: 17713
    TAXON_NAME Execute update query (pk:[15880]), params: [6693, 230, false, ORDO, 2010-03-19 15:07:53.0, 15880, false, false, 2016-01-18 14:00:31.0, Hadromerida, 14720000, Hadromerida, false, 2016-01-18 22:30:04.1534, 21599, false, 2010-03-19 15:07:53.0, ORHADRO - issu de la reprise Reftax du 25/05/2011]
    TAXON_NAME Execute update query (pk:[15939]), params: [6695, 253, false, ORDO, 2010-03-19 15:07:54.0, 15939, false, false, null, Haplosclerida, 15500650, Haplosclerida,

    Les logs concernant l’exécution des requêtes affichent les paramètres d'execution. Ils correspondent aux caractères « ? » de la requete SQL proprement dite, dans le même ordre.

Côté serveur de synchronisation

Objectif :

  • Afficher dans le fichier de log du serveur de synchronisation les requêtes exécutées par le module de synchronisation.

Types d'erreur concernés :

  • Concerne les erreurs suivantes (visibles dans le log coté serveur) : Caused by: java.sql.SQLException: ORA-<NNNN>

Procédure :

Pour diminuer le nombre d'opération a réaliser sur les serveur Tomcat, il est plus simple d'utiliser un serveur de synchronisation installé localement. C'est l'option qui est choisie ici.

  • Installer sur votre poste le serveur de synchro :

    • Récupérer sur la forge l'archive du serveur de synchornisation : allero-obsdeb-server-X.Y-standalone.zip

    • Dézipper l'archive ;

    • Editer le fichier webapp.<sh|bat>

      • Decommenter la ligne affectant la variable JAVA_HOME, et préciser le répertoire vers une JRE (ex : C:/Programs Files/Java/jre-1.7.0_42)

      • (optionnel) Decommenter la ligne affectant le TNSNAME :

        export JAVA_OPTS="${JAVA_OPTS} -Doracle.net.tns_admin=\\brest\tnsnames"
  • Editer le fichier de configuration conf/adagio-server.config

    • Renseigner les propriété concernant la base de données ;

    • Renseigner les propriété concernant le serveur LDAP ;

  • Désactivation du mode « batch » (insertion par bloc)

    • Editer le fichier de configuration conf/adagio-server.config ;

    • Ajouter la ligne suivante : synchro.jdbc.batch.enable=false

  • Activer les logs SQL de synchro :

    • Dézipper l'archive lib/adagio-synchro-server-X.Y.war dans un répertoire ;

    • Editer le fichier WEB-INF/classes/log4j.properties et modifier les propriété suivantes (ou les ajouter) :

      log4j.logger.fr.ifremer.adagio.synchro=DEBUG
      log4j.logger.fr.ifremer.common.synchro=DEBUG
      log4j.logger.fr.ifremer.common.synchro.dao.Daos=ERROR
    • Reformer l'archive WAR (sans répertoire racine)

  • Lancer le serveur de synchronisationvia le script : webapp.<sh|bat>

  • Tester que le serveur est bien démarré :

Coté client, il faut ensuite :

  • Editer le fichier config/obsdeb.config et modifier la ligne suivante :

    obsdeb.synchronization.site.url=http://localhost:8080

Importer une base temporaire

TODO Ifremer

Source de cette page

Accès à la source de cette page: https://forge.ifremer.fr/svn/allegro-obsdeb/trunk/src/site/rst/debug_synchro.rst

Pour regénérer ce site, consulter la documentation suivante : https://forge.ifremer.fr/svn/allegro-obsdeb/trunk/README.md