The bug allows a newly-created element to refer to a deleted one if the transactions for both overlap. Precisely, the issue is that the check that an element exists does not prevent a concurrent transaction from altering that row. Because "deleting" an element in the OSM database does not remove the row, we cannot rely on FK constraints to ensure the correct behaviour. Instead, this fix relies on manually locking referenced elements. Note that this "fix" is suboptimal, as it does not allow any updates to the referenced elements. Updates which do not delete the row could safely be done, but will be prevented. Also, it's not clear what the negative performance impact of this change will be. |
||
---|---|---|
app | ||
config | ||
db | ||
lib | ||
public | ||
script | ||
test | ||
vendor | ||
.coveralls.yml | ||
.gitignore | ||
.mailmap | ||
.rubocop.yml | ||
.rubocop_todo.yml | ||
.travis.yml | ||
config.ru | ||
CONFIGURE.md | ||
CONTRIBUTING.md | ||
Gemfile | ||
Gemfile.lock | ||
INSTALL.md | ||
LICENSE | ||
Rakefile | ||
README.md | ||
VAGRANT.md | ||
Vagrantfile | ||
Vendorfile |
"The Rails Port"
This is The Rails Port, the Ruby on Rails application that powers the OpenStreetMap website and API. The software is also known as "openstreetmap-website".
This repository consists of:
- The web site, including user accounts, diary entries, user-to-user messaging
- The XML-based editing API
- The integrated versions of the Potlatch, Potlatch 2 and iD editors
- The Browse pages - a web front-end to the OpenStreetMap data
- The GPX uploads, browsing and API.
A fully-functional Rails Port installation depends on other services, including map tile servers and geocoding services, that are provided by other software. The default installation uses publicly-available services to help with development and testing.
License
This software is licensed under the GNU General Public License 2.0, a copy of which can be found in the LICENSE file.
Installation
The Rails Port is a Ruby on Rails application that uses PostgreSQL as its database, and has a large number of dependencies for installation. For full details please see INSTALL.md
Development
We're always keen to have more developers! Pull requests are very welcome.
- Bugs are recorded in the issue tracker.
- Some bug reports are also found on the OpenStreetMap trac system, in the "website" and "api" components
- Translation is managed by Translatewiki
- There is a rails-dev@openstreetmap.org mailing list for development discussion.
- IRC - there is the #osm-dev channel on irc.oftc.net.
- There are also weekly meetings of the OpenStreetMap Foundation Engineering Working Group (EWG) on Mondays at 1700 UTC on the #osm-ewg channel.
More details on contributing to the code are in the CONTRIBUTING.md file.