Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Liste de taxons incomplète #263

Closed
PNPyrenees opened this issue Aug 23, 2024 · 35 comments · Fixed by PnX-SI/TaxHub#558
Closed

Liste de taxons incomplète #263

PNPyrenees opened this issue Aug 23, 2024 · 35 comments · Fixed by PnX-SI/TaxHub#558
Labels
bug Something isn't working

Comments

@PNPyrenees
Copy link

PNPyrenees commented Aug 23, 2024

Version de l'application

Version d'Occtax-mobile affectée par le bug : 2.7.0
Version de GeoNature utilisée : 2.14.2

Description du bug et comportement attendu

Suite au passage à la version 2.7.0 (et 2.14.2 de GN) je constate que la synchronisation de la liste des taxons n'est pas complète.

OccTax-Mobile est configuré pour utiliser la liste id = 101 qui contient plus de 9'000 taxons
image

voir : https://geonature.pyrenees-parcnational.fr/geonature/api/gn_commons/t_mobile_apps

Mais je n'ai que 1'981 taxons de disponible sur OccTax-Mobile

image

Pour tester, j'ai vidé les données (via les paramètre de l'application) puis reconfiguré OccTax qui a relancer une synchro globale. A la fin de celle-ci, j'ai bien mes 9'000 taxons.
Par contre, si je relance une synchro dans la foulée (après que la première est fini bien entendu), je tombe à 1'981 taxons...

Voici le fichier de logs associé : occtax_20240823_161158.log

@PNPyrenees PNPyrenees added the bug Something isn't working label Aug 23, 2024
@camillemonchicourt
Copy link
Member

Ça a bien relancé une synchro initiale de tout Taxref la première fois après le passage en 2.7.0 ?

Depuis la 2.7.0, on ne resynchronise pas tous les taxons utiles régulièrement, mais on charge une seule fois tout Taxref en vérifiant si celui-ci a été mis à jour depuis la dernière synchro, en interrogeant la route https://geonature.pyrenees-parcnational.fr/taxhub/api/taxref/version

On a bien testé ça avec tout Taxref, et avec des listes de taxons par JDD sur le serveur de démo avant de sortir la 2.7.0.
Mais sur celui-ci on ne renseigne plus de liste de taxons par défaut, on prend tout Taxref par défaut (sauf pour les JDD où une liste de taxons est définie) : https://demo.geonature.fr/geonature/api/gn_commons/t_mobile_apps
Je ne suis pas certain qu'on ait testé avec une liste de taxons par défaut définie dans la configuration de Occtax-mobile, mais de mémoire si.

@PNPyrenees
Copy link
Author

PNPyrenees commented Aug 23, 2024

En attendant, j'ai retiré l'identifiant de la liste (taxa_list_id) dans le settings.json et je retrouve tout taxref à la saisie.
C'est toujours mieux qu'une liste trop restreinte.

@camillemonchicourt
Copy link
Member

Oui ça permet de contourner et de ne plus être bloqué.
Mais pas viable à moyen terme, car c'est souvent lourd à s'afficher selon la puissance du téléphone.
Et on perd l'intérêt de la simplicité et de limiter les erreurs de saisie que permet une liste de taxons par défaut.

Pour le moment, j'ai testé sur le serveur de DEMO de remettre une liste de taxons par défaut, en ajoutant "taxa_list_id": 100 dans la conf : https://demo.geonature.fr/geonature/api/gn_commons/t_mobile_apps

Cette liste comprend 16 taxons et j'ai bien 16 taxons quand je veux saisir dans un JDD qui n'a pas de liste spécifique définie.
Et cela après plusieurs synchros.

Mais mes tests sont peut-être faussés par le fait que je n'ai qu'une petite liste de taxons....

Je vais essayer de refaire des tests avec une liste de taxons par défaut bien plus fournie...

@DonovanMaillard
Copy link
Collaborator

Merci pour ce retour,

Il y a quelque chose qui a été ajouté dans la dernière version, c'est que les taxons sont également filtrés en fonction du jeu de données quand les métadonnées indiquent une liste pour le JDD en question.

Pour résumer :

  • l'appli télécharge tout taxref
  • Soit le JDD dans lequel on saisit a une liste associée -> On prend cette liste
  • Soit le JDD n'a pas de liste associée -> on prend l'id_liste de la conf mobile (facultatif)
  • Soit on a aucune liste (ni jdd, ni conf), dans ce cas on a tout taxref.

Le JDD dans lequel tu fais les tests n'est pas limité aux plantes, aux taxons que vous avez en synthèse ou ce genre de chose ?

@PNPyrenees
Copy link
Author

Salut Donovan,

J'ai bien suivi ces évolutions.
Pas de liste de taxons spécifié pour le jeu de données.
Il est donc sensé prendre la liste indiqué dans la conf, ce qu'il fait après la première synchro mais la liste devient incomplète après la seconde synchro.

@camillemonchicourt
Copy link
Member

Ouais très bizarre que ça ait fonctionné lors de la première synchro, mais plus après la seconde. 🤔
Comme évoqué, je ne reproduis pas sur le serveur de DEMO avec une liste par défaut de 16 taxons.
Mais peut-être faut-il tester avec une liste par défaut plus conséquente, mais là je n'en ai pas la possibilité.

@camillemonchicourt
Copy link
Member

Tu as toujours le même nombre de taxons après différentes synchros ? Ça renvoie toujours 1981 taxons ?
Car sinon on s'est demandé si c'était pas le même soucis que PnX-SI/gn_mobile_core@63cc260, où il fallait passer un order_by sur l'appel des routes de l'API, sinon les résultats paginés sont renvoyés sans ordre, et donc partiellement.

Mais bon, je ne vois pas bien où est interrogée la route qui renvoie les taxons de chaque liste.
Peut-être ici (où un order_by a récemment été ajouté) : https://github.com/PnX-SI/gn_mobile_core/blob/develop/datasync/src/main/java/fr/geonature/datasync/api/ITaxHubService.kt#L28

En tout cas, si on interroge l'API de votre TaxHub, pour renvoyer les taxons de cette liste, cela renvoie bien 9715 taxons : https://geonature.pyrenees-parcnational.fr/taxhub/api/taxref/?id_liste=101

Donc y a bien un soucis au niveau de la synchro d'Occtax-mobile.

@sgrimault une piste ? Ou des précisions sur le fonctionnement de la synchronisation des listes de taxons ?

@PNPyrenees
Copy link
Author

Je confirme, après 5 synchronisations, je reste bien à chaque fois sur le même nombre de 1981 taxons proposés à la saisie.

@camillemonchicourt
Copy link
Member

OK donc ça semble pas le soucis de order_by, car sinon le nombre serait sensiblement différent à chaque fois.
🤔

@sgrimault
Copy link
Collaborator

Comme ça, je ne vois pas trop où ça peut pêcher.
Il faudrait s'assurer que la combinaison des paramètres order_by, limit, page et id_liste fonctionne bien et ne retourne pas de doublons par exemple.

Coté synchronisation, si la date de dernière synchronisation est trop ancienne par rapport à la date coté GeoNature, l'ensemble des taxons en local est supprimé puis la synchronisation paginée se lance pour les taxons et les "couleurs" des taxons.
L'insertion en base se fait avec la stratégie REPLACE en cas de conflit (deux taxons ayant le même identifiant par exemple).
Toute cette partie fonctionne dans une transaction afin de garantir l'intégrité des donnés en base dès que la synchronisation s'est terminée avec succès.

@camillemonchicourt
Copy link
Member

OK, on a fait une analyse complète avec @amandine-sahl en analysant l'API et les logs, et on a identifié le soucis, qui est bien au niveau d'Occtax-mobile.

Dans les logs on voit donc :

  • Qu'une synchronisation complète a été lancée la première fois pour récupérer une seule fois tout Taxref comme c'est prévu désormais à partir d'Occtax-mobile 2.7.0 (ligne 83 - https://geonature.pyrenees-parcnational.fr/taxhub/api/taxref?orderby=cd_nom&limit=15000&page=2). Cette route contient aussi la propriété listes qui permet de savoir à quelle liste appartiennent éventuellement chaque taxon. C'est pour ça que suite à cette première synchro, tu avais bien tes 9715 taxons pour ta liste définie par défaut.
  • Ensuite tu as relancé une synchro manuellement. Là il ne resynchronise plus tout Taxref, mais uniquement les données qui changent régulièrement (observateurs, nomenclatures, jeux de données, listes et leurs taxons...). Pour la partie qui nous intéresse, il doit d'abord interroger la route des listes (ligne 456 - https://geonature.pyrenees-parcnational.fr/taxhub/api/biblistes) pour récupérer la liste à jour des listes de taxons. Puis il va interroger la route /taxref/ en passant les id_liste de toutes les listes de taxons existantes (ligne 459 - https://geonature.pyrenees-parcnational.fr/taxhub/api/taxref?orderby=cd_nom&limit=15000&page=1&id_liste=201%2C203%2C211%2C210%2C208%2C200%2C202%2C204%2C207%2C205%2C209%2C206%2C103%2C104%2C105%2C100%2C101%2C102).
    Et c'est là qu'il y a un soucis : Occtax-mobile ne pagine pas et ne récupère que la page 1. Hors dans ton cas, cette route renvoie 144968 résultats (car tu as par ailleurs dans ton TaxHub une liste 100 qui contient 135200 taxons). Donc il faut corriger cela côté Occtax-mobile pour solutionner le soucis que tu rencontres. En passant, il faudrait ajouter le paramètre &fields=cd_nom,listes quand on appelle cette route pour ne recevoir que les champs nécessaires (et ainsi alléger les retours de l'API), mais aussi s'assurer qu'on récupère bien les listes de taxons (qu'il faudra prochainement demander explicitement quand on interroge la route /taxref/).

Et encore en passant, pour le premier appel de la route pour récupérer TOUT Taxref une première fois, il faudrait ajouter à cette appel de /taxref/ le paramètre &fields=listes pour récupérer toutes les propriétés de base de cette route, mais aussi les listes de taxons (qu'il faudra prochainement demander explicitement quand on interroge la route /taxref/).

@sgrimault
Copy link
Collaborator

Bravo et merci pour le détail :)
J'avoue que toute la partie synchronisation et enchaînement des appels coté API n'est pas simple car pour reconstituer les données en local, cela implique pas mal d'appels peu intuitifs comme l'histoire des listes des taxons. C'était globalement décrit par échange de mails, mais sans doute pas avec ce niveau de détail. Je vais aussi en profiter pour mettre à jour les diagrammes qui décrivent cette partie là.

Pour la prochaine version 2.7.1 à venir, il y aura donc :

  • cette correction sur la synchronisation des données relatives aux taxons
  • le fait de pouvoir indiquer si une couche géographique doit être affichée ou non par défaut
  • et peut être quelques pistes pour essayer d'améliorer les temps d'affichage des fonds vectoriels.

@camillemonchicourt
Copy link
Member

OK merci, dès que tu peux sortir une version corrigeant déjà les 2 premiers points, ce sont les plus urgents. Merci.

Pour le deuxième point, pour une meilleure retrocompatibilite avec ce qu'on avait avant, afficher les couches vectorielles par défaut.
Merci.

@sgrimault
Copy link
Collaborator

Bonjour,
J'ai refais une analyse plus détaillée sur l’enchaînement des appels sur la partie taxons, et il y a un souci de comportement sur la route GET -> /taxhub/api/taxref/ si on indique ou nom le paramètre id_liste.
Dans le cas, où on fait une synchronisation complète cette route retourne bien les taxons, pagination activée. Par exemple pour la première "page", j'ai bien 15000 taxons comme demandé :
https://geonature.pyrenees-parcnational.fr/taxhub/api/taxref/?orderby=cd_nom&limit=15000&page=1
Donc la synchronisation continue à chaîner les appels (en incrémentant le paramètre page) tant que la taille de la liste retournée correspond au paramètre limit défini en paramètre (ici : 15000 taxons). La condition d'arrêt est si l'API ne retourne pas un code 200, ou que la taille de la liste retournée est inférieure à la valeur du paramètre limit.

Dans le cas où on fait une synchronisation partielle, la synchronisation récupère d'abord les identifiants de liste des taxons :
https://geonature.pyrenees-parcnational.fr/taxhub/api/biblistes/ pour alimenter le paramètre id_liste.
Puis fait les appels chaînés, avec pagination, sur la route GET -> /taxhub/api/taxref/ comme décrit ci-dessus mais avec les paramètre id_liste en plus. Sur le premier appel (pour la première "page"), l'API ne me retourne pas 15000 taxons mais un peu moins (13013), donc il considère que la synchronisation des taxons est terminée.

sgrimault added a commit to PnX-SI/gn_mobile_core that referenced this issue Sep 1, 2024
@camillemonchicourt
Copy link
Member

OK OK je comprends pourquoi ça n'a pas paginé du coup.
On va analyser ça côté TaxHub.

@amandine-sahl
Copy link

Après analyse, le soucis vient d'un problème de jointure avec la table cor_nom_liste. Ce problème n'existe pas actuellement sur la branche develop, mais cette branche correspond à une refonte de taxhub

La question est sort on une mini version corrective (sachant qu'il n'y aura pas de release de GeoNature) ou attend t'on la prochaine version de GeoNature?

@PNPyrenees
Copy link
Author

Ayant ouvert tout taxref, on est pas sur un problème bloquant.
On se retrouvera potentiellement avec des anomalies taxonomiques liés à des noms vernaculaires homonyme mais on devrait pouvoir les identifier assez rapidement lors de la validation des données.

Donc s'il n'y a pas beaucoup d'utilisateurs impactés, de notre côté on peut attendre la prochaine mise à jour de GeoNature incluant la refonte de taxhub et ainsi vous éviter la mini version corrective.

@gildeluermoz
Copy link

Personnellement j'attends que tout soit fonctionnel pour déployer la 2.7.0.
Il me semblerait cependant plus logique de sortir une version corrective de taxhub afin d'avoir une solution fonctionnelle complète pour GN 2.14 et occtax_mobile 2.7.0. Notamment pour ceux qui sont dans cet environnement et qui ne souhaiteront pas forcement installer immédiatement la prochaine version de GN.

@camillemonchicourt
Copy link
Member

Le soucis semble assez particulier au PNP car vous avez plus de 15.000 taxons en combinant toutes vos listes, notamment avec la liste 100 qui contient 135200 taxons.

De plus, tout le monde n'utilise plus une liste de taxons par défaut, la plupart utilisent tout Taxref par défaut dans Occtax-web désormais, et peuvent maintenant faire pareil dans Occtax-mobile.

@gildeluermoz
Copy link

j'ai aussi pls clients qui ont des listes avec plus de 100 000 taxons.
Mais je n'ai pas déployé la 2.7.0 ...

@cen-cgeier
Copy link

cen-cgeier commented Sep 12, 2024

Bonjour à tous, de notre côté nous rencontrons également les difficultés évoquées. La 2.7.0 est déployée et nous sommes en GN 2.14.2 et Taxhub 1.14.1
Pour exemple, notre liste 100 qui est la plus grande contient 16653 et Occtax-mobile renvoie seulement 7777 taxons.

@camillemonchicourt
Copy link
Member

Comme mentionné, le soucis de la route /taxref/ quand un nom est associé à plusieurs listes est déjà corrigé dans la future version 2.0 de TaxHub.
Mais en attendant sa sortie, @amandine-sahl a fait une version 1.14.2 corrective de ce soucis : https://github.com/PnX-SI/TaxHub/releases

@cen-cgeier
Copy link

Merci @amandine-sahl , merci @camillemonchicourt

@cen-cgeier
Copy link

Petit retour concernant ce correctif :
Après mise à jour de Taxhub 1.14.2, il est nécessaire de fermer l'application Occtax-mobile avant de la ré-ouvrir et de re-synchroniser des données. Sans cela la liste 100 est incomplète (7777 taxons au lieux de 16655 dans mon cas).
Si l'on synchronise de-nouveau les données, la liste de taxons deviens à nouveau incomplète (7777).
Il faut alors reproduire le processus (fermer l'application > ré-ouvrir l'application > synchroniser les données).

@camillemonchicourt
Copy link
Member

Merci pour ce retour.
Tant mieux que cela corrige le soucis.
En effet il faut relancer une synchronisation pour que la liste mise à jour.

@cen-cgeier
Copy link

cen-cgeier commented Sep 13, 2024

La résolution semble tout de même partielle...
Les listes redeviennent incomplètes lors de la synchronisation suivante. Je ne parviens pas à m'expliquer ce phénomène, ni à le diagnostiquer...

@camillemonchicourt
Copy link
Member

La résolution semble tout de même partielle... Les listes redeviennent incomplètes lors de la synchronisation suivante. Je ne parviens pas à m'expliquer ce phénomène, ni à le diagnostiquer...

Ah ça, c'est bizarre. Tu as toujours le soucis ?
As-tu plus d'infos sur le sujet ? Des logs ? L'ordre précis de ce qui se sont passées.

@cen-cgeier
Copy link

cen-cgeier commented Sep 16, 2024

Oui, l'erreur se produit de nouveau lorsque tu ouvres Occtax, synchronise, puis re-synchronise derrière sans avoir fermer l'application entre temps. C'est ce qui arrives fréquemment lorsque tu rentres du terrain et que tu laisses l'appli ouverte en arrière plan avant d'y retourner le lendemain et de relancer une synchronisation afin d'être sûr d'avoir des accès à la liste à jour des jdd par exemple.

Dans le log on remarque que :

  • lors de la première synchronisation l'application télécharge une première fois 26676 taxons via l'api taxhub/api/taxref? à 16:13:47. A ce moment là, la liste 100 contient 16655 taxons. 👍
  • lors de la seconde synchronisation successive à 16:14:06, l'application ne télécharge plus que 8315 taxons. A ce moment là, la liste 100 ne contient plus que 7775 taxons. 👎

Log :

16:13:41.331 INFO: [fr.geonature.datasync.packageinfo.worker.CheckInputsToSynchronizeWorker] available inputs to synchronize: 0
16:13:42.389 INFO: [fr.geonature.datasync.sync.DataSyncViewModel] starting local data synchronization...
16:13:42.431 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] starting local data synchronization from 'https://geonature.cen-isere.fr/geonature' (with additional data: true)...
16:13:42.431 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] synchronize dataset...
16:13:42.432 INFO: [fr.geonature.datasync.api.ClientKt] --> POST https://geonature.cen-isere.fr/geonature/api/meta/datasets (19-byte body)
16:13:42.873 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/geonature/api/meta/datasets (440ms, unknown-length body)
16:13:42.936 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] dataset to update: 100
16:13:42.938 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] synchronize users...
16:13:42.939 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/geonature/api/users/menu/1
16:13:42.967 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/geonature/api/users/menu/1 (27ms, unknown-length body)
16:13:42.971 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] users to update: 45
16:13:42.973 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] synchronize taxonomy ranks...
16:13:42.974 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/taxref/regnewithgroupe2
16:13:43.709 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/taxref/regnewithgroupe2 (735ms, 776-byte body)
16:13:43.724 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] taxonomy ranks to update: 41
16:13:43.735 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] synchronize nomenclature types...
16:13:43.736 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/geonature/api/nomenclatures/nomenclatures/taxonomy
16:13:43.861 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/geonature/api/nomenclatures/nomenclatures/taxonomy (124ms, unknown-length body)
16:13:43.938 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] nomenclature types to update: 138
16:13:43.969 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] nomenclature to update: 1435
16:13:43.973 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] synchronize nomenclature default values...
16:13:43.974 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/geonature/api/occtax/defaultNomenclatures
16:13:44.005 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/geonature/api/occtax/defaultNomenclatures (30ms, unknown-length body)
16:13:44.022 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] nomenclature default values to update: 17
16:13:44.113 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] taxa last synchronization date: 2024-09-13T13:55:43Z
16:13:44.114 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/taxref/version
16:13:44.142 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/taxref/version (26ms, 90-byte body)
16:13:44.154 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] taxa last synchronization date from remote: 2024-03-29T17:19:28Z
16:13:44.189 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/biblistes
16:13:44.257 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/biblistes/ (67ms, 1978-byte body)
16:13:44.270 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] synchronize taxa list...
16:13:44.300 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/taxref?orderby=cd_nom&limit=10000&page=1&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100
16:13:46.480 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/taxref/?orderby=cd_nom&limit=10000&page=1&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100 (2177ms, 7841344-byte body)
16:13:47.723 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] taxa to update: 10000
16:13:47.724 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/taxref?orderby=cd_nom&limit=10000&page=2&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100
16:13:49.649 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/taxref/?orderby=cd_nom&limit=10000&page=2&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100 (1924ms, 7684430-byte body)
16:13:50.608 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] taxa to update: 20000
16:13:50.609 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/taxref?orderby=cd_nom&limit=10000&page=3&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100
16:13:52.209 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/taxref/?orderby=cd_nom&limit=10000&page=3&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100 (1599ms, 5199764-byte body)
16:13:52.847 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] taxa to update: 26676
16:13:52.847 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] synchronize taxa additional data...
16:13:52.848 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/geonature/api/synthese/color_taxon?orderby=cd_nom&code_area_type=M1&limit=10000&page=1
16:13:54.871 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/geonature/api/synthese/color_taxon?orderby=cd_nom&code_area_type=M1&limit=10000&page=1 (2022ms, 3-byte body)
16:13:54.882 INFO: [fr.geonature.datasync.sync.repository.SynchronizeAdditionalFieldsRepositoryImpl] synchronize additional fields...
16:13:54.884 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/geonature/api/gn_commons/additional_fields?module_code=OCCTAX
16:13:54.946 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/geonature/api/gn_commons/additional_fields?module_code=OCCTAX (60ms, unknown-length body)
16:13:54.967 INFO: [fr.geonature.datasync.sync.repository.SynchronizeAdditionalFieldsRepositoryImpl] 3 additional field(s) found
16:13:55.153 INFO: [fr.geonature.datasync.sync.worker.DataSyncWorker] local data synchronization successfully finished in 12.734s
16:13:57.017 INFO: [fr.geonature.occtax.ui.home.ObservationRecordsListFragment] observation record selected: 274627867
16:13:57.070 INFO: [fr.geonature.occtax.ui.input.InputPagerFragmentActivity] loading observation record: 274627867
16:13:57.070 INFO: [fr.geonature.occtax.features.record.presentation.ObservationRecordViewModel] loading default nomenclature values from record '274627867'...
16:13:57.071 INFO: [fr.geonature.occtax.features.record.usecase.EditObservationRecordUseCase] loading default nomenclature values from record '274627867'...
16:13:57.132 INFO: [fr.geonature.maps.layer.presentation.LayerSettingsViewModel] preparing all layers:
    'OSM': [https://a.tile.openstreetmap.org]' (active: true)
    'ign-ortho': [ign-ortho.mbtiles]' (active: true)
    'ign-scan': [ign-scan.mbtiles]' (active: true),
  using online layers: true...
16:13:57.244 INFO: [fr.geonature.occtax.features.record.usecase.EditObservationRecordUseCase] default nomenclature values successfully loaded for record '274627867'
16:13:57.245 INFO: [fr.geonature.occtax.features.record.usecase.EditObservationRecordUseCase] loading all local medias from record '274627867'...
16:13:57.245 INFO: [fr.geonature.occtax.features.record.usecase.EditObservationRecordUseCase] all medias successfully loaded for record '274627867'
16:13:57.254 DEBUG: [fr.geonature.commons.data.helper.SQLiteSelectQueryBuilder] sql:
  SELECT dataset."_id" AS dataset__id, dataset."name" AS dataset_name, dataset."description" AS dataset_description, dataset."active" AS dataset_active, dataset."created_at" AS dataset_created_at, dataset."updated_at" AS dataset_updated_at, dataset."taxa_list_id" AS dataset_taxa_list_id
  FROM dataset dataset
  WHERE (dataset__id = ?)
  ORDER BY dataset_name COLLATE NOCASE ASC
  args: [180]
16:13:57.256 DEBUG: [fr.geonature.commons.data.helper.SQLiteSelectQueryBuilder] sql:
  SELECT observers."_id" AS observers__id, observers."lastname" AS observers_lastname, observers."firstname" AS observers_firstname
  FROM observers observers
  WHERE observers__id = ?
  ORDER BY observers_lastname COLLATE NOCASE ASC, observers_firstname COLLATE NOCASE ASC
  args: [8]
16:13:57.264 INFO: [fr.geonature.occtax.ui.input.observers.ObserversAndDateInputFragment] selected dataset: 180, taxa list ID: 100
16:13:58.435 INFO: [fr.geonature.maps.layer.presentation.LayerSettingsViewModel] loading selected layers:
    'OSM': [https://a.tile.openstreetmap.org] (active: true)
16:13:58.440 INFO: [fr.geonature.maps.layer.presentation.LayerSettingsViewModel] loading online layer 'OSM'...
16:13:59.226 DEBUG: [fr.geonature.occtax.ui.input.taxa.TaxaFragment$Companion] default taxa list ID: 100
16:13:59.413 DEBUG: [fr.geonature.occtax.ui.input.taxa.TaxaFragment] loading taxa...
16:13:59.417 DEBUG: [fr.geonature.commons.data.helper.SQLiteSelectQueryBuilder] sql:
  SELECT taxa."_id" AS taxa__id, taxa."name" AS taxa_name, taxa."kingdom" AS taxa_kingdom, taxa."group" AS taxa_group, taxa."name_common" AS taxa_name_common, taxa."description" AS taxa_description
  FROM taxa taxa
  ORDER BY taxa_name ASC
  args: []
16:13:59.469 DEBUG: [fr.geonature.occtax.ui.input.taxa.TaxaFragment] loading taxa from taxa list ID 100...
16:13:59.477 DEBUG: [fr.geonature.commons.data.helper.SQLiteSelectQueryBuilder] sql:
  SELECT taxa."_id" AS taxa__id, taxa."name" AS taxa_name, taxa."kingdom" AS taxa_kingdom, taxa."group" AS taxa_group, taxa."name_common" AS taxa_name_common, taxa."description" AS taxa_description, taxa_list."taxon_id" AS taxa_list_taxon_id, taxa_list."taxa_list_id" AS taxa_list_taxa_list_id
  FROM taxa taxa
  JOIN taxa_list AS taxa_list ON taxa_list_taxon_id = taxa__id AND taxa_list_taxa_list_id = ?
  ORDER BY taxa_name ASC
  args: [100]
16:13:59.886 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.898 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.898 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.905 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.905 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.911 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.911 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.917 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.917 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.923 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.923 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.931 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.932 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.938 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.939 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.944 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:13:59.944 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:14:04.704 INFO: [fr.geonature.datasync.sync.DataSyncViewModel] starting local data synchronization...
16:14:04.819 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] starting local data synchronization from 'https://geonature.cen-isere.fr/geonature' (with additional data: true)...
16:14:04.821 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] synchronize dataset...
16:14:04.824 INFO: [fr.geonature.datasync.api.ClientKt] --> POST https://geonature.cen-isere.fr/geonature/api/meta/datasets (19-byte body)
16:14:05.093 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/geonature/api/meta/datasets (268ms, unknown-length body)
16:14:05.197 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] dataset to update: 100
16:14:05.204 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] synchronize users...
16:14:05.205 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/geonature/api/users/menu/1
16:14:05.236 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/geonature/api/users/menu/1 (30ms, unknown-length body)
16:14:05.256 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] users to update: 45
16:14:05.259 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] synchronize taxonomy ranks...
16:14:05.263 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/taxref/regnewithgroupe2
16:14:06.038 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/taxref/regnewithgroupe2 (772ms, 776-byte body)
16:14:06.053 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] taxonomy ranks to update: 41
16:14:06.074 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] synchronize nomenclature types...
16:14:06.075 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/geonature/api/nomenclatures/nomenclatures/taxonomy
16:14:06.210 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/geonature/api/nomenclatures/nomenclatures/taxonomy (133ms, unknown-length body)
16:14:06.329 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] nomenclature types to update: 138
16:14:06.385 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] nomenclature to update: 1435
16:14:06.389 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] synchronize nomenclature default values...
16:14:06.393 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/geonature/api/occtax/defaultNomenclatures
16:14:06.425 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/geonature/api/occtax/defaultNomenclatures (27ms, unknown-length body)
16:14:06.437 INFO: [fr.geonature.datasync.sync.usecase.DataSyncUseCase] nomenclature default values to update: 17
16:14:06.545 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] taxa last synchronization date: 2024-09-13T13:55:43Z
16:14:06.550 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/taxref/version
16:14:06.583 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/taxref/version (28ms, 90-byte body)
16:14:06.623 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] taxa last synchronization date from remote: 2024-03-29T17:19:28Z
16:14:06.742 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/biblistes
16:14:06.836 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/biblistes/ (90ms, 1978-byte body)
16:14:06.871 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] synchronize taxa list...
16:14:06.922 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/taxref?orderby=cd_nom&limit=10000&page=1&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100
16:14:08.201 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/taxref/?orderby=cd_nom&limit=10000&page=1&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100 (1278ms, 6462971-byte body)
16:14:09.636 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] taxa to update: 8315
16:14:09.636 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] synchronize taxa additional data...
16:14:09.637 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/geonature/api/synthese/color_taxon?orderby=cd_nom&code_area_type=M1&limit=10000&page=1
16:14:11.666 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/geonature/api/synthese/color_taxon?orderby=cd_nom&code_area_type=M1&limit=10000&page=1 (2027ms, 3-byte body)
16:14:11.686 INFO: [fr.geonature.datasync.sync.repository.SynchronizeAdditionalFieldsRepositoryImpl] synchronize additional fields...
16:14:11.688 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/geonature/api/gn_commons/additional_fields?module_code=OCCTAX
16:14:11.736 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/geonature/api/gn_commons/additional_fields?module_code=OCCTAX (46ms, unknown-length body)
16:14:11.753 INFO: [fr.geonature.datasync.sync.repository.SynchronizeAdditionalFieldsRepositoryImpl] 3 additional field(s) found
16:14:11.868 INFO: [fr.geonature.datasync.sync.worker.DataSyncWorker] local data synchronization successfully finished in 7.094s
16:26:05.850 INFO: [fr.geonature.occtax.ui.home.ObservationRecordsListFragment] observation record selected: 274627867
16:26:05.888 INFO: [fr.geonature.occtax.ui.input.InputPagerFragmentActivity] loading observation record: 274627867
16:26:05.889 INFO: [fr.geonature.occtax.features.record.presentation.ObservationRecordViewModel] loading default nomenclature values from record '274627867'...
16:26:05.889 INFO: [fr.geonature.occtax.features.record.usecase.EditObservationRecordUseCase] loading default nomenclature values from record '274627867'...
16:26:05.937 INFO: [fr.geonature.maps.layer.presentation.LayerSettingsViewModel] preparing all layers:
    'OSM': [https://a.tile.openstreetmap.org]' (active: true)
    'ign-ortho': [ign-ortho.mbtiles]' (active: true)
    'ign-scan': [ign-scan.mbtiles]' (active: true),
  using online layers: true...
16:26:06.023 INFO: [fr.geonature.occtax.features.record.usecase.EditObservationRecordUseCase] default nomenclature values successfully loaded for record '274627867'
16:26:06.024 INFO: [fr.geonature.occtax.features.record.usecase.EditObservationRecordUseCase] loading all local medias from record '274627867'...
16:26:06.024 INFO: [fr.geonature.occtax.features.record.usecase.EditObservationRecordUseCase] all medias successfully loaded for record '274627867'
16:26:06.026 DEBUG: [fr.geonature.commons.data.helper.SQLiteSelectQueryBuilder] sql:
  SELECT observers."_id" AS observers__id, observers."lastname" AS observers_lastname, observers."firstname" AS observers_firstname
  FROM observers observers
  WHERE observers__id = ?
  ORDER BY observers_lastname COLLATE NOCASE ASC, observers_firstname COLLATE NOCASE ASC
  args: [8]
16:26:06.028 DEBUG: [fr.geonature.commons.data.helper.SQLiteSelectQueryBuilder] sql:
  SELECT dataset."_id" AS dataset__id, dataset."name" AS dataset_name, dataset."description" AS dataset_description, dataset."active" AS dataset_active, dataset."created_at" AS dataset_created_at, dataset."updated_at" AS dataset_updated_at, dataset."taxa_list_id" AS dataset_taxa_list_id
  FROM dataset dataset
  WHERE (dataset__id = ?)
  ORDER BY dataset_name COLLATE NOCASE ASC
  args: [180]
16:26:06.039 INFO: [fr.geonature.occtax.ui.input.observers.ObserversAndDateInputFragment] selected dataset: 180, taxa list ID: 100
16:26:07.451 INFO: [fr.geonature.maps.layer.presentation.LayerSettingsViewModel] loading selected layers:
    'OSM': [https://a.tile.openstreetmap.org] (active: true)
16:26:07.452 INFO: [fr.geonature.maps.layer.presentation.LayerSettingsViewModel] loading online layer 'OSM'...
16:26:08.865 DEBUG: [fr.geonature.occtax.ui.input.taxa.TaxaFragment$Companion] default taxa list ID: 100
16:26:08.953 DEBUG: [fr.geonature.occtax.ui.input.taxa.TaxaFragment] loading taxa...
16:26:08.967 DEBUG: [fr.geonature.commons.data.helper.SQLiteSelectQueryBuilder] sql:
  SELECT taxa."_id" AS taxa__id, taxa."name" AS taxa_name, taxa."kingdom" AS taxa_kingdom, taxa."group" AS taxa_group, taxa."name_common" AS taxa_name_common, taxa."description" AS taxa_description
  FROM taxa taxa
  ORDER BY taxa_name ASC
  args: []
16:26:09.075 DEBUG: [fr.geonature.occtax.ui.input.taxa.TaxaFragment] loading taxa from taxa list ID 100...
16:26:09.092 DEBUG: [fr.geonature.commons.data.helper.SQLiteSelectQueryBuilder] sql:
  SELECT taxa."_id" AS taxa__id, taxa."name" AS taxa_name, taxa."kingdom" AS taxa_kingdom, taxa."group" AS taxa_group, taxa."name_common" AS taxa_name_common, taxa."description" AS taxa_description, taxa_list."taxon_id" AS taxa_list_taxon_id, taxa_list."taxa_list_id" AS taxa_list_taxa_list_id
  FROM taxa taxa
  JOIN taxa_list AS taxa_list ON taxa_list_taxon_id = taxa__id AND taxa_list_taxa_list_id = ?
  ORDER BY taxa_name ASC
  args: [100]
16:26:10.744 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.769 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.770 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.787 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.789 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.808 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.808 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.817 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.818 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.825 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.825 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.834 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.835 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.843 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.844 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.851 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]
16:26:10.852 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist. Available columns: [taxa__id, taxa_name, taxa_kingdom, taxa_group, taxa_name_common, taxa_description, taxa_list_taxon_id, taxa_list_taxa_list_id]

@amandine-sahl amandine-sahl reopened this Sep 17, 2024
@amandine-sahl
Copy link

En analysant les logs il s'avère que la première fois la route taxref est lancé 3 fois et 26676 taxons sont bien récupérés:

16:13:44.300 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/taxref?orderby=cd_nom&limit=10000&page=1&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100 16:13:46.480 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/taxref/?orderby=cd_nom&limit=10000&page=1&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100 (2177ms, 7841344-byte body) 16:13:47.723 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] taxa to update: 10000 16:13:47.724 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/taxref?orderby=cd_nom&limit=10000&page=2&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100 16:13:49.649 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/taxref/?orderby=cd_nom&limit=10000&page=2&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100 (1924ms, 7684430-byte body) 16:13:50.608 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] taxa to update: 20000 16:13:50.609 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/taxref?orderby=cd_nom&limit=10000&page=3&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100 16:13:52.209 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/taxref/?orderby=cd_nom&limit=10000&page=3&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100 (1599ms, 5199764-byte body) 16:13:52.847 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] taxa to update: 26676

Par contre la seconde fois la route n'est lancée qu'une fois (alors qu'elle retourne bien 10000 items).

16:14:06.922 INFO: [fr.geonature.datasync.api.ClientKt] --> GET https://geonature.cen-isere.fr/taxhub/api/taxref?orderby=cd_nom&limit=10000&page=1&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100 16:14:08.201 INFO: [fr.geonature.datasync.api.ClientKt] <-- 200 OK https://geonature.cen-isere.fr/taxhub/api/taxref/?orderby=cd_nom&limit=10000&page=1&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100 (1278ms, 6462971-byte body) 16:14:09.636 INFO: [fr.geonature.datasync.sync.repository.SynchronizeTaxaRepositoryImpl] taxa to update: 8315

A priori le soucis ne vient pas, comme précédemment, de la réponse de la route qui retourne bien le nombre d'items demandées à chaque fois.

@cen-cgeier
Copy link

cen-cgeier commented Sep 17, 2024

Pourtant, lorsque tu lances l'api https://geonature.cen-isere.fr/taxhub/api/taxref/?orderby=cd_nom&limit=10000&page=1&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100 dans un moteur de recherche, tu n'obtiens pas toujours la même réponse (j'ai rafraîchi le lien avec F5).

Parfois total_filtered 26676 et 10000 taxons sur la page 1;
D'autres fois total_filtered 29745 et 8315 taxons sur la page 1.

Il faut parfois s'acharner un peu sur le rafraîchissement pour observer cet effet.

@amandine-sahl
Copy link

J'ai fait des tests en local en récupérant vos données mais je n'arrive pas à reproduire l'erreur il doit manquer un élément de contexte. Mais effectivement comme le montre le test d'api il y a bien une inconsistance chez vous que je ne reproduit pas.

http://localhost:5000/api/taxref?orderby=cd_nom&limit=10000&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100
TEST 0 nb cd_nom :  10000
TEST 1 nb cd_nom :  10000
TEST 2 nb cd_nom :  10000
TEST 3 nb cd_nom :  10000
TEST 4 nb cd_nom :  10000
TEST 5 nb cd_nom :  10000
TEST 6 nb cd_nom :  10000
TEST 7 nb cd_nom :  10000
TEST 8 nb cd_nom :  10000
TEST 9 nb cd_nom :  10000
 
https://geonature.cen-isere.fr/taxhub/api/taxref?orderby=cd_nom&limit=10000&id_liste=101%2C103%2C104%2C102%2C105%2C108%2C106%2C107%2C100
TEST 0 nb cd_nom :  8315
TEST 1 nb cd_nom :  8315
TEST 2 nb cd_nom :  10000
TEST 3 nb cd_nom :  8315
TEST 4 nb cd_nom :  10000
TEST 5 nb cd_nom :  8315
TEST 6 nb cd_nom :  10000
TEST 7 nb cd_nom :  10000
TEST 8 nb cd_nom :  10000
TEST 9 nb cd_nom :  8315

@cen-cgeier
Copy link

Se peut-il que l'inconsistance soit liée à une instabilité du service ?

En souhaitant dé-buguer en profondeur l'api, je l'ai dupliqué en orientant la route sur /taxhub/api/taxref/debug/ et j'ai lancé la commande sudo systemctl reload taxhub. Depuis ... l'inconsistance semble avoir disparue... 🤯
Pourtant, à la suite de l'installation du correctif, j'avais exécuté la commande sudo systemctl start taxhub comme la fin de l'installation le demandait.
Ca signifie que démarrer le service après une mise à jour ne suffit pas ?

@amandine-sahl
Copy link

Normalement un sudo systemctl restart taxhub suffit. Je pense que c'est le start qui n'a pas suffit

@cen-cgeier
Copy link

Peut-on indiquer restart en fin d'installation plutôt que start en cas de mise à jour pour éviter toutes confusions ? Qu'en pensez-vous ?

@camillemonchicourt
Copy link
Member

Oui, on va faire ça.
En fait le script "install_app.sh" a été fait et pensé pour l'installation initiale de TaxHub, donc on indique de faire un start à la fin.
Mais en fait on l'utilise aussi pour la mise à jour de TaxHub, donc on va modifier pour dire de faire un restart qui fonctionnera dans le cas d'une installation et d'une mise à jour.

C'est fait pour la prochaine version : PnX-SI/TaxHub@dd0c8a7
Mais bon, dans la prochaine version de TH, pour ceux qui utilisent GeoNature, TH sera intégré donc ne sera plus à installer et mettre à jour par ailleurs, donc ça sera plus simple.
Donc ce sera uniquement nécessaire dans le cas (plus rare) de ceux qui utilisent TH sans GN. :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants