[GRASS-dev] Re: [GRASS GIS] #226: WinGRASS fails to create .gislock opening a mapset

GRASS GIS trac at osgeo.org
Sat Dec 17 13:52:27 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 glynn):

 Replying to [comment:15 mmetz]:

 > Displaying the PID and host to the user assumes that the user knows the
 meaning of PID and host.

 If they don't, they probably can't safely deal with a stale lock file.

 On an unshared filesystem, the automatic resoluation via the kill() test
 will usually work. The exceptions are where the PID has since been re-used
 for an unrelated process (false positive), or if the shell itself has been
 killed but child processes are still running (false negative). If they're
 using a shared filessytem, there's probably some form of technical support
 available.

 > 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.

 If the session on that terminal is still "working" (i.e. not just waiting
 for the next command), it's fairly important that they don't just start up
 another session using the same mapset.

 > Practice 1: single user single GRASS database
 >  * best practice would be to ignore a lock and proceed.

 Note that this could result in a corrupted database. I don't know how
 likely it is practice, i.e. whether it's common to have long-running
 background jobs on Windows systems.

 > 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.

 They really need the PID in order to make that determination. Some people
 have jobs which run for days. In a complex environment (where users have
 accounts on several multi-user systems), it's not inconceivable that
 someone can forget which jobs are running on which systems using which
 mapsets.

 In normal use, stale lock files shouldn't occur, so the presumption should
 be that any existing lock file isn't stale. That presumption may be
 overridden in the presence of additional evidence; e.g. if the PID
 contained in the lock file doesn't refer to an existing process
 (particularly if the lock file also contains a host and the host is the
 local system), that tends to indicate staleness (the case where the shell
 has terminated but child processes survive is rather hard to detect).

 The solution to the problems with the existing mechanism should be to fix
 it, e.g. by adding a Windows equivalent of the PID test, and adding the
 host to the PID file. Rather than assuming that a lock file is stale
 solely because the assumption is convenient, regardless of its accuracy.

-- 
Ticket URL: <http://trac.osgeo.org/grass/ticket/226#comment:16>
GRASS GIS <http://grass.osgeo.org>



More information about the grass-dev mailing list