Cvs Commit: cvsnt

[email protected]
Newsgroups gmane.comp.version-control.cvs.windows-nt.cvs
Message-ID <[email protected]>
CVSROOT:	/cvs
Module name:	cvsnt
Changes by:	[email protected]		Mon May 10 03:20:30 2010
On host:	2002:71c0:aa2:1:20c:29ff:fe0d:b365

Directory: cvsnt/lockservice

M LockParse.cpp	CVSNT_BRANCH_2_8_01_3761	1.8.2.39.6.8.2.2 -> 1.8.2.39.6.8.2.3	Bug Id: 5918

Directory: cvsnt/protocols

M sspi.cpp	CVSNT_BRANCH_2_8_01_3761	1.25.2.49.6.6 -> 1.25.2.49.6.6.2.1	Bug Id: 5918

Directory: cvsnt/src

M cvs.h	CVSNT_BRANCH_2_8_01_3761	1.93.2.208.6.29.2.3 -> 1.93.2.208.6.29.2.4	Bug Id: 5918
M lock.cpp	CVSNT_BRANCH_2_8_01_3761	1.26.2.49.8.2.2.2 -> 1.26.2.49.8.2.2.3	Bug Id: 5918
M main.cpp	CVSNT_BRANCH_2_8_01_3761	1.71.2.151.6.54.2.2 -> 1.71.2.151.6.54.2.3	Bug Id: 5918
M rcs.cpp	CVSNT_BRANCH_2_8_01_3761	1.80.2.214.4.54.2.1 -> 1.80.2.214.4.54.2.2	Bug Id: 5918
M server.cpp	CVSNT_BRANCH_2_8_01_3761	1.106.2.210.6.99.2.4 -> 1.106.2.210.6.99.2.5	Bug Id: 5918

Directory: cvsnt/windows-NT

M config.h	CVSNT_BRANCH_2_8_01_3761	1.55.2.60.6.5.4.2 -> 1.55.2.60.6.5.4.3	Bug Id: 5918
M filesubr.cpp	CVSNT_BRANCH_2_8_01_3761	1.24.2.45.8.2.2.5 -> 1.24.2.45.8.2.2.6	Bug Id: 5918
M win32.cpp	CVSNT_BRANCH_2_8_01_3761	1.72.2.150.6.44.2.5 -> 1.72.2.150.6.44.2.6	Bug Id: 5918

Log message:
Server modified:
* pass filename/mode/FILE*  to do_lock_file() and then to do_lock_server() 
   if do_lock_server() loops trying to establish a lock then:
      close file before sleep; open after sleep
* lock server now tracks the process id (PID) of the client process 
    (sill also tracks the IP address and username)
* if username blank (eg: 'at' jobs 'SYSTEM') gives real name to lock server 

These new settings control the behaviour:
LockFailReopen = 1 - close/open file handle between lock retries
RCSOpenRetry   = 30 - number of times to retry the open
MoveSleepWait  = 100 - on windows - number of milliseconds between movefileex()
MoveSleepRetry = 300 - on windows - number of movefileex retries

I've tested this on Windows XP x64 with a copy of the Paris+Scotty 
repositories with three (3) concurrent rtag operations.  This 
combination previously would not finish either due to 
'cannot rename file' errors or other timeouts.  With the new 
default values this test completes successfully.

Analysis of servertrace shows that MoveFileEx() still fails from 
time-to-time but a single 1/10th of a second wait is usually sufficient 
to rectify it (an wait's of less than 1 second are not reported to the 
user).  Normal deadlock waits occur more often but with three 
concurrent tags starting at the same time on a mulit-cpu server 
this is to be expected.

Example:
cvsnt rtag: [13:05:32] waiting for SYSTEM on acerW64lap's lock (#4 pid=5416) in /cvsrepo/cvsnt/build.h,v
cvsnt rtag: [13:05:33] obtained lock in build.h,v
cvsnt rtag: [13:05:33] waiting for SYSTEM on acerW64lap's lock (#4 pid=5416) in /cvsrepo/cvsnt/config.sub,v
cvsnt rtag: [13:05:35] obtained lock in config.sub,v
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.