Closed PNPyrenees closed 2 months ago
Ç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.
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.
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...
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 :
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 ?
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.
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é.
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 https://github.com/PnX-SI/gn_mobile_core/commit/63cc2605dde4d024fa0d7c953d55f8aa6a51ef13, 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 ?
Je confirme, après 5 synchronisations, je reste bien à chaque fois sur le même nombre de 1981 taxons proposés à la saisie.
OK donc ça semble pas le soucis de order_by, car sinon le nombre serait sensiblement différent à chaque fois. 🤔
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.
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 :
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.&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/
).
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 :
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.
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.
OK OK je comprends pourquoi ça n'a pas paginé du coup. On va analyser ça côté TaxHub.
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?
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.
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.
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.
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 ...
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.
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
Merci @amandine-sahl , merci @camillemonchicourt
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).
Merci pour ce retour. Tant mieux que cela corrige le soucis. En effet il faut relancer une synchronisation pour que la liste mise à jour.
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...
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.
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 :
taxhub/api/taxref?
à 16:13:47
. A ce moment là, la liste 100 contient 16655 taxons. :+1:
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. :-1: 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]
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.
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.
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
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... :exploding_head:
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 ?
Normalement un sudo systemctl restart taxhub
suffit. Je pense que c'est le start
qui n'a pas suffit
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 ?
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 : https://github.com/PnX-SI/TaxHub/commit/dd0c8a7348f3b83b3f2459fe62707a11b860d43f 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. :-)
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
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
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