[GRASS-dev] Re: [GRASS GIS] #226: WinGRASS fails to create .gislock
opening a mapset
GRASS GIS
trac at osgeo.org
Fri Dec 16 15:37:24 EST 2011
#226: WinGRASS fails to create .gislock opening a mapset
----------------------------+-----------------------------------------------
Reporter: msieczka | Owner: grass-dev@…
Type: defect | Status: new
Priority: major | Milestone: 6.4.2
Component: Default | Version: svn-develbranch6
Keywords: wingrass, qgis | Platform: MSWindows XP
Cpu: All |
----------------------------+-----------------------------------------------
Comment(by mmetz):
Replying to [comment:14 glynn]:
> Replying to [comment:13 mmetz]:
>
> > How about avoiding PID altogether and writing 'user at host' to .gislock?
> That places the burden of determining whether or not the lock is stale
entirely on the user, as there's no mechanism (even an unreliable one) for
determining whether the session which created the lock file is alive.
Writing pid at host would solve the shared-filesystem issue insofar as it
lets etc/lock know whether the kill() test can be used. If the lock file
was created by a session running on a different system, there's no
portable way to determine whether the session is still alive. However,
displaying the PID and host to the user may allow them to make the
determination manually.
Displaying the PID and host to the user assumes that the user knows the
meaning of PID and host. This is IMHO a false assumption considering the
current state of linux, mac, and windows, where users usually do not have
to know or worry about PID's. These are the officially supported OS's, and
many of their users do not need to be (thus are nowadays probably not)
familiar with the inner workings of their OS, e.g. PID and what process in
particular corresponds to a given PID. Apart from the issues mentioned
earlier that the PID written to .gis_lock does not refer to a PID of the
current system if the mapset is accessible to multiple users and located
on a network drive.
>
> > Currently, in trunk, the wxGUI asks at startup if an existing lock
should really, really be removed. Starting trunk in text mode silently
removes any gislock (needs to be fixed).
> It shouldn't remove the lock file. It should only re-write the lock file
if the PID contained within doesn't match that of an existing process on
the local system. etc/lock terminates with an exit code of 2 if the
.gislock file exists and the PID contained within matches an existing
process, an exit code of 1 if an error occurred (e.g. couldn't create the
file or couldn't write to it) and an exit code of 0 if the file was
written successfully.
>
> > How about a new flag for yes-I-know_what-I'm-doing to try to force
remove an existing lock both at startup and for g.mapset?
> In practice, stale lock files are sufficiently rare that it's debatable
whether it's worth the effort of adding a simpler alternative to manually
deleting the lock file.
Define practice. What about a windows user starting GRASS with msys and
just killing the msys terminal at the end, or not even bothering about the
terminal. I have seen that. I guess that nowadays many GRASS users are
working on a single-user system with a single-user GRASS database, and for
these users GRASS must IMHO work 100%. In this case, a lock is probably
not needed. But there are also other users, e.g. some institutes of public
administration where many different users access the same GRASS location
from individual clients, the GRASS location being located on a central
server. For these, the GRASS locking mechanism must also work, although
admittedly this is first regulated by file system permission settings.
Then there are users like e.g. Markus Neteler, Sören Gebbert, and me who
use GRASS on a cluster system where several hundred nodes may want to
write to the same mapset at the same time (we have a hack solution for
that); these users would be found in scientific research environments.
GRASS makes quite some effort to appease exactly such users (scientists),
thus these need to be accommodated, too.
Practice 1: single user single GRASS database
* best practice would be to ignore a lock and proceed. The question here
is when a stale lock could occur. A stale lock should be a rare exception
in this case.
Practice 2: multiple users, single GRASS database
* best practice would be to acknowledge a lock and quit (usually this
would be regulated through write permissions, though). No chance to
determine if a PID lock is stale.
Practice 3: single user acting as multiple users from different systems,
single GRASS database
* best practice would be to acknowledge a lock and quit (ignore mapset
write permissions, use lock info only). No chance to determine if a PID
lock is stale.
The motivation behind displaying user at host is that most users would know
their user name and ideally the system (host) where they are currently
logged in. This (in addition to write permissions) should suffice to let
the user decide if he wants to try to remove a mapset lock.
Markus M
--
Ticket URL: <http://trac.osgeo.org/grass/ticket/226#comment:15>
GRASS GIS <http://grass.osgeo.org>
More information about the grass-dev
mailing list