[GNC] Lightweight multi-user enhancement suggestion
David G. Pickett
dgpickett at aol.com
Thu Jul 16 16:45:51 EDT 2026
The check is just based on a boolean variable set when the lock file is removed. If set, check for a lock file of another user and then check if the primary file is now different. Checking a boolean is the cost of a 1 byte fetch.
Other users arriving can set a lock file and create a new version as usual, but of course will set the boolean and remove that lock file after creating a new primary version with a save.
I suppose that the next modifier of the data should write a new version, as now, not rewrite the primary version, even if they authored the current primary version with a save. We don't want to get into a race condition. There might need to more checking of the lock file, moving that check to where a modification has occurred.
The general idea is that, with timed auto save, the file is quiescent a lot of the time, and the lock file is not necessary. If you reboot without giving gnucash a normal termination, you will generally have to accept that the lock file is irrelevant, although for no-timed-save people, it may indicate a loss of some transactions. Maybe timed save should be mandatory, and only the duration configured?
On Thursday, July 16, 2026 at 03:49:35 PM EDT, Jim Passmore <jim at passmore4.com> wrote:
On Wed, Jul 15, 2026 at 11:34 AM David G. Pickett via gnucash-user <gnucash-user at gnucash.org> wrote:
It occurred to me that, once a save has been completed, gnucash could delete the lock file. This would allow either another user of networked files or a botch run for finance quotes to update the file. If the running original gnucash goes to modify his memory or display a new page or report, a flag can tell it that it deleted the lock, and so check the age of the file
Mulling it over...* How often should it check for the presence of the lock file? Seems like checking the file system before every action could drag down responsiveness. (And if too infrequently, and you'll make a change not knowing the lock file has been created.)* When checking file "age" I assume it would use a time stamp? What happens if the different computers don't have their clocks synchronized? I've even had time stamp craziness on a single computer when dual-booting 2 OS's...one assumes the time on the BIOS clock was local, and the other assumes BIOS is UTC, so they were hours off.
-- Jim
More information about the gnucash-user
mailing list