Adapter qui génére des occurences avec le meme row_id

J’ai un adapteur qui lit apartir d’un fichier CSV, ligne par ligne, et qui remplit les occurences dans une table.
L’adapteur ne génére aucun erreur. Dans le fichier log, c’est marqué comme si l’adapteur passe et enregistre toutes les occurences mais dans la table concerné je trouves pas le totalité des objets.
En investiguant, je trouves que le row id n’est pas correctement autoincrémenté et qu’il est dupliqué pour certaines objets.
Sauriez-vous l’origine du probléme ?
Merci pour votre support,
Akram Wali

[Platform]
Status=OK
Version=4.0.P24
Encoding=UTF-8
TimeZone=Europe/Paris
SystemDate=2021-02-19 12:09:08

Sans le code de votre adapter on ne peut pas deviner quel est le pb.
Mais clairement ce n’est pas un pb Simplicité mais forcément la manière dont votre code est écrit…

Pour vous inspirer voici un exemple : Custom CSV/TSV adpater example · GitHub

Celui ci reproduit le mode “upsert” des imports XML/JSON/CSV standards

PS: dans Simplicité il est théoriquement impossible d’avoir des doublons de row ID en base (le row ID étant géré par des séquences), je soupçonne donc que vous faites des insertions directes en base avec une génération “manuelle” du row ID inséré, ce qui est un anti-pattern absolu avec Simplicité, mais je me trompe peut être (sans votre code je ne peux pas le savoir).

Attention je vois que vous utilisez une version ancienne (4.0.P24), l’exemple de code que je vous ai indiqué ne marchera pas, il faudra donc commencer par vous mettre à jour sur la branche 4.0.

Voici le code de l’adapter :
Untitled-2.java (2.6 KB)

OK tel que c’est écrit (utilisation des APIs Java d’objet métier = search et create si le record n’existe pas) il est théoriquement impossible de générer des doublons de row ID techniques.

Par contre je ne sais pas dire si vous ne générez pas des doublons fonctionnels (ça, ça dépend du paramétrage de votre objet)

Utiliser une version aussi ancienne n’est pas une bonne chose. Envoyez moi le health check complet pour que je regarde de plus près les correctifs apportés depuis la révision que vous utilisez. Je me rappelle qu’en 4.0.P25, il y a eu une correction sur un pb subtil avec les séquences PostgreSQL, si vous êtes sur PostgreSQL c’est peut être une piste s’il y a réellement des doublons de row ID.

En tout état de cause notre support est conditionné par le fait d’être raisonnablement à jour, ce n’est pas le cas ici.

Ci dessous le health check complet
[Platform]
Status=OK
Version=4.0.P24
BuiltOn=2020-10-14 23:22 (revision 3c63448f648587d9a89ec04d597946d26e4f7937)
Encoding=UTF-8
EndpointIP=172.17.0.7
EndpointURL=http://1ad3658f9cb5:8080
TimeZone=Europe/Paris
SystemDate=2021-02-19 14:28:06

[Application]
ApplicationVersion=0.1 dev
ContextPath=
ContextURL=https://int.rpw.dev.aws.renault.com
ActiveSessions=6
TotalUsers=9
EnabledUsers=8
LastLoginDate=

[Server]
ServerInfo=Apache Tomcat/9.0.39
ServerType=WEB
User=root

[OS]
Name=Linux
Architecture=amd64
Version=4.14.209-160.335.amzn2.x86_64
SystemEncoding=UTF-8

[Disk]
DiskFree=20305
DiskUsable=19982
DiskTotal=30107

[JavaVM]
Version=14.0.2
Vendor=Red Hat, Inc.
VMName=OpenJDK 64-Bit Server VM
VMVersion=14.0.2+12
ScriptEngine=rhino
ScriptEngineVersion=Rhino 1.7.11 2019 05 30
HeapFree=413184
HeapSize=524288
HeapMaxSize=1835008
TotalFreeSize=1723904

[Cache]
GrantCache=202
GrantCacheMax=0
GrantCacheRatio=0
ObjectCache=228
ObjectCacheMax=10000
ObjectCacheRatio=2
ProcessCache=1
ProcessCacheMax=10000
ProcessCacheRatio=0

[Database]
Vendor=3
ProductName=PostgreSQL
ProductVersion=10.13
DriverName=PostgreSQL JDBC Driver
DriverVersion=42.2.17
DBDate=2021-02-19 14:28:06
DBDateOffset=0
DBPatchLevel=4.0;P24;661e93234fb5ebdf07d6e324dd3c6f58
UsingBLOBs=true

[Healthcheck]
Date=2021-02-19 14:28:06
ElapsedTime=18

OK vous êtes en retard d’au moins 218 commits, y compris quelques corrections critiques notamment pour PostgreSQL

Bref commencez par vous mettre à jour.

Vous comprenez qu’il est impossible d’assurer du support sur une révision aussi ancienne vs la révision actuelle. Vu le nombre de commits en question on parle peut être d’un pb corrigé depuis longtemps.

Et de toute façon même s’il s’agit d’un pb qui existe encore, il ne pourra être corrigé que sur le head de la version 4.0 maintenance, donc vous devrez de toute façon vous mettre à jour.

ATTENTION si vous utilisez une image Docker assurez vous que vous utilisez bien le tag 4.0-latest (avec le numéro de version 4.0 en prefix) car si vous utilisez le tag latest (sans le numéro de version en préfix) ce tag a désormais basculé sur la version 5. Cf. les annonces sur ce forum à ce sujet, or si vous basculez en version 5 vous ne pourrez plus revenir en 4.0. La version 5 induit quelques compatibility breaking changes, une migration 4.0 vers 5 n’est donc pas anodine.

Bonjour,

J’ai réussi à mettre à jour la version de simplicté au 5, et j’ai fait les modifications nécessaire.
Néanmoins, le même problème persiste.

Ci-dessous le health de l’application,
Merci,

[Platform]
Status=OK
Version=5.0.21
BuiltOn=2021-02-17 22:35
Git=release/7fd86fb4c9134f4d323ef6719bb43755ec5b6593
Encoding=UTF-8
EndpointIP=172.17.0.7
EndpointURL=http://c7f66ea6ffec:8080
TimeZone=Europe/Paris
SystemDate=2021-02-22 10:41:41

[Application]
ApplicationVersion=0.1 dev
ContextPath=
ContextURL=https://int.rpw.dev.aws.renault.com
ActiveSessions=3
TotalUsers=9
EnabledUsers=8
LastLoginDate=2021-02-22 09:54:17

[Server]
ServerInfo=Apache Tomcat/9.0.43
ServerType=WEB
User=root

[OS]
Name=Linux
Architecture=amd64
Version=4.14.209-160.335.amzn2.x86_64
SystemEncoding=UTF-8

[Disk]
DiskFree=19792
DiskUsable=19469
DiskTotal=30107

[JavaVM]
Version=14.0.2
Vendor=Red Hat, Inc.
VMName=OpenJDK 64-Bit Server VM
VMVersion=14.0.2+12
ScriptEngine=rhino
ScriptEngineVersion=Rhino 1.7.13 2020 09 02
HeapFree=367971
HeapSize=524288
HeapMaxSize=1835008
TotalFreeSize=1678691

[Cache]
GrantCache=20
GrantCacheMax=0
GrantCacheRatio=0
ObjectCache=209
ObjectCacheMax=10000
ObjectCacheRatio=2
ProcessCache=10
ProcessCacheMax=10000
ProcessCacheRatio=0

[Database]
Vendor=3
ProductName=PostgreSQL
ProductVersion=10.13
DriverName=PostgreSQL JDBC Driver
DriverVersion=42.2.18
DBDate=2021-02-22 10:41:41
DBDateOffset=0
DBPatchLevel=5;P00;563ca3aa16fac89e37a9785270346a0c
UsingBLOBs=true

[Healthcheck]
Date=2021-02-22 10:41:41
ElapsedTime=538

Le passage sur une version à jour ne corrigera pas les éventuels doublons générés précédement.
Quand vous dites “le problème persiste” vous êtes sûr que les pbs en question correspondent bien à un traitement effectué sur une version à jour ?

Je pose la question car, pour le coup, sur une 4.0 ou 5 à jour il n’y a normalement vraiment plus aucune chance d’avoir des doublons de row ID sur PostgreSQL.

En tout cas si vous utilisez bien les séquences => vérifiez que la valeur du paramètre système USE_POSTGRESQL_SEQUENCE est bien à yes (et qu’aucune surcharge statique ou dynamique vient le passer à no)