[OSM-dev] Potlatch based OSM walkers editor

Richard Fairhurst richard at systemeD.net
Fri Oct 19 11:33:59 BST 2007

Tom Hughes wrote:

> Exposing the Potlatch API more widely is definitely a concern
> actually - specifically the fact that it (at least in part) pushes
> out the responsibility for maintaining database integrity to the
> client.

The Potlatch API (specifically amf_controller.rb) should really  
handle integrity issues like the rest of the API. If it doesn't then  
that's more a fault of my coding sk1llz not being l33t enough, rather  
than an intentional design decision.

amf_controller.rb has four read-only actions (getpresets, getway,  
whichways, getpoi) which can be safely ignored. The three actions  
that write to the db are putway, deleteway and putpoi. These three  
are designed to work no matter what the state of the database was  
beforehand - in fact, the first thing that putway does is actually a  
getway query, so that it's comparing against the current state of the  
OSM db rather than the state at the last Potlatch download.

Now there may well be restrictions that are implemented in the  
standard API (whether as part of Rails or expressly) that aren't  
implemented in Potlatch. But that's most probably because I'm not  
aware of them and because no-one has got sufficiently pissed off that  
they've hacked amf_controller.rb to insist on them. If there's  
anything amf_controller should check but isn't doing, let me know  
what and I'll implement it.

There have been bugs (most recently putpoi wasn't checking whether a  
POI had become part of a way before deleting it), and there are  
doubtless still some to iron out, as per recent discussions! But on a  
wider level, the one conceptual failing in Potlatch's API at the  
moment is the lack of support for transactions. Really, each write  
action (especially putway) ought to be a single transaction, so that  
another client interrogating the db during Potlatch's putway doesn't  
get a half-complete state (e.g. nodes written but not the way).


More information about the dev mailing list