2012/8/31 Vincent Privat <vincent.pri...@gmail.com>:
> A la question "pourquoi" c'est facile, les changesets ne sont pas atomiques:
> http://wiki.openstreetmap.org/wiki/API_v0.6#Changesets_2

Euh, En fait, ça ne répond pas à la question. Un changeset n'est pas
une transaction. C'est vrai que ça n'est pas atomique. Mais chaque PUT
vers le serveur est atomique. Ce qui manque, ce sont des commit en
double phases (2PC) ou autres techniques pour la création de nouveaux
objets (pour les updates, il y a l' "optimistic lock" qui gère les
éventuels conflits de versions).

Sans entrer dans les détails, le protocole entre ta machine et le
serveur OSM est ultra-simple. Ce problème de dupplication ne peut
arriver que pour de nouveaux éléments ajoutés dans ton éditeur :
lorsque tu crées un nouvel noeud par exemple, JOSM lui assigne un ID
négatif temporaire (l'OSM_ID, c.a.d un numéro identifiant unique pour
chaque élément dans la base). Quand tu fais "upload", il envoie un
message vers le seveur avec cet ID négatif (que le serveur ignore
superbement) et reçoit en retour un message du serveur qui donne
l'OSM-ID officiel dans la base de données. Quand tout se passe bien,
JOSM continue de fonctionner avec l'ID officiel. Si ça se passe mal,
c'est soit que la réponse du serveur est trop tardive, ou que
l'utlisateur a interrompu l'upload (abort, cancel) ou que un truc
s'est mal passé à l'intérieur du serveur OSM (c'est alors un bug,
heureusement, ça arrive de moins en moins souvent). JOSM conserve
alors l'ID négatif temporaire pour ce noeud puisqu'il n'a pas reçu la
réponse correcte du serveur. Si tu relances l'upload, JOSM considère
que ce noeud est encore nouveau et répète le même message de création
vers la base. C'est comme ça qu'on peut se retrouver avec deux ou
trois fois le même élément dans la base.
Pour éviter ce genre de désagréments, il faut faire un download quand
l'upload se passe mal. Comme ça, on voit ce qui est effectivement dans
la base de données. En lançant une vérification avec Validator, on
détectera les noeuds et ways superposés (mais peut-être pas les
nouvelles relations). Bien sûr, ce que je viens de dire pourrait aussi
être fait automatiquement par JOSM. Ca viendra peut-être un jour.


Pieren

_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr

Reply via email to