[cvsnt] Bug id format?
bo.berglund at telia.com
Sat Jan 10 20:28:27 GMT 2009
On Thu, 8 Jan 2009 12:45:52 -0500, "Matthew McClellan"
<MMcClellan at merkleinc.com> wrote:
>I just noticed that each CVS action - whether it results in an email
>sent or not - was generating a crash dump file in the CVS Temp
>directory; I would still receive the correct email from CVSMailer
>though, and the CVSNT services stay up and running. I removed all
>records in CVSROOT/postcommand and set PostCommandSend=0 in the ini file
>and then no crash dump files were created.
>Can anyone explain the value of using PostCommandSend? Is it primarily
>to guarantee that all emails are sent, even in the case that a CVS
>action takes longer than the ini MailSendDelay value?
When the postcommand script appeared in CVSNT (it was not there
before) I enabled the use of tyhis because then one could bypass the
delay during which CVSMailer collects data from all invocations (one
per processed directory) caused by the same client cvs command.
This script is triggered when the command has finished, so I am sure
that there will be no more data from that commit and the email can be
composed from the temp data collected and then sent out.
So with postcommandsend there is no delay from when the cvs action
ends until the mail is sent and it also handles the case when the
processing time is very long, it simply waits until postcommadn
If postcommand is used then the earlier send method must be disabled.
This was done by the first CVSMailer invocation (for a given client
command) spawned a CVSMailer process with a send command. THis process
immediately goes into a sleep for the time set as the delay, then when
it wakes up it collects what data there are and sends the email.
Obviously this has the side effect that the delay must be long enaough
otherwise some later processing data will be lost in the emails.
>Any idea why using PostCommandSend would cause CVSNT to generate a crash
Not really. When the old method of sending emails was used the early
CVSMailer versions did not isolate the child CVSMailer from the parent
(CVSNT). But when I found that temp dirs stayed on I investigated it
more and after I changed the way the CVSMailer is spawned (change
working directory out from the temp dir and create the process without
an owner) it seemed to be OK.
(Bo Berglund, developer in Sweden)
More information about the cvsnt