Feature request #14717

Add locking abilities for concurrent project access

Added by Kilian Hagemann 11 months ago.

Status:Open Start Date:04/21/2016
Priority:Normal Due date:
Assigned to:- % Done:

0%

Category:GUI
Target version:Future Release - Nice to have
Platform: Resolution:
Platform version: Pull Request or Patch supplied:No
Status info: Tag:

Description

We use QGIS in a production environment for several projects, and at any given time several people have several of these large (100+ layers) projects (.qgs files) open at any given time. Making changes is now a painful process because the person who wants to make changes has to ask everybody else to find out who else is busy making changes, before adding / rearranging layers and then saving the project without overwriting somebody else's.

For operational reasons it's impractical limit editing to a single person, as is splitting the project into smaller components that can be edited separately. What QGIS needs is project level locking for change management. Some ideas:

  • add optional "lock enforce" project setting - this would force users to lock the project before they're able to save. This could take the shape of a simple file saved alongside the .qgs with owner and date/time information.
  • clicking on "get lock" would first check if there's an existing lock on the project, and whether the .qgs on the (shared network) filesystem is newer than the version that was opened. In both cases the operation should fail and saving should be disallowed (save button greyed out)
  • stale locks could be handled by manual deletion of the lock file

This problem has been solved hundreds of times in the software world (MS Office, Libreoffice etc.) so there may be other tried and tested solutions out there which can quickly be adapted to QGIS.

As this clearly is a production environment feature, we're willing to pay towards implementation of this which would be complementary to #972. I read the sponsorship page which says funding can't be earmarked but perhaps we could talk directly to one of the developers.

Also available in: Atom