##// END OF EJS Templates
server: add an error feedback mechanism for when the daemon fails to launch...
server: add an error feedback mechanism for when the daemon fails to launch There's a recurring problem on Windows where `hg serve -d` will randomly fail to spawn a detached process. The reason for the failure is completely hidden, and it takes hours to get a single failure on my laptop. All this does is redirect stdout/stderr of the child to a file until the lock file is freed, and then the parent dumps it out if it fails to spawn. I chose to put the output into the lock file because that is always cleaned up. There's no way to report errors after that anyway. On Windows, killdaemons.py is roughly `kill -9`, so this ensures that junk won't pile up. This may end up being a case of EADDRINUSE. At least that's what I saw spit out a few times (among other odd errors and missing output on Windows). But I also managed to get the same thing on Fedora 26 by running test-hgwebdir.t with --loop -j10 for several hours. Running `netstat` immediately after killing that run printed a wall of sockets in the TIME_WAIT state, which were gone a couple seconds later. I couldn't match up ports that failed, because --loop doesn't print out the message about the port that was used. So maybe the fix is to rotate the use of HGPORT[12] in the tests. But, let's collect some more data first.

File last commit:

r35055:9acc0360 default
r37229:f09a2eab default
Show More
filecomparison.tmpl
90 lines | 2.6 KiB | application/x-cheetah | CheetahLexer
{header}
<title>{repo|escape}: {file|escape} comparison</title>
</head>
<body>
<div class="container">
<div class="menu">
<div class="logo">
<a href="{logourl}">
<img src="{staticurl|urlescape}{logoimg}" alt="mercurial" /></a>
</div>
<ul>
<li><a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">log</a></li>
<li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
<li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
<li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
<li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
</ul>
<ul>
<li><a href="{url|urlescape}rev/{symrev}{sessionvars%urlparameter}">changeset</a></li>
<li><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
</ul>
<ul>
<li><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
<li><a href="{url|urlescape}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
<li><a href="{url|urlescape}diff/{symrev}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
<li class="active">comparison</li>
<li><a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
<li><a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
<li><a href="{url|urlescape}raw-file/{symrev}/{file|urlescape}">raw</a></li>
</ul>
<ul>
<li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
</ul>
</div>
<div class="main">
<h2 class="breadcrumb"><a href="/">Mercurial</a> {pathdef%breadcrumb}</h2>
<h3>
comparison {file|escape} @ {rev}:<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
{alltags}
</h3>
{searchform}
<div class="description">{desc|strip|escape|websub|nonempty}</div>
<table id="changesetEntry">
<tr>
<th>author</th>
<td>{author|obfuscate}</td>
</tr>
<tr>
<th>date</th>
<td class="date age">{date|rfc822date}</td>
</tr>
<tr>
<th>parents</th>
<td>{parent%filerevparent}</td>
</tr>
<tr>
<th>children</th>
<td>{child%filerevchild}</td>
</tr>
</table>
<div class="overflow">
<div class="sourcefirst"> comparison</div>
<div class="legend">
<span class="legendinfo equal">equal</span>
<span class="legendinfo delete">deleted</span>
<span class="legendinfo insert">inserted</span>
<span class="legendinfo replace">replaced</span>
</div>
<table class="bigtable">
<thead class="header">
<tr>
<th>{leftrev}:{leftnode|short}</th>
<th>{rightrev}:{rightnode|short}</th>
</tr>
</thead>
{comparison}
</table>
</div>
</div>
</div>
{footer}