From commitsepatrick@example.org Thu Apr 01 10:13:19 2010 Return-Path: <commitsepatrick@example.org> Delivered-To: epatrick@example.org Received: (qmail 94531 invoked from network); 1 Apr 2010 10:13:18 -0000 Received: from unknown (HELO mail.apache.org) (83.161.120.155) by 83.161.120.155 with SMTP; 1 Apr 2010 10:13:18 -0000 Received: (qmail 72407 invoked by uid 500); 1 Apr 2010 10:13:18 -0000 Delivered-To: epatrick@example.org Received: (qmail 72249 invoked by uid 500); 1 Apr 2010 10:13:16 -0000 Mailing-List: contact epatrick@example.org; run by ezmlm Precedence: bulk List-Help: <mailto:epatrick@example.org> List-Unsubscribe: <mailto:epatrick@example.org> List-Post: <mailto:epatrick@example.org> List-Id: <commits.couchdb.apache.org> Reply-To: epatrick@example.org Delivered-To: mailing list epatrick@example.org Received: (qmail 72242 invoked by uid 99); 1 Apr 2010 10:13:15 -0000 Received: from athena.apache.org (HELO athena.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Apr 2010 10:13:15 +0000 X-ASF-Spam-Status: No, hits=-1469.4 required=10.0 tests=ALL_TRUSTED,AWL X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Apr 2010 10:13:13 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 7DEF1238898B; Thu, 1 Apr 2010 10:12:53 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: svn commit: r929905 - in /couchdb/site/htdocs/community: code.html code.txt committers.html lists.html Date: Thu, 01 Apr 2010 10:12:53 -0000 To: epatrick@example.org From: epatrick@example.org X-Mailer: svnmailer-1.0.8 Message-Id: <epatrick@example.org> Author: jan Date: Thu Apr 1 10:12:52 2010 New Revision: 929905 URL: http://svn.apache.org/viewvc?rev=929905&view=rev Log: add git[hub] mirror info Modified: couchdb/site/htdocs/community/code.html couchdb/site/htdocs/community/code.txt couchdb/site/htdocs/community/committers.html couchdb/site/htdocs/community/lists.html Modified: couchdb/site/htdocs/community/code.html URL: http://svn.apache.org/viewvc/couchdb/site/htdocs/community/code.html?rev=929905&r1=929904&r2=929905&view=diff ============================================================================== --- couchdb/site/htdocs/community/code.html (original) +++ couchdb/site/htdocs/community/code.html Thu Apr 1 10:12:52 2010 @@ -89,7 +89,24 @@ which can also be <pre><code>svn co https://svn.apache.org/repos/asf/couchdb/trunk couchdb </code></pre> -<p>Read more about <a href="http://www.apache.org/dev/version-control.html">version control</a> at the Apache Software Foundation.</p> +<p>Read more about <a href="http://www.apache.org/dev/version-control.html">version control</a> at +the Apache Software Foundation.</p> + +<h2>Git Mirrors</h2> + +<p>If you prefer to use <a href="http://git-scm.com/">git</a> as your version control system, the Apache Software +Foundation maintains a mirror at <a href="http://git.apache.org/">http://git.apache.org/</a></p> + +<p><a href="http://wiki.apache.org/general/GitAtApache">Committers can follow these instructions to commit via git</a>.</p> + +<p>If you like working on <a href="https://github.com/">GitHub</a>, here is the <a href="https://github.com/apache/couchdb">GitHub Apache CouchDB +mirror</a>.</p> + +<p><em>Note:</em> We can't accept <em>pull-requests</em> for contributions for legal reasons. If you +are not a committer and want to contribute code, we have to ask you <a href="https://issues.apache.org/jira/browse/COUCHDB">open a +ticket</a> with your patch attached. Merging your patch can happen via git though, +so if you also include a link to your repository and commit we can make use of that. +But again, it is <em>cruical</em> that you <a href="https://issues.apache.org/jira/browse/COUCHDB">attach your patch to a JIRA issue first</a>.</p> <div id="clear"></div></div> </div></div> <div id="footer"> Modified: couchdb/site/htdocs/community/code.txt URL: http://svn.apache.org/viewvc/couchdb/site/htdocs/community/code.txt?rev=929905&r1=929904&r2=929905&view=diff ============================================================================== --- couchdb/site/htdocs/community/code.txt (original) +++ couchdb/site/htdocs/community/code.txt Thu Apr 1 10:12:52 2010 @@ -18,4 +18,29 @@ Committers should use the secure reposit svn co https://svn.apache.org/repos/asf/couchdb/trunk couchdb -Read more about [version control](http://www.apache.org/dev/version-control.html) at the Apache Software Foundation. +Read more about [version control](http://www.apache.org/dev/version-control.html) at +the Apache Software Foundation. + +Git Mirrors +----------- + +If you prefer to use [git][] as your version control system, the Apache Software +Foundation maintains a mirror at [http://git.apache.org/][asf-git] + +[Committers can follow these instructions to commit via git][asf-git-committers]. + +If you like working on [GitHub][], here is the [GitHub Apache CouchDB +mirror][asf-github]. + +_Note:_ We can't accept _pull-requests_ for contributions for legal reasons. If you +are not a committer and want to contribute code, we have to ask you [open a +ticket][jira] with your patch attached. Merging your patch can happen via git though, +so if you also include a link to your repository and commit we can make use of that. +But again, it is _cruical_ that you [attach your patch to a JIRA issue first][jira]. + +[git]: http://git-scm.com/ +[asf-git]: http://git.apache.org/ +[asf-git-committers]: http://wiki.apache.org/general/GitAtApache +[GitHub]: https://github.com/ +[asf-github]: https://github.com/apache/couchdb +[jira]: https://issues.apache.org/jira/browse/COUCHDB Modified: couchdb/site/htdocs/community/committers.html URL: http://svn.apache.org/viewvc/couchdb/site/htdocs/community/committers.html?rev=929905&r1=929904&r2=929905&view=diff ============================================================================== --- couchdb/site/htdocs/community/committers.html (original) +++ couchdb/site/htdocs/community/committers.html Thu Apr 1 10:12:52 2010 @@ -74,55 +74,55 @@ limitations under the License. </div> <div id="content"><h1>Committers</h1> -<p><a href="http://damienkatz.net/">Damien Katz</a>, <a href="&#x6D;&#97;&#105;&#x6C;&#x74;&#111;:&#x64;&#x61;&#109;i&#101;&#110;&#64;&#x61;&#x70;&#x61;c&#x68;&#x65;&#46;&#111;&#x72;&#103;">&#x64;&#x61;&#109;i&#101;&#110;&#64;&#x61;&#x70;&#x61;c&#x68;&#x65;&#46;&#111;&#x72;&#103;</a></p> +<p><a href="http://damienkatz.net/">Damien Katz</a>, <a href="&#109;&#x61;&#x69;&#x6C;&#x74;&#111;:&#100;a&#x6D;&#105;e&#110;&#64;&#x61;&#112;&#97;&#x63;&#x68;&#x65;&#x2E;&#x6F;&#114;&#x67;">&#100;a&#x6D;&#105;e&#110;&#64;&#x61;&#112;&#97;&#x63;&#x68;&#x65;&#x2E;&#x6F;&#114;&#x67;</a></p> <p>Original developer and remains the project lead.</p> -<p><a href="http://jan.prima.de/">Jan Lehnardt</a>, <a href="&#x6D;&#97;i&#x6C;&#116;&#x6F;:&#106;&#97;&#110;&#64;&#x61;&#112;&#97;&#x63;&#104;&#101;&#46;&#x6F;&#114;&#x67;">&#106;&#97;&#110;&#64;&#x61;&#112;&#97;&#x63;&#104;&#101;&#46;&#x6F;&#114;&#x67;</a></p> +<p><a href="http://jan.prima.de/">Jan Lehnardt</a>, <a href="&#x6D;&#97;&#105;l&#116;&#x6F;:j&#x61;&#110;&#64;&#97;&#x70;&#97;&#99;h&#101;&#46;&#111;&#114;&#x67;">j&#x61;&#110;&#64;&#97;&#x70;&#97;&#99;h&#101;&#46;&#111;&#114;&#x67;</a></p> <p>Worked on the original UNIX port and now works on all ends in CouchDB. He is a freelancing CouchDB consultant and gives presentations around the world.</p> -<p><a href="http://tumbolia.org/nslater">Noah Slater</a>, <a href="&#x6D;&#97;&#x69;&#x6C;&#116;&#111;:&#x6E;&#115;&#108;&#x61;&#x74;&#x65;&#x72;&#64;&#97;&#112;&#97;&#x63;&#x68;e&#x2E;&#111;&#114;&#x67;">&#x6E;&#115;&#108;&#x61;&#x74;&#x65;&#x72;&#64;&#97;&#112;&#97;&#x63;&#x68;e&#x2E;&#111;&#114;&#x67;</a></p> +<p><a href="http://tumbolia.org/nslater">Noah Slater</a>, <a href="&#109;&#x61;&#x69;&#108;&#116;&#111;:&#110;&#x73;&#108;&#x61;&#x74;&#x65;&#x72;&#64;&#x61;&#x70;&#x61;&#99;&#104;&#101;.&#x6F;&#114;&#103;">&#110;&#x73;&#108;&#x61;&#x74;&#x65;&#x72;&#64;&#x61;&#x70;&#x61;&#99;&#104;&#101;.&#x6F;&#114;&#103;</a></p> <p>Developed and maintains the Autotools build system and application infrastructure. He is CouchDB&#8217;s release manager and maintains a number of related packages for Debian GNU/Linux.</p> -<p><a href="http://www.cmlenz.net/">Christopher Lenz</a>, <a href="&#x6D;&#97;&#x69;&#108;&#x74;&#x6F;:&#99;&#109;&#108;&#101;&#x6E;z&#64;&#97;&#x70;&#97;&#x63;&#x68;&#101;&#46;&#x6F;&#x72;&#103;">&#99;&#109;&#108;&#101;&#x6E;z&#64;&#97;&#x70;&#97;&#x63;&#x68;&#101;&#46;&#x6F;&#x72;&#103;</a></p> +<p><a href="http://www.cmlenz.net/">Christopher Lenz</a>, <a href="&#109;&#97;&#105;&#108;&#116;&#x6F;:&#99;&#x6D;&#x6C;&#101;&#110;&#122;&#64;a&#112;a&#x63;&#x68;&#x65;&#46;&#111;&#114;&#x67;">&#99;&#x6D;&#x6C;&#101;&#110;&#122;&#64;a&#112;a&#x63;&#x68;&#x65;&#46;&#111;&#114;&#x67;</a></p> <p>Developed and maintains Futon, the Web administration console. He works on the JavaScript view engine, SpiderMonkey and MochiWeb integration in addition to an external Python client.</p> -<p><a href="http://jchris.mfdz.com">J. Chris Anderson</a>, <a href="&#109;&#x61;&#105;&#x6C;t&#x6F;:&#106;&#99;&#x68;&#114;i&#115;&#64;&#x61;&#112;&#x61;&#x63;&#x68;&#101;&#x2E;&#111;&#114;&#103;">&#106;&#99;&#x68;&#114;i&#115;&#64;&#x61;&#112;&#x61;&#x63;&#x68;&#101;&#x2E;&#111;&#114;&#103;</a></p> +<p><a href="http://jchris.mfdz.com">J. Chris Anderson</a>, <a href="&#x6D;a&#x69;&#x6C;&#116;&#111;:&#x6A;&#x63;&#x68;&#x72;&#x69;s&#64;&#x61;&#x70;&#x61;&#x63;&#104;&#101;&#x2E;&#x6F;&#x72;&#103;">&#x6A;&#x63;&#x68;&#x72;&#x69;s&#64;&#x61;&#x70;&#x61;&#x63;&#104;&#101;&#x2E;&#x6F;&#x72;&#103;</a></p> <p>Upgraded the Erlang JSON term format. Integrates community patches, particularly related to the HTTP API and the MapReduce system. Gives talks and presentations about CouchDB, with an eye toward recruiting more developers.</p> -<p><a href="http://www.davispj.com/">Paul J. Davis</a>, <a href="&#x6D;&#x61;&#105;&#108;&#x74;&#111;:&#x64;&#97;&#x76;&#x69;&#x73;&#x70;&#64;&#97;&#x70;&#x61;&#x63;&#x68;e&#x2E;&#111;r&#x67;">&#x64;&#97;&#x76;&#x69;&#x73;&#x70;&#64;&#97;&#x70;&#x61;&#x63;&#x68;e&#x2E;&#111;r&#x67;</a></p> +<p><a href="http://www.davispj.com/">Paul J. Davis</a>, <a href="&#109;&#x61;i&#108;&#116;&#111;:&#100;&#x61;&#118;&#105;&#115;&#x70;&#64;&#97;&#x70;&#97;&#x63;&#104;&#101;&#x2E;&#x6F;&#x72;&#103;">&#100;&#x61;&#118;&#105;&#115;&#x70;&#64;&#97;&#x70;&#97;&#x63;&#104;&#101;&#x2E;&#x6F;&#x72;&#103;</a></p> <p>Developed features for the HTTP API as well as helped with recent upgrades to the MapReduce system. Spends time tracking down various bugs reported in JIRA.</p> -<p>Adam Kocoloski, <a href="m&#97;&#x69;&#x6C;t&#x6F;:&#107;&#x6F;&#99;&#x6F;&#108;&#111;s&#x6B;&#64;&#97;&#x70;&#x61;c&#104;&#x65;&#x2E;&#x6F;&#114;g">&#107;&#x6F;&#99;&#x6F;&#108;&#111;s&#x6B;&#64;&#97;&#x70;&#x61;c&#104;&#x65;&#x2E;&#x6F;&#114;g</a></p> +<p>Adam Kocoloski, <a href="&#x6D;&#x61;&#x69;&#108;&#116;&#x6F;:k&#x6F;co&#x6C;&#111;&#115;&#x6B;&#64;&#97;&#112;&#97;&#99;&#104;&#x65;&#x2E;&#x6F;&#114;&#x67;">k&#x6F;co&#x6C;&#111;&#115;&#x6B;&#64;&#97;&#112;&#97;&#99;&#104;&#x65;&#x2E;&#x6F;&#114;&#x67;</a></p> <p>Maintains and extends the replicator. Hacks on various other parts of the core database.</p> -<p>Mark Hammond, <a href="&#x6D;&#x61;i&#108;&#116;&#x6F;:&#109;&#x68;&#97;&#x6D;&#109;&#x6F;&#x6E;&#100;&#64;&#97;&#x70;&#97;&#99;&#x68;&#x65;&#x2E;&#x6F;&#x72;&#103;">&#109;&#x68;&#97;&#x6D;&#109;&#x6F;&#x6E;&#100;&#64;&#97;&#x70;&#97;&#99;&#x68;&#x65;&#x2E;&#x6F;&#x72;&#103;</a></p> +<p>Mark Hammond, <a href="&#109;&#x61;&#105;&#108;&#x74;&#111;:&#x6D;&#104;a&#x6D;&#109;&#x6F;&#110;&#100;&#64;&#x61;&#x70;&#x61;ch&#x65;&#x2E;&#x6F;&#x72;&#103;">&#x6D;&#104;a&#x6D;&#109;&#x6F;&#110;&#100;&#64;&#x61;&#x70;&#x61;ch&#x65;&#x2E;&#x6F;&#x72;&#103;</a></p> <p>Windows support.</p> -<p><a href="http://www.jasondavies.com/">Jason Davies</a>, <a href="&#x6D;&#97;&#105;&#108;&#116;&#111;:&#106;&#97;&#x73;&#x6F;&#x6E;d&#x61;&#x76;&#x69;&#x65;s&#64;&#97;&#x70;&#97;&#x63;&#104;&#x65;.&#x6F;&#114;&#x67;">&#106;&#97;&#x73;&#x6F;&#x6E;d&#x61;&#x76;&#x69;&#x65;s&#64;&#97;&#x70;&#97;&#x63;&#104;&#x65;.&#x6F;&#114;&#x67;</a></p> +<p><a href="http://www.jasondavies.com/">Jason Davies</a>, <a href="&#109;&#97;&#105;&#x6C;&#x74;&#x6F;:&#106;&#97;&#x73;&#111;&#x6E;&#x64;&#97;&#x76;&#x69;es&#64;&#x61;&#112;&#97;&#99;&#104;&#101;&#46;&#111;&#114;&#x67;">&#106;&#97;&#x73;&#111;&#x6E;&#x64;&#97;&#x76;&#x69;es&#64;&#x61;&#112;&#97;&#99;&#104;&#101;&#46;&#111;&#114;&#x67;</a></p> <p>Developed various authentication features including cookie-based authentication and OAuth support.</p> -<p><a href="http://benoitc.im">Benoît Chesneau</a>, <a href="&#109;&#x61;&#x69;&#x6C;&#x74;&#111;:&#x62;&#101;&#110;&#111;&#105;&#x74;&#99;&#64;&#97;&#x70;&#97;&#x63;&#104;&#101;&#46;&#x6F;&#114;&#103;">&#x62;&#101;&#110;&#111;&#105;&#x74;&#99;&#64;&#97;&#x70;&#97;&#x63;&#104;&#101;&#46;&#x6F;&#114;&#103;</a></p> +<p><a href="http://benoitc.im">Benoît Chesneau</a>, <a href="&#x6D;a&#105;&#x6C;&#x74;&#111;:&#x62;&#101;&#110;&#111;&#105;&#x74;&#99;&#64;&#97;&#x70;a&#99;&#104;&#x65;&#x2E;&#x6F;r&#x67;">&#x62;&#101;&#110;&#111;&#105;&#x74;&#99;&#64;&#97;&#x70;a&#99;&#104;&#x65;&#x2E;&#x6F;r&#x67;</a></p> <p>Developed the URL rewriter and proxy authentication handlers and provides some patches. He also maintains the couchapp script and some other tools and Modified: couchdb/site/htdocs/community/lists.html URL: http://svn.apache.org/viewvc/couchdb/site/htdocs/community/lists.html?rev=929905&r1=929904&r2=929905&view=diff ============================================================================== --- couchdb/site/htdocs/community/lists.html (original) +++ couchdb/site/htdocs/community/lists.html Thu Apr 1 10:12:52 2010 @@ -90,11 +90,11 @@ discussion of topics related to CouchDB. <ul> <li>To <strong>subscribe</strong>, send an email to -<a href="&#109;&#x61;&#105;&#x6C;&#x74;&#x6F;:&#x75;&#115;&#x65;&#x72;&#x2D;&#115;&#117;&#98;&#115;&#99;&#114;&#105;&#x62;&#101;&#64;&#x63;&#x6F;&#117;c&#x68;&#x64;&#x62;&#x2E;&#97;&#x70;&#x61;&#99;&#x68;e&#x2E;&#x6F;&#114;&#x67;">&#x75;&#115;&#x65;&#x72;&#x2D;&#115;&#117;&#98;&#115;&#99;&#114;&#105;&#x62;&#101;&#64;&#x63;&#x6F;&#117;c&#x68;&#x64;&#x62;&#x2E;&#97;&#x70;&#x61;&#99;&#x68;e&#x2E;&#x6F;&#114;&#x67;</a>.</li> +<a href="&#109;&#x61;&#x69;&#108;&#116;&#111;:&#117;&#115;er&#x2D;&#115;&#117;&#x62;&#x73;&#99;&#114;&#x69;&#98;&#101;&#64;&#99;&#x6F;&#117;&#x63;&#104;d&#98;&#46;&#97;&#x70;&#97;c&#x68;&#x65;&#46;&#111;&#114;&#x67;">&#117;&#115;er&#x2D;&#115;&#117;&#x62;&#x73;&#99;&#114;&#x69;&#98;&#101;&#64;&#99;&#x6F;&#117;&#x63;&#104;d&#98;&#46;&#97;&#x70;&#97;c&#x68;&#x65;&#46;&#111;&#114;&#x67;</a>.</li> <li>To <strong>unsubscribe</strong> send empty email to -<a href="&#109;&#97;&#105;&#108;&#116;&#111;:&#117;&#115;e&#x72;&#x2D;&#117;&#110;&#x73;&#x75;&#x62;&#x73;&#x63;&#114;&#x69;&#x62;&#x65;&#64;&#x63;&#x6F;&#x75;c&#104;&#100;&#98;&#x2E;&#97;&#112;&#97;&#99;&#104;&#101;&#x2E;&#x6F;&#x72;&#x67;">&#117;&#115;e&#x72;&#x2D;&#117;&#110;&#x73;&#x75;&#x62;&#x73;&#x63;&#114;&#x69;&#x62;&#x65;&#64;&#x63;&#x6F;&#x75;c&#104;&#100;&#98;&#x2E;&#97;&#112;&#97;&#99;&#104;&#101;&#x2E;&#x6F;&#x72;&#x67;</a></li> +<a href="&#x6D;&#x61;&#105;&#108;&#116;&#x6F;:&#117;&#115;&#101;&#x72;&#x2D;&#x75;&#x6E;&#x73;&#117;&#x62;&#115;&#99;&#x72;&#x69;&#98;&#101;&#64;c&#x6F;&#117;&#99;&#104;&#100;&#x62;&#46;&#97;&#112;&#x61;&#x63;&#x68;e&#x2E;&#111;&#114;&#x67;">&#117;&#115;&#101;&#x72;&#x2D;&#x75;&#x6E;&#x73;&#117;&#x62;&#115;&#99;&#x72;&#x69;&#98;&#101;&#64;c&#x6F;&#117;&#99;&#104;&#100;&#x62;&#46;&#97;&#112;&#x61;&#x63;&#x68;e&#x2E;&#111;&#114;&#x67;</a></li> <li>Finally, to post a message to the list use the address -<a href="&#109;&#x61;&#105;&#x6C;&#x74;&#111;:&#x75;&#115;&#x65;&#x72;&#64;&#99;&#111;&#117;&#99;&#x68;&#100;&#x62;&#46;&#97;&#x70;&#x61;c&#104;&#101;&#46;o&#114;g">&#x75;&#115;&#x65;&#x72;&#64;&#99;&#111;&#117;&#99;&#x68;&#100;&#x62;&#46;&#97;&#x70;&#x61;c&#104;&#101;&#46;o&#114;g</a></li> +<a href="&#x6D;a&#105;l&#x74;o:&#117;s&#101;&#114;&#64;&#x63;&#111;&#x75;&#99;&#104;&#100;&#x62;.&#x61;&#x70;&#x61;&#99;&#x68;&#x65;&#x2E;&#111;&#114;&#103;">&#117;s&#101;&#114;&#64;&#x63;&#111;&#x75;&#99;&#104;&#100;&#x62;.&#x61;&#x70;&#x61;&#99;&#x68;&#x65;&#x2E;&#111;&#114;&#103;</a></li> </ul> <p>The archives for this list can also be <a href="http://mail-archives.apache.org/mod_mbox/couchdb-user/">browsed online</a>.</p> @@ -109,11 +109,11 @@ participate if they are interested follo <ul> <li>To <strong>subscribe</strong>, send an email to -<a href="&#109;&#97;&#105;&#108;&#x74;o:&#100;&#x65;&#118;&#45;&#x73;&#x75;&#x62;&#x73;c&#x72;&#105;&#98;&#101;&#64;c&#x6F;u&#x63;&#104;&#100;&#x62;&#46;&#x61;&#112;&#97;c&#x68;&#x65;&#x2E;o&#114;&#x67;">&#100;&#x65;&#118;&#45;&#x73;&#x75;&#x62;&#x73;c&#x72;&#105;&#98;&#101;&#64;c&#x6F;u&#x63;&#104;&#100;&#x62;&#46;&#x61;&#112;&#97;c&#x68;&#x65;&#x2E;o&#114;&#x67;</a>.</li> +<a href="&#109;&#x61;&#105;&#108;&#x74;&#111;:&#100;&#101;&#118;&#45;&#115;&#117;&#x62;&#x73;&#99;&#114;i&#x62;&#101;&#64;&#99;&#111;u&#99;&#x68;&#x64;&#x62;.&#x61;&#112;&#x61;&#x63;&#104;&#x65;&#x2E;&#111;&#114;&#x67;">&#100;&#101;&#118;&#45;&#115;&#117;&#x62;&#x73;&#99;&#114;i&#x62;&#101;&#64;&#99;&#111;u&#99;&#x68;&#x64;&#x62;.&#x61;&#112;&#x61;&#x63;&#104;&#x65;&#x2E;&#111;&#114;&#x67;</a>.</li> <li>To <strong>unsubscribe</strong> send empty email to -<a href="&#109;&#x61;&#105;&#108;&#116;o:&#x64;&#x65;&#x76;&#x2D;&#x75;&#x6E;&#x73;&#x75;&#x62;&#x73;&#99;&#114;&#x69;be&#64;&#x63;&#x6F;&#117;&#99;&#104;&#x64;b&#46;a&#x70;&#97;&#99;&#104;&#101;&#46;&#111;&#x72;g">&#x64;&#x65;&#x76;&#x2D;&#x75;&#x6E;&#x73;&#x75;&#x62;&#x73;&#99;&#114;&#x69;be&#64;&#x63;&#x6F;&#117;&#99;&#104;&#x64;b&#46;a&#x70;&#97;&#99;&#104;&#101;&#46;&#111;&#x72;g</a></li> +<a href="&#x6D;&#x61;&#105;&#x6C;&#x74;&#111;:&#100;&#101;&#x76;&#45;&#117;&#x6E;&#x73;&#x75;&#98;&#x73;&#x63;&#114;&#105;&#x62;&#x65;&#64;&#99;&#111;&#x75;&#x63;&#x68;&#100;&#x62;.&#97;&#x70;&#x61;&#99;&#x68;e&#46;&#111;&#114;&#x67;">&#100;&#101;&#x76;&#45;&#117;&#x6E;&#x73;&#x75;&#98;&#x73;&#x63;&#114;&#105;&#x62;&#x65;&#64;&#99;&#111;&#x75;&#x63;&#x68;&#100;&#x62;.&#97;&#x70;&#x61;&#99;&#x68;e&#46;&#111;&#114;&#x67;</a></li> <li>Finally, to post a message to the list use the address -<a href="&#x6D;&#97;&#105;l&#116;&#111;:&#100;&#101;&#118;&#64;&#99;&#x6F;&#117;&#99;&#x68;&#100;&#x62;.&#x61;&#x70;ac&#104;&#x65;&#46;&#x6F;&#114;&#x67;">&#100;&#101;&#118;&#64;&#99;&#x6F;&#117;&#99;&#x68;&#100;&#x62;.&#x61;&#x70;ac&#104;&#x65;&#46;&#x6F;&#114;&#x67;</a></li> +<a href="m&#97;&#105;&#108;&#x74;&#111;:&#x64;&#101;v&#64;&#x63;&#111;&#x75;&#x63;&#x68;&#100;&#98;.&#x61;p&#97;&#x63;&#x68;&#x65;&#x2E;&#111;&#x72;&#x67;">&#x64;&#101;v&#64;&#x63;&#111;&#x75;&#x63;&#x68;&#100;&#98;.&#x61;p&#97;&#x63;&#x68;&#x65;&#x2E;&#111;&#x72;&#x67;</a></li> </ul> <p>The archives for this list can also be <a href="http://mail-archives.apache.org/mod_mbox/couchdb-dev/">browsed online</a>.</p> @@ -126,9 +126,9 @@ to see and review changes made by others <ul> <li>To <strong>subscribe</strong>, send an email to -<a href="&#109;a&#105;&#108;&#x74;&#x6F;:&#99;&#x6F;&#109;&#109;&#x69;&#116;&#x73;&#45;&#115;u&#98;&#115;&#99;r&#x69;&#98;&#101;&#64;&#99;&#x6F;&#117;c&#x68;&#100;&#98;&#x2E;&#x61;&#112;&#x61;&#99;&#x68;&#x65;&#46;o&#x72;&#x67;">&#99;&#x6F;&#109;&#109;&#x69;&#116;&#x73;&#45;&#115;u&#98;&#115;&#99;r&#x69;&#98;&#101;&#64;&#99;&#x6F;&#117;c&#x68;&#100;&#98;&#x2E;&#x61;&#112;&#x61;&#99;&#x68;&#x65;&#46;o&#x72;&#x67;</a>.</li> +<a href="&#x6D;&#97;&#x69;&#108;&#116;&#111;:c&#111;&#x6D;m&#105;&#116;s&#45;&#x73;&#x75;&#98;s&#99;&#114;&#x69;b&#x65;&#64;&#x63;&#x6F;&#117;c&#104;&#100;&#98;&#46;a&#x70;&#97;&#99;&#x68;&#x65;&#46;&#x6F;&#x72;&#x67;">c&#111;&#x6D;m&#105;&#116;s&#45;&#x73;&#x75;&#98;s&#99;&#114;&#x69;b&#x65;&#64;&#x63;&#x6F;&#117;c&#104;&#100;&#98;&#46;a&#x70;&#97;&#99;&#x68;&#x65;&#46;&#x6F;&#x72;&#x67;</a>.</li> <li>To <strong>unsubscribe</strong> send empty email to -<a href="&#109;&#97;&#x69;&#108;&#116;&#x6F;:&#99;&#111;&#x6D;&#109;&#105;&#116;&#115;&#45;&#117;&#x6E;&#x73;&#117;&#98;&#x73;&#99;&#114;&#105;&#98;&#101;&#64;&#99;&#111;&#117;c&#x68;&#100;&#98;&#x2E;&#x61;&#x70;&#x61;&#99;&#104;&#x65;&#46;&#111;&#x72;g">&#99;&#111;&#x6D;&#109;&#105;&#116;&#115;&#45;&#117;&#x6E;&#x73;&#117;&#98;&#x73;&#99;&#114;&#105;&#98;&#101;&#64;&#99;&#111;&#117;c&#x68;&#100;&#98;&#x2E;&#x61;&#x70;&#x61;&#99;&#104;&#x65;&#46;&#111;&#x72;g</a></li> +<a href="&#x6D;&#97;&#105;&#108;&#x74;&#x6F;:c&#111;&#x6D;&#x6D;&#x69;t&#115;&#45;&#117;&#110;&#x73;&#x75;&#98;&#115;&#x63;&#114;i&#x62;&#x65;&#64;c&#x6F;&#x75;&#x63;&#104;&#100;&#x62;&#x2E;&#97;&#x70;&#x61;&#99;&#104;&#101;&#x2E;&#x6F;&#114;&#103;">c&#111;&#x6D;&#x6D;&#x69;t&#115;&#45;&#117;&#110;&#x73;&#x75;&#98;&#115;&#x63;&#114;i&#x62;&#x65;&#64;c&#x6F;&#x75;&#x63;&#104;&#100;&#x62;&#x2E;&#97;&#x70;&#x61;&#99;&#104;&#101;&#x2E;&#x6F;&#114;&#103;</a></li> </ul> <p>The archives for this list can also be <a href="http://mail-archives.apache.org/mod_mbox/couchdb-commits/">browsed online</a>.</p> From commitsepatrick@example.org Thu Apr 01 14:20:39 2010 Return-Path: <commitsepatrick@example.org> Delivered-To: epatrick@example.org Received: (qmail 71724 invoked from network); 1 Apr 2010 14:20:39 -0000 Received: from unknown (HELO mail.apache.org) (83.161.120.155) by 83.161.120.155 with SMTP; 1 Apr 2010 14:20:39 -0000 Received: (qmail 42349 invoked by uid 500); 1 Apr 2010 14:20:39 -0000 Delivered-To: epatrick@example.org Received: (qmail 42225 invoked by uid 500); 1 Apr 2010 14:20:38 -0000 Mailing-List: contact epatrick@example.org; run by ezmlm Precedence: bulk List-Help: <mailto:epatrick@example.org> List-Unsubscribe: <mailto:epatrick@example.org> List-Post: <mailto:epatrick@example.org> List-Id: <commits.couchdb.apache.org> Reply-To: epatrick@example.org Delivered-To: mailing list epatrick@example.org Received: (qmail 42217 invoked by uid 99); 1 Apr 2010 14:20:38 -0000 Received: from athena.apache.org (HELO athena.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Apr 2010 14:20:38 +0000 X-ASF-Spam-Status: No, hits=-1485.5 required=10.0 tests=ALL_TRUSTED,AWL X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Apr 2010 14:20:37 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id F23C423889DE; Thu, 1 Apr 2010 14:20:16 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r929987 - /couchdb/trunk/share/Makefile.am Date: Thu, 01 Apr 2010 14:20:16 -0000 To: epatrick@example.org From: epatrick@example.org X-Mailer: svnmailer-1.0.8 Message-Id: <epatrick@example.org> Author: jan Date: Thu Apr 1 14:20:16 2010 New Revision: 929987 URL: http://svn.apache.org/viewvc?rev=929987&view=rev Log: tab to space Modified: couchdb/trunk/share/Makefile.am Modified: couchdb/trunk/share/Makefile.am URL: http://svn.apache.org/viewvc/couchdb/trunk/share/Makefile.am?rev=929987&r1=929986&r2=929987&view=diff ============================================================================== --- couchdb/trunk/share/Makefile.am (original) +++ couchdb/trunk/share/Makefile.am Thu Apr 1 14:20:16 2010 @@ -137,7 +137,7 @@ nobase_dist_localdata_DATA = \ www/script/test/lots_of_docs.js \ www/script/test/multiple_rows.js \ www/script/test/oauth.js \ - www/script/test/proxyauth.js \ + www/script/test/proxyauth.js \ www/script/test/purge.js \ www/script/test/reader_acl.js \ www/script/test/recreate_doc.js \ From commitsepatrick@example.org Thu Apr 01 17:26:50 2010 Return-Path: <commitsepatrick@example.org> Delivered-To: epatrick@example.org Received: (qmail 33319 invoked from network); 1 Apr 2010 17:26:50 -0000 Received: from unknown (HELO mail.apache.org) (83.161.120.155) by 83.161.120.155 with SMTP; 1 Apr 2010 17:26:50 -0000 Received: (qmail 5904 invoked by uid 500); 1 Apr 2010 17:26:50 -0000 Delivered-To: epatrick@example.org Received: (qmail 5880 invoked by uid 500); 1 Apr 2010 17:26:50 -0000 Mailing-List: contact epatrick@example.org; run by ezmlm Precedence: bulk List-Help: <mailto:epatrick@example.org> List-Unsubscribe: <mailto:epatrick@example.org> List-Post: <mailto:epatrick@example.org> List-Id: <commits.couchdb.apache.org> Reply-To: epatrick@example.org Delivered-To: mailing list epatrick@example.org Received: (qmail 5872 invoked by uid 500); 1 Apr 2010 17:26:50 -0000 Delivered-To: epatrick@example.org Received: (qmail 5858 invoked by uid 99); 1 Apr 2010 17:26:50 -0000 Received: from nike.apache.org (HELO nike.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Apr 2010 17:26:50 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED,T_LOTS_OF_MONEY X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eos.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Apr 2010 17:26:47 +0000 Received: from eos.apache.org (localhost [83.161.120.155]) by eos.apache.org (Postfix) with ESMTP id C577F16E36; Thu, 1 Apr 2010 17:26:25 +0000 (GMT) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Apache Wiki <epatrick@example.org> To: Apache Wiki <epatrick@example.org> Date: Thu, 01 Apr 2010 17:26:25 -0000 Message-ID: <epatrick@example.org> Subject: =?utf-8?q?=5BCouchdb_Wiki=5D_Update_of_=22View=5Fcollation=22_by_ChasEmer?= =?utf-8?q?ick?= X-Virus-Checked: Checked by ClamAV on apache.org Dear Wiki user, You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for c= hange notification. The "View_collation" page has been changed by ChasEmerick. The comment on this change is: changed recommended endkey collation suffix = to \ufff0 instead of \u9999. (Note that I've experimentally determined the= upper bound that couch can handle to be \ufff8, but fff0 seems safer...). http://wiki.apache.org/couchdb/View_collation?action=3Ddiff&rev1=3D11&rev2= =3D12 -------------------------------------------------- A simple introduction to CouchDB view collation. = =3D=3D Basics =3D=3D - = View functions specify a key and a value to be returned for each row. Cou= chDB collates the view rows by this key. In the following example, the !Las= tName property serves as the key, thus the result will be sorted by !LastNa= me: = {{{ @@ -13, +12 @@ } } }}} - = CouchDB allows arbitrary JSON structures to be used as keys. You can use = complex keys for fine-grained control over sorting and grouping. = =3D=3D Examples =3D=3D - = The following clever trick would return both customer and order documents= . The key is composed of a customer ''_id'' and a sorting token. Because th= e key for order documents begins with the ''_id'' of a customer document, a= ll the orders will be sorted by customer. Because the sorting token for cus= tomers is lower than the token for orders, the customer document will come = before the associated orders. The values ''0'' and ''1'' for the sorting to= ken are arbitrary. = {{{ @@ -29, +26 @@ } } }}} - = This trick was [[http://www.cmlenz.net/blog/2007/10/couchdb-joins.html|or= iginally documented]] by Christopher Lenz. = =3D=3D=3D Sorting by Dates =3D=3D=3D + It maybe be convenient to store date attributes in a human readable forma= t (i.e. as a String), but still sort by date. This can be done by convertin= g the date to a number in the emit function. For example, given a document = with a created_at attribute of 'Wed Jul 23 16:29:21 +0100 2008', the follow= ing emit function would sort by date = - It maybe be convenient to store date attributes in a human readable forma= t (i.e. as a String), but still sort by date. This can be done by convertin= g the date to a number in the emit function. For example, given a document = with a created_at attribute of 'Wed Jul 23 16:29:21 +0100 2008', the follow= ing emit function would sort by date {{{ emit(Date.parse(doc.created_at), doc); }}} + Alternatively, if you use a date format which sorts lexicographically, su= ch as "2008/06/09 13:52:11 +0000" you can just = - Alternatively, if you use a date format which sorts lexicographically, su= ch as "2008/06/09 13:52:11 +0000" you can just = {{{ emit(doc.created_at, doc); }}} and avoid the conversion. As a bonus, this date format is compatible with= the Javascript date parser, so you can use ''new Date(doc.created_at)'' in= your client side Javascript to make date sorting easy in the browser. = =3D=3D=3D String Ranges =3D=3D=3D - = If you need start and end keys that encompass every string with a given p= refix, it is better to use a high value unicode character, than to use a 'Z= ZZZ' suffix. = That is, rather than: + = {{{ - startkey=3D"abc"&endkey=3D"abcZZZZZZZZZ" = + startkey=3D"abc"&endkey=3D"abcZZZZZZZZZ" }}} + You should use: = - You should use: {{{ - startkey=3D"abc"&endkey=3D"abc\u9999" = + startkey=3D"abc"&endkey=3D"abc\ufff0" }}} - = =3D=3D Collation Specification =3D=3D - = This section is based on the ''view_collation'' function in ''couch_tests= .js'': = {{{ @@ -106, +100 @@ // that doesn't preserve order {b:2, c:2} }}} - = Comparison of strings is done using [[http://site.icu-project.org/|ICU]] = which implements the [[http://www.unicode.org/unicode/reports/tr10/|Unicode= Collation Algorithm]], giving a dictionary sorting of keys. This can give = surprising results if you were expecting ASCII ordering. Note that: = * All symbols sort before numbers and letters (even the "high" symbols l= ike tilde, 0x7e) @@ -141, +134 @@ = puts RestClient.get("#{DB}/_design/test/_view/one") }}} + This shows the collation sequence to be: = - This shows the collation sequence to be: {{{ ` ^ _ - , ; : ! ? . ' " ( ) [ ] { } @ * / \ & # % + < =3D > | ~ $ 0 1 2= 3 4 5 6 7 8 9 a A b B c C d D e E f F g G h H i I j J k K l L m M n N o O p P q Q r R s= S t T u U v V w W x X y Y z Z }}} - = =3D=3D=3D Key ranges =3D=3D=3D - = Take special care when querying key ranges. For example: the query = {{{ startkey=3D"Abc"&endkey=3D"AbcZZZZ" }}} - = will match "ABC" and "abc1", but not "abc". This is because UCA sorts as = {{{ abc < Abc < ABC < abc1 < AbcZZZZZ }}} - = For most applications, to avoid problems you should lowercase the startke= y, e.g. = {{{ startkey=3D"abc"&endkey=3D"abcZZZZZZZZ" }}} - = will match all keys starting with [aA][bB][cC] = =3D=3D=3D Complex keys =3D=3D=3D - = The query {{{startkey=3D["foo"]&endkey=3D["foo",{}]}}} will match most ar= ray keys with "foo" in the first element, such as {{{["foo","bar"]}}} and {= {{["foo",["bar","baz"]]}}}. However it will not match {{{["foo",{"an":"obje= ct"}]}}} = =3D=3D _all_docs =3D=3D - = The _all_docs view is a special case because it uses ASCII collation for = doc ids, not UCA. For example, = {{{ startkey=3D"_design/"&endkey=3D"_design/ZZZZZZZZ" }}} - = will ''not'' find {{{_design/abc}}} because 'Z' comes before 'a' in the A= SCII sequence. A better solution is: = {{{ startkey=3D"_design/"&endkey=3D"_design0" }}} - = =3D=3D Raw collation =3D=3D - = To squeeze a little more performance out of views, you can specify {{{ "o= ptions":{"collation":"raw"} }}} within the view definition for native Erlan= g collation, especially if you don't require UCA. This gives a different co= llation sequence: = {{{ @@ -201, +184 @@ ["a"] "a" }}} - = Beware that `{}` is no longer a suitable "high" key sentinel value. Use a= string like "~~~~~" instead. =20 From commitsepatrick@example.org Thu Apr 01 19:17:11 2010 Return-Path: <commitsepatrick@example.org> Delivered-To: epatrick@example.org Received: (qmail 75560 invoked from network); 1 Apr 2010 19:17:11 -0000 Received: from unknown (HELO mail.apache.org) (83.161.120.155) by 83.161.120.155 with SMTP; 1 Apr 2010 19:17:11 -0000 Received: (qmail 75391 invoked by uid 500); 1 Apr 2010 19:17:10 -0000 Delivered-To: epatrick@example.org Received: (qmail 75339 invoked by uid 500); 1 Apr 2010 19:17:10 -0000 Mailing-List: contact epatrick@example.org; run by ezmlm Precedence: bulk List-Help: <mailto:epatrick@example.org> List-Unsubscribe: <mailto:epatrick@example.org> List-Post: <mailto:epatrick@example.org> List-Id: <commits.couchdb.apache.org> Reply-To: epatrick@example.org Delivered-To: mailing list epatrick@example.org Received: (qmail 75332 invoked by uid 500); 1 Apr 2010 19:17:10 -0000 Delivered-To: epatrick@example.org Received: (qmail 75329 invoked by uid 99); 1 Apr 2010 19:17:10 -0000 Received: from athena.apache.org (HELO athena.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Apr 2010 19:17:10 +0000 X-ASF-Spam-Status: No, hits=-1205.1 required=10.0 tests=ALL_TRUSTED,AWL X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eos.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Apr 2010 19:17:09 +0000 Received: from eos.apache.org (localhost [83.161.120.155]) by eos.apache.org (Postfix) with ESMTP id 8ECEA16E36; Thu, 1 Apr 2010 19:16:49 +0000 (GMT) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Apache Wiki <epatrick@example.org> To: Apache Wiki <epatrick@example.org> Date: Thu, 01 Apr 2010 19:16:49 -0000 Message-ID: <epatrick@example.org> Subject: =?utf-8?q?=5BCouchdb_Wiki=5D_Update_of_=22GabrielBirke=22_by_GabrielBirke?= Dear Wiki user, You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for c= hange notification. The "GabrielBirke" page has been changed by GabrielBirke. http://wiki.apache.org/couchdb/GabrielBirke -------------------------------------------------- New page: #format wiki #language de =3D=3D Gabriel Birke =3D=3D Meine pers=C3=B6nliche Seite mit Links zu h=C3=A4ufig benutzen Seiten ... ---- CategoryHomepage From commitsepatrick@example.org Thu Apr 01 19:19:35 2010 Return-Path: <commitsepatrick@example.org> Delivered-To: epatrick@example.org Received: (qmail 76061 invoked from network); 1 Apr 2010 19:19:35 -0000 Received: from unknown (HELO mail.apache.org) (83.161.120.155) by 83.161.120.155 with SMTP; 1 Apr 2010 19:19:35 -0000 Received: (qmail 80380 invoked by uid 500); 1 Apr 2010 19:19:35 -0000 Delivered-To: epatrick@example.org Received: (qmail 80343 invoked by uid 500); 1 Apr 2010 19:19:35 -0000 Mailing-List: contact epatrick@example.org; run by ezmlm Precedence: bulk List-Help: <mailto:epatrick@example.org> List-Unsubscribe: <mailto:epatrick@example.org> List-Post: <mailto:epatrick@example.org> List-Id: <commits.couchdb.apache.org> Reply-To: epatrick@example.org Delivered-To: mailing list epatrick@example.org Received: (qmail 80336 invoked by uid 500); 1 Apr 2010 19:19:35 -0000 Delivered-To: epatrick@example.org Received: (qmail 80333 invoked by uid 99); 1 Apr 2010 19:19:35 -0000 Received: from athena.apache.org (HELO athena.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Apr 2010 19:19:35 +0000 X-ASF-Spam-Status: No, hits=-1206.5 required=10.0 tests=ALL_TRUSTED,AWL X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eos.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Apr 2010 19:19:34 +0000 Received: from eos.apache.org (localhost [83.161.120.155]) by eos.apache.org (Postfix) with ESMTP id 60EDC16E36; Thu, 1 Apr 2010 19:19:14 +0000 (GMT) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Apache Wiki <epatrick@example.org> To: Apache Wiki <epatrick@example.org> Date: Thu, 01 Apr 2010 19:19:14 -0000 Message-ID: <epatrick@example.org> Subject: =?utf-8?q?=5BCouchdb_Wiki=5D_Update_of_=22GabrielBirke=22_by_GabrielBirke?= Dear Wiki user, You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for c= hange notification. The "GabrielBirke" page has been changed by GabrielBirke. http://wiki.apache.org/couchdb/GabrielBirke?action=3Ddiff&rev1=3D1&rev2=3D2 -------------------------------------------------- = Meine pers=C3=B6nliche Seite mit Links zu h=C3=A4ufig benutzen Seiten = - ... + * [[HTTP_Document_API]] = ---- CategoryHomepage From commitsepatrick@example.org Fri Apr 02 13:31:41 2010 Return-Path: <commitsepatrick@example.org> Delivered-To: epatrick@example.org Received: (qmail 3611 invoked from network); 2 Apr 2010 13:31:41 -0000 Received: from unknown (HELO mail.apache.org) (83.161.120.155) by 83.161.120.155 with SMTP; 2 Apr 2010 13:31:41 -0000 Received: (qmail 59687 invoked by uid 500); 2 Apr 2010 09:31:41 -0000 Delivered-To: epatrick@example.org Received: (qmail 59555 invoked by uid 500); 2 Apr 2010 09:31:38 -0000 Mailing-List: contact epatrick@example.org; run by ezmlm Precedence: bulk List-Help: <mailto:epatrick@example.org> List-Unsubscribe: <mailto:epatrick@example.org> List-Post: <mailto:epatrick@example.org> List-Id: <commits.couchdb.apache.org> Reply-To: epatrick@example.org Delivered-To: mailing list epatrick@example.org Received: (qmail 59548 invoked by uid 500); 2 Apr 2010 09:31:38 -0000 Delivered-To: epatrick@example.org Received: (qmail 59545 invoked by uid 99); 2 Apr 2010 09:31:37 -0000 Received: from athena.apache.org (HELO athena.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 09:31:37 +0000 X-ASF-Spam-Status: No, hits=-1213.2 required=10.0 tests=ALL_TRUSTED,AWL X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eos.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 09:31:37 +0000 Received: from eos.apache.org (localhost [83.161.120.155]) by eos.apache.org (Postfix) with ESMTP id B602A17DB4; Fri, 2 Apr 2010 09:31:16 +0000 (GMT) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Apache Wiki <epatrick@example.org> To: Apache Wiki <epatrick@example.org> Date: Fri, 02 Apr 2010 09:31:16 -0000 Message-ID: <epatrick@example.org> Subject: =?utf-8?q?=5BCouchdb_Wiki=5D_Update_of_=22HTTP=5Fview=5FAPI=22_by_SeggyUm?= =?utf-8?q?boh?= Dear Wiki user, You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for c= hange notification. The "HTTP_view_API" page has been changed by SeggyUmboh. The comment on this change is: Added a note that all views in a design doc = are rebuilt when the design doc is revised. http://wiki.apache.org/couchdb/HTTP_view_API?action=3Ddiff&rev1=3D34&rev2= =3D35 -------------------------------------------------- = =3D=3D Altering/Changing Views =3D=3D = - To change a view or multiple view just alter the design document (see Htt= pDocumentApi) they are stored in and save it as a new revision. + To change a view or multiple view just alter the design document (see Htt= pDocumentApi) they are stored in and save it as a new revision. This causes= all the views in that design document to be rebuilt. = = =3D=3D Access/Query =3D=3D From commitsepatrick@example.org Fri Apr 02 13:36:42 2010 Return-Path: <commitsepatrick@example.org> Delivered-To: epatrick@example.org Received: (qmail 8242 invoked from network); 2 Apr 2010 13:36:42 -0000 Received: from unknown (HELO mail.apache.org) (83.161.120.155) by 83.161.120.155 with SMTP; 2 Apr 2010 13:36:42 -0000 Received: (qmail 66635 invoked by uid 500); 2 Apr 2010 09:36:42 -0000 Delivered-To: epatrick@example.org Received: (qmail 66515 invoked by uid 500); 2 Apr 2010 09:36:40 -0000 Mailing-List: contact epatrick@example.org; run by ezmlm Precedence: bulk List-Help: <mailto:epatrick@example.org> List-Unsubscribe: <mailto:epatrick@example.org> List-Post: <mailto:epatrick@example.org> List-Id: <commits.couchdb.apache.org> Reply-To: epatrick@example.org Delivered-To: mailing list epatrick@example.org Received: (qmail 66508 invoked by uid 500); 2 Apr 2010 09:36:40 -0000 Delivered-To: epatrick@example.org Received: (qmail 66504 invoked by uid 99); 2 Apr 2010 09:36:39 -0000 Received: from nike.apache.org (HELO nike.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 09:36:39 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eos.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 09:36:37 +0000 Received: from eos.apache.org (localhost [83.161.120.155]) by eos.apache.org (Postfix) with ESMTP id EF53917DB4; Fri, 2 Apr 2010 09:36:15 +0000 (GMT) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Apache Wiki <epatrick@example.org> To: Apache Wiki <epatrick@example.org> Date: Fri, 02 Apr 2010 09:36:15 -0000 Message-ID: <epatrick@example.org> Subject: =?utf-8?q?=5BCouchdb_Wiki=5D_Update_of_=22HTTP=5Fview=5FAPI=22_by_Sebasti?= =?utf-8?q?anCohnen?= X-Virus-Checked: Checked by ClamAV on apache.org Dear Wiki user, You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for c= hange notification. The "HTTP_view_API" page has been changed by SebastianCohnen. The comment on this change is: fixed: views are only updated/rebuild on acc= ess. http://wiki.apache.org/couchdb/HTTP_view_API?action=3Ddiff&rev1=3D35&rev2= =3D36 -------------------------------------------------- = =3D=3D Altering/Changing Views =3D=3D = - To change a view or multiple view just alter the design document (see Htt= pDocumentApi) they are stored in and save it as a new revision. This causes= all the views in that design document to be rebuilt. + To change a view or multiple view just alter the design document (see Htt= pDocumentApi) they are stored in and save it as a new revision. This causes= all the views in that design document to be rebuilt on the next access in = case the view code has been changed. = = =3D=3D Access/Query =3D=3D From commitsepatrick@example.org Fri Apr 02 13:40:18 2010 Return-Path: <commitsepatrick@example.org> Delivered-To: epatrick@example.org Received: (qmail 14029 invoked from network); 2 Apr 2010 13:40:18 -0000 Received: from unknown (HELO mail.apache.org) (83.161.120.155) by 83.161.120.155 with SMTP; 2 Apr 2010 13:40:18 -0000 Received: (qmail 92009 invoked by uid 500); 2 Apr 2010 11:53:38 -0000 Delivered-To: epatrick@example.org Received: (qmail 91925 invoked by uid 500); 2 Apr 2010 11:53:37 -0000 Mailing-List: contact epatrick@example.org; run by ezmlm Precedence: bulk List-Help: <mailto:epatrick@example.org> List-Unsubscribe: <mailto:epatrick@example.org> List-Post: <mailto:epatrick@example.org> List-Id: <commits.couchdb.apache.org> Reply-To: epatrick@example.org Delivered-To: mailing list epatrick@example.org Received: (qmail 91902 invoked by uid 500); 2 Apr 2010 11:53:37 -0000 Delivered-To: epatrick@example.org Received: (qmail 91897 invoked by uid 99); 2 Apr 2010 11:53:37 -0000 Received: from athena.apache.org (HELO athena.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 11:53:37 +0000 X-ASF-Spam-Status: No, hits=-1214.6 required=10.0 tests=ALL_TRUSTED,AWL X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eos.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 11:53:35 +0000 Received: from eos.apache.org (localhost [83.161.120.155]) by eos.apache.org (Postfix) with ESMTP id 87F5317DB4; Fri, 2 Apr 2010 11:53:15 +0000 (GMT) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Apache Wiki <epatrick@example.org> To: Apache Wiki <epatrick@example.org> Date: Fri, 02 Apr 2010 11:53:15 -0000 Message-ID: <epatrick@example.org> Subject: =?utf-8?q?=5BCouchdb_Wiki=5D_Trivial_Update_of_=22Introduction=5Fto=5FCou?= =?utf-8?q?chDB=5Fviews=22_by_SvenHelmberger?= Dear Wiki user, You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for c= hange notification. The "Introduction_to_CouchDB_views" page has been changed by SvenHelmberger. The comment on this change is: 0.11 is no longer trunk. http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views?action=3Ddiff&= rev1=3D32&rev2=3D33 -------------------------------------------------- The second parameter of the ''emit()'' function can be ''null''. CouchDB = then only stores the [key,docid] in the view. You can use the view as a com= pact lookup mechanism and fetch the document's details, if needed, in subse= quent requests or by adding parameter ''include_docs=3Dtrue'' = =3D=3D=3D Linked documents =3D=3D=3D - ''This is a new feature in couchdb trunk / 0.11'' + ''This is a new feature in couchdb 0.11'' = If you emit an object value which has '''{'_id': XXX}''' then include_doc= s will fetch the document with id XXX rather than the document which was pr= ocessed to emit the key/value pair. =20 From commitsepatrick@example.org Fri Apr 02 20:01:39 2010 Return-Path: <commitsepatrick@example.org> Delivered-To: epatrick@example.org Received: (qmail 50273 invoked from network); 2 Apr 2010 20:01:39 -0000 Received: from unknown (HELO mail.apache.org) (83.161.120.155) by 83.161.120.155 with SMTP; 2 Apr 2010 20:01:39 -0000 Received: (qmail 42528 invoked by uid 500); 2 Apr 2010 20:01:38 -0000 Delivered-To: epatrick@example.org Received: (qmail 42483 invoked by uid 500); 2 Apr 2010 20:01:38 -0000 Mailing-List: contact epatrick@example.org; run by ezmlm Precedence: bulk List-Help: <mailto:epatrick@example.org> List-Unsubscribe: <mailto:epatrick@example.org> List-Post: <mailto:epatrick@example.org> List-Id: <commits.couchdb.apache.org> Reply-To: epatrick@example.org Delivered-To: mailing list epatrick@example.org Received: (qmail 42476 invoked by uid 99); 2 Apr 2010 20:01:38 -0000 Received: from nike.apache.org (HELO nike.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 20:01:38 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 20:01:35 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id C499223889FA; Fri, 2 Apr 2010 20:01:14 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r930364 - /couchdb/trunk/src/couchdb/couch_view.erl Date: Fri, 02 Apr 2010 20:01:14 -0000 To: epatrick@example.org From: epatrick@example.org X-Mailer: svnmailer-1.0.8 Message-Id: <epatrick@example.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: damien Date: Fri Apr 2 20:01:14 2010 New Revision: 930364 URL: http://svn.apache.org/viewvc?rev=930364&view=rev Log: Fix hang with view shutdown. Modified: couchdb/trunk/src/couchdb/couch_view.erl Modified: couchdb/trunk/src/couchdb/couch_view.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_view.erl?rev=930364&r1=930363&r2=930364&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_view.erl (original) +++ couchdb/trunk/src/couchdb/couch_view.erl Fri Apr 2 20:01:14 2010 @@ -312,7 +312,8 @@ do_reset_indexes(DbName, Root) -> fun({_DbName, Sig}) -> ?LOG_DEBUG("Killing update process for view group ~s. in database ~s.", [Sig, DbName]), [{_, Pid}] = ets:lookup(group_servers_by_sig, {DbName, Sig}), - couch_util:shutdown_sync(Pid) + couch_util:shutdown_sync(Pid), + delete_from_ets(Pid, DbName, Sig) end, Names), delete_index_dir(Root, DbName), file:delete(Root ++ "/." ++ ?b2l(DbName) ++ "_temp"). From commitsepatrick@example.org Fri Apr 02 20:01:39 2010 Return-Path: <commitsepatrick@example.org> Delivered-To: epatrick@example.org Received: (qmail 50320 invoked from network); 2 Apr 2010 20:01:39 -0000 Received: from unknown (HELO mail.apache.org) (83.161.120.155) by 83.161.120.155 with SMTP; 2 Apr 2010 20:01:39 -0000 Received: (qmail 42666 invoked by uid 500); 2 Apr 2010 20:01:39 -0000 Delivered-To: epatrick@example.org Received: (qmail 42623 invoked by uid 500); 2 Apr 2010 20:01:39 -0000 Mailing-List: contact epatrick@example.org; run by ezmlm Precedence: bulk List-Help: <mailto:epatrick@example.org> List-Unsubscribe: <mailto:epatrick@example.org> List-Post: <mailto:epatrick@example.org> List-Id: <commits.couchdb.apache.org> Reply-To: epatrick@example.org Delivered-To: mailing list epatrick@example.org Received: (qmail 42616 invoked by uid 99); 2 Apr 2010 20:01:39 -0000 Received: from nike.apache.org (HELO nike.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 20:01:39 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 20:01:34 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 0CFC923889CB; Fri, 2 Apr 2010 20:01:12 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r930363 - in /couchdb/trunk: src/couchdb/ test/etap/ Date: Fri, 02 Apr 2010 20:01:11 -0000 To: epatrick@example.org From: epatrick@example.org X-Mailer: svnmailer-1.0.8 Message-Id: <epatrick@example.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: damien Date: Fri Apr 2 20:01:11 2010 New Revision: 930363 URL: http://svn.apache.org/viewvc?rev=930363&view=rev Log: Deterministic/synchronous shutdown code. Modified: couchdb/trunk/src/couchdb/couch_config.erl couchdb/trunk/src/couchdb/couch_db.erl couchdb/trunk/src/couchdb/couch_db_updater.erl couchdb/trunk/src/couchdb/couch_external_server.erl couchdb/trunk/src/couchdb/couch_file.erl couchdb/trunk/src/couchdb/couch_native_process.erl couchdb/trunk/src/couchdb/couch_os_process.erl couchdb/trunk/src/couchdb/couch_query_servers.erl couchdb/trunk/src/couchdb/couch_ref_counter.erl couchdb/trunk/src/couchdb/couch_server.erl couchdb/trunk/src/couchdb/couch_server_sup.erl couchdb/trunk/src/couchdb/couch_stats_collector.erl couchdb/trunk/src/couchdb/couch_util.erl couchdb/trunk/src/couchdb/couch_view.erl couchdb/trunk/src/couchdb/couch_view_group.erl couchdb/trunk/test/etap/010-file-basics.t couchdb/trunk/test/etap/040-util.t Modified: couchdb/trunk/src/couchdb/couch_config.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_config.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_config.erl (original) +++ couchdb/trunk/src/couchdb/couch_config.erl Fri Apr 2 20:01:11 2010 @@ -111,7 +111,7 @@ terminate(_Reason, _State) -> handle_call(all, _From, Config) -> Resp = lists:sort((ets:tab2list(?MODULE))), {reply, Resp, Config}; -handle_call({set, Sec, Key, Val, Persist}, _From, Config) -> +handle_call({set, Sec, Key, Val, Persist}, From, Config) -> true = ets:insert(?MODULE, {{Sec, Key}, Val}), case {Persist, Config#config.write_filename} of {true, undefined} -> @@ -121,9 +121,12 @@ handle_call({set, Sec, Key, Val, Persist _ -> ok end, - [catch F(Sec, Key, Val, Persist) || {_Pid, F} <- Config#config.notify_funs], - {reply, ok, Config}; -handle_call({delete, Sec, Key, Persist}, _From, Config) -> + spawn_link(fun() -> + [catch F(Sec, Key, Val, Persist) || {_Pid, F} <- Config#config.notify_funs], + gen_server:reply(From, ok) + end), + {noreply, Config}; +handle_call({delete, Sec, Key, Persist}, From, Config) -> true = ets:delete(?MODULE, {Sec,Key}), case {Persist, Config#config.write_filename} of {true, undefined} -> @@ -133,8 +136,11 @@ handle_call({delete, Sec, Key, Persist}, _ -> ok end, - [catch F(Sec, Key, deleted, Persist) || {_Pid, F} <- Config#config.notify_funs], - {reply, ok, Config}; + spawn_link(fun() -> + [catch F(Sec, Key, deleted, Persist) || {_Pid, F} <- Config#config.notify_funs], + gen_server:reply(From, ok) + end), + {noreply, Config}; handle_call({register, Fun, Pid}, _From, #config{notify_funs=PidFuns}=Config) -> erlang:monitor(process, Pid), % convert 1 and 2 arity to 3 arity Modified: couchdb/trunk/src/couchdb/couch_db.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_db.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_db.erl (original) +++ couchdb/trunk/src/couchdb/couch_db.erl Fri Apr 2 20:01:11 2010 @@ -915,10 +915,11 @@ init({DbName, Filepath, Fd, Options}) -> {ok, #db{fd_ref_counter=RefCntr}=Db} = gen_server:call(UpdaterPid, get_db), couch_ref_counter:add(RefCntr), couch_stats_collector:track_process_count({couchdb, open_databases}), + process_flag(trap_exit, true), {ok, Db}. -terminate(Reason, _Db) -> - couch_util:terminate_linked(Reason), +terminate(_Reason, Db) -> + couch_util:shutdown_sync(Db#db.update_pid), ok. handle_call({open_ref_count, OpenerPid}, _, #db{fd_ref_counter=RefCntr}=Db) -> @@ -946,7 +947,11 @@ handle_cast(Msg, Db) -> code_change(_OldVsn, State, _Extra) -> {ok, State}. - + +handle_info({'EXIT', _Pid, normal}, Db) -> + {noreply, Db}; +handle_info({'EXIT', _Pid, Reason}, Server) -> + {stop, Reason, Server}; handle_info(Msg, Db) -> ?LOG_ERROR("Bad message received for db ~s: ~p", [Db#db.name, Msg]), exit({error, Msg}). Modified: couchdb/trunk/src/couchdb/couch_db_updater.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_db_updater.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_db_updater.erl (original) +++ couchdb/trunk/src/couchdb/couch_db_updater.erl Fri Apr 2 20:01:11 2010 @@ -20,6 +20,7 @@ init({MainPid, DbName, Filepath, Fd, Options}) -> + process_flag(trap_exit, true), case lists:member(create, Options) of true -> % create a new header and writes it to the file @@ -37,8 +38,10 @@ init({MainPid, DbName, Filepath, Fd, Opt {ok, Db2#db{main_pid=MainPid}}. -terminate(Reason, _Srv) -> - couch_util:terminate_linked(Reason), +terminate(_Reason, Db) -> + couch_file:close(Db#db.fd), + couch_util:shutdown_sync(Db#db.compactor_pid), + couch_util:shutdown_sync(Db#db.fd_ref_counter), ok. handle_call(get_db, _From, Db) -> @@ -214,7 +217,11 @@ handle_info(delayed_commit, Db) -> Db2 -> ok = gen_server:call(Db2#db.main_pid, {db_updated, Db2}), {noreply, Db2} - end. + end; +handle_info({'EXIT', _Pid, normal}, Db) -> + {noreply, Db}; +handle_info({'EXIT', _Pid, Reason}, Db) -> + {stop, Reason, Db}. code_change(_OldVsn, State, _Extra) -> {ok, State}. Modified: couchdb/trunk/src/couchdb/couch_external_server.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_external_server.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_external_server.erl (original) +++ couchdb/trunk/src/couchdb/couch_external_server.erl Fri Apr 2 20:01:11 2010 @@ -50,9 +50,11 @@ terminate(_Reason, {_Name, _Command, Pid handle_call({execute, JsonReq}, _From, {Name, Command, Pid}) -> {reply, couch_os_process:prompt(Pid, JsonReq), {Name, Command, Pid}}. +handle_info({'EXIT', _Pid, normal}, State) -> + {noreply, State}; handle_info({'EXIT', Pid, Reason}, {Name, Command, Pid}) -> ?LOG_INFO("EXTERNAL: Process for ~s exiting. (reason: ~w)", [Name, Reason]), - {stop, normal, {Name, Command, Pid}}. + {stop, Reason, {Name, Command, Pid}}. handle_cast(stop, {Name, Command, Pid}) -> ?LOG_INFO("EXTERNAL: Shutting down ~s", [Name]), Modified: couchdb/trunk/src/couchdb/couch_file.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_file.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_file.erl (original) +++ couchdb/trunk/src/couchdb/couch_file.erl Fri Apr 2 20:01:11 2010 @@ -176,13 +176,21 @@ sync(Fd) -> gen_server:call(Fd, sync, infinity). %%---------------------------------------------------------------------- -%% Purpose: Close the file. Is performed asynchronously. +%% Purpose: Close the file. %% Returns: ok %%---------------------------------------------------------------------- close(Fd) -> - Result = gen_server:cast(Fd, close), - catch unlink(Fd), - Result. + MRef = erlang:monitor(process, Fd), + try + catch unlink(Fd), + catch exit(Fd, shutdown), + receive + {'DOWN', MRef, _, _, _} -> + ok + end + after + erlang:demonitor(MRef, [flush]) + end. % 09 UPGRADE CODE old_pread(Fd, Pos, Len) -> @@ -219,6 +227,7 @@ init_status_error(ReturnPid, Ref, Error) % server functions init({Filepath, Options, ReturnPid, Ref}) -> + process_flag(trap_exit, true), case lists:member(create, Options) of true -> filelib:ensure_dir(Filepath), @@ -432,6 +441,8 @@ handle_cast(close, Fd) -> code_change(_OldVsn, State, _Extra) -> {ok, State}. +handle_info({'EXIT', _, normal}, Fd) -> + {noreply, Fd}; handle_info({'EXIT', _, Reason}, Fd) -> {stop, Reason, Fd}. Modified: couchdb/trunk/src/couchdb/couch_native_process.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_native_process.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_native_process.erl (original) +++ couchdb/trunk/src/couchdb/couch_native_process.erl Fri Apr 2 20:01:11 2010 @@ -94,8 +94,10 @@ handle_call({prompt, Data}, _From, State {reply, Resp, NewState} end. -handle_cast(_Msg, State) -> {noreply, State}. -handle_info(_Msg, State) -> {noreply, State}. +handle_cast(foo, State) -> {noreply, State}. +handle_info({'EXIT',_,normal}, State) -> {noreply, State}; +handle_info({'EXIT',_,Reason}, State) -> + {stop, Reason, State}. terminate(_Reason, _State) -> ok. code_change(_OldVersion, State, _Extra) -> {ok, State}. Modified: couchdb/trunk/src/couchdb/couch_os_process.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_os_process.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_os_process.erl (original) +++ couchdb/trunk/src/couchdb/couch_os_process.erl Fri Apr 2 20:01:11 2010 @@ -104,6 +104,7 @@ readjson(OsProc) when is_record(OsProc, % gen_server API init([Command, Options, PortOptions]) -> + process_flag(trap_exit, true), PrivDir = couch_util:priv_dir(), Spawnkiller = filename:join(PrivDir, "couchspawnkillable"), BaseProc = #os_proc{ Modified: couchdb/trunk/src/couchdb/couch_query_servers.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_query_servers.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_query_servers.erl (original) +++ couchdb/trunk/src/couchdb/couch_query_servers.erl Fri Apr 2 20:01:11 2010 @@ -15,7 +15,7 @@ -export([start_link/0]). --export([init/1, terminate/2, handle_call/3, handle_cast/2, handle_info/2,code_change/3,stop/0]). +-export([init/1, terminate/2, handle_call/3, handle_cast/2, handle_info/2,code_change/3]). -export([start_doc_map/2, map_docs/2, stop_doc_map/1]). -export([reduce/3, rereduce/3,validate_doc_update/5]). -export([filter_docs/5]). @@ -38,9 +38,6 @@ start_link() -> gen_server:start_link({local, couch_query_servers}, couch_query_servers, [], []). -stop() -> - exit(whereis(couch_query_servers), normal). - start_doc_map(Lang, Functions) -> Proc = get_os_process(Lang), lists:foreach(fun(FunctionSource) -> @@ -240,17 +237,18 @@ init([]) -> ok = couch_config:register( fun("query_servers" ++ _, _) -> - ?MODULE:stop() + supervisor:terminate_child(couch_secondary_services, query_servers), + supervisor:restart_child(couch_secondary_services, query_servers) end), ok = couch_config:register( fun("native_query_servers" ++ _, _) -> - ?MODULE:stop() + supervisor:terminate_child(couch_secondary_services, query_servers), + [supervisor:restart_child(couch_secondary_services, query_servers)] end), Langs = ets:new(couch_query_server_langs, [set, private]), PidProcs = ets:new(couch_query_server_pid_langs, [set, private]), LangProcs = ets:new(couch_query_server_procs, [set, private]), - InUse = ets:new(couch_query_server_used, [set, private]), % 'query_servers' specifies an OS command-line to execute. lists:foreach(fun({Lang, Command}) -> true = ets:insert(Langs, {?l2b(Lang), @@ -265,75 +263,71 @@ init([]) -> process_flag(trap_exit, true), {ok, {Langs, % Keyed by language name, value is {Mod,Func,Arg} PidProcs, % Keyed by PID, valus is a #proc record. - LangProcs, % Keyed by language name, value is a #proc record - InUse % Keyed by PID, value is #proc record. + LangProcs % Keyed by language name, value is a #proc record }}. -terminate(_Reason, _Server) -> +terminate(_Reason, {_Langs, PidProcs, _LangProcs}) -> + [couch_util:shutdown_sync(P) || {P,_} <- ets:tab2list(PidProcs)], ok. -handle_call({get_proc, #doc{body={Props}}=DDoc, DDocKey}, _From, {Langs, PidProcs, LangProcs, InUse}=Server) -> +handle_call({get_proc, #doc{body={Props}}=DDoc, DDocKey}, _From, {Langs, PidProcs, LangProcs}=Server) -> % Note to future self. Add max process limit. Lang = proplists:get_value(<<"language">>, Props, <<"javascript">>), case ets:lookup(LangProcs, Lang) of [{Lang, [P|Rest]}] -> % find a proc in the set that has the DDoc case proc_with_ddoc(DDoc, DDocKey, [P|Rest]) of - {ok, Proc} -> - % looks like the proc isn't getting dropped from the list. - % we need to change this to take a fun for equality checking - % so we can do a comparison on portnum - rem_from_list(LangProcs, Lang, Proc), - add_to_list(InUse, Lang, Proc), - {reply, {ok, Proc, get_query_server_config()}, Server}; - Error -> - {reply, Error, Server} - end; + {ok, Proc} -> + rem_from_list(LangProcs, Lang, Proc), + {reply, {ok, Proc, get_query_server_config()}, Server}; + Error -> + {reply, Error, Server} + end; _ -> case (catch new_process(Langs, Lang)) of {ok, Proc} -> add_value(PidProcs, Proc#proc.pid, Proc), case proc_with_ddoc(DDoc, DDocKey, [Proc]) of - {ok, Proc2} -> - rem_from_list(LangProcs, Lang, Proc), - add_to_list(InUse, Lang, Proc2), - {reply, {ok, Proc2, get_query_server_config()}, Server}; - Error -> - {reply, Error, Server} - end; + {ok, Proc2} -> + {reply, {ok, Proc2, get_query_server_config()}, Server}; + Error -> + {reply, Error, Server} + end; Error -> {reply, Error, Server} end end; -handle_call({get_proc, Lang}, _From, {Langs, PidProcs, LangProcs, InUse}=Server) -> +handle_call({get_proc, Lang}, _From, {Langs, PidProcs, LangProcs}=Server) -> % Note to future self. Add max process limit. case ets:lookup(LangProcs, Lang) of [{Lang, [Proc|_]}] -> - add_value(PidProcs, Proc#proc.pid, Proc), rem_from_list(LangProcs, Lang, Proc), - add_to_list(InUse, Lang, Proc), {reply, {ok, Proc, get_query_server_config()}, Server}; _ -> case (catch new_process(Langs, Lang)) of {ok, Proc} -> add_value(PidProcs, Proc#proc.pid, Proc), - add_to_list(InUse, Lang, Proc), {reply, {ok, Proc, get_query_server_config()}, Server}; Error -> {reply, Error, Server} end end; -handle_call({ret_proc, Proc}, _From, {_, _, LangProcs, InUse}=Server) -> +handle_call({unlink_proc, Pid}, _From, {_, PidProcs, _}=Server) -> + rem_value(PidProcs, Pid), + unlink(Pid), + {reply, ok, Server}; +handle_call({ret_proc, Proc}, _From, {_, PidProcs, LangProcs}=Server) -> % Along with max process limit, here we should check % if we're over the limit and discard when we are. + add_value(PidProcs, Proc#proc.pid, Proc), add_to_list(LangProcs, Proc#proc.lang, Proc), - rem_from_list(InUse, Proc#proc.lang, Proc), + link(Proc#proc.pid), {reply, true, Server}. handle_cast(_Whatever, Server) -> {noreply, Server}. -handle_info({'EXIT', Pid, Status}, {_, PidProcs, LangProcs, InUse}=Server) -> +handle_info({'EXIT', Pid, Status}, {_, PidProcs, LangProcs}=Server) -> case ets:lookup(PidProcs, Pid) of [{Pid, Proc}] -> case Status of @@ -342,11 +336,14 @@ handle_info({'EXIT', Pid, Status}, {_, P end, rem_value(PidProcs, Pid), catch rem_from_list(LangProcs, Proc#proc.lang, Proc), - catch rem_from_list(InUse, Proc#proc.lang, Proc), {noreply, Server}; [] -> - ?LOG_DEBUG("Unknown linked process died: ~p (reason: ~p)", [Pid, Status]), - {stop, Status, Server} + case Status of + normal -> + {noreply, Server}; + _ -> + {stop, Status, Server} + end end. code_change(_OldVsn, State, _Extra) -> @@ -423,6 +420,7 @@ get_ddoc_process(#doc{} = DDoc, DDocKey) proc_set_timeout(Proc, list_to_integer(couch_config:get( "couchdb", "os_process_timeout", "5000"))), link(Proc#proc.pid), + gen_server:call(couch_query_servers, {unlink_proc, Proc#proc.pid}), Proc; _ -> catch proc_stop(Proc), @@ -440,6 +438,7 @@ get_os_process(Lang) -> proc_set_timeout(Proc, list_to_integer(couch_config:get( "couchdb", "os_process_timeout", "5000"))), link(Proc#proc.pid), + gen_server:call(couch_query_servers, {unlink_proc, Proc#proc.pid}), Proc; _ -> catch proc_stop(Proc), Modified: couchdb/trunk/src/couchdb/couch_ref_counter.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_ref_counter.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_ref_counter.erl (original) +++ couchdb/trunk/src/couchdb/couch_ref_counter.erl Fri Apr 2 20:01:11 2010 @@ -40,17 +40,18 @@ count(RefCounterPid) -> -record(srv, { - referrers=dict:new() % a dict of each ref counting proc. + referrers=dict:new(), % a dict of each ref counting proc. + child_procs=[] }). init({Pid, ChildProcs}) -> [link(ChildProc) || ChildProc <- ChildProcs], Referrers = dict:from_list([{Pid, {erlang:monitor(process, Pid), 1}}]), - {ok, #srv{referrers=Referrers}}. + {ok, #srv{referrers=Referrers, child_procs=ChildProcs}}. -terminate(Reason, _Srv) -> - couch_util:terminate_linked(Reason), +terminate(_Reason, #srv{child_procs=ChildProcs}) -> + [couch_util:shutdown_sync(Pid) || Pid <- ChildProcs], ok. Modified: couchdb/trunk/src/couchdb/couch_server.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_server.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_server.erl (original) +++ couchdb/trunk/src/couchdb/couch_server.erl Fri Apr 2 20:01:11 2010 @@ -147,8 +147,9 @@ init([]) -> max_dbs_open=MaxDbsOpen, start_time=httpd_util:rfc1123_date()}}. -terminate(Reason, _Srv) -> - couch_util:terminate_linked(Reason), +terminate(_Reason, _Srv) -> + [couch_util:shutdown_sync(Pid) || {_, {Pid, _LruTime}} <- + ets:tab2list(couch_dbs_by_name)], ok. all_databases() -> @@ -189,8 +190,7 @@ try_close_lru(StartTime) -> [{_, {opened, MainPid, LruTime}}] = ets:lookup(couch_dbs_by_name, DbName), case couch_db:is_idle(MainPid) of true -> - exit(MainPid, kill), - receive {'EXIT', MainPid, _Reason} -> ok end, + couch_util:shutdown_sync(MainPid), true = ets:delete(couch_dbs_by_lru, LruTime), true = ets:delete(couch_dbs_by_name, DbName), true = ets:delete(couch_dbs_by_pid, MainPid), @@ -212,7 +212,13 @@ open_async(Server, From, DbName, Filepat Opener = spawn_link(fun() -> Res = couch_db:start_link(DbName, Filepath, Options), gen_server:call(Parent, {open_result, DbName, Res}, infinity), - unlink(Parent) + unlink(Parent), + case Res of + {ok, DbReader} -> + unlink(DbReader); + _ -> + ok + end end), true = ets:insert(couch_dbs_by_name, {DbName, {opening, Opener, [From]}}), true = ets:insert(couch_dbs_by_pid, {Opener, DbName}), @@ -299,15 +305,13 @@ handle_call({delete, DbName, _Options}, case ets:lookup(couch_dbs_by_name, DbName) of [] -> Server; [{_, {opening, Pid, Froms}}] -> - exit(Pid, kill), - receive {'EXIT', Pid, _Reason} -> ok end, + couch_util:shutdown_sync(Pid), true = ets:delete(couch_dbs_by_name, DbName), true = ets:delete(couch_dbs_by_pid, Pid), [gen_server:send_result(F, not_found) || F <- Froms], Server#server{dbs_open=Server#server.dbs_open - 1}; [{_, {opened, Pid, LruTime}}] -> - exit(Pid, kill), - receive {'EXIT', Pid, _Reason} -> ok end, + couch_util:shutdown_sync(Pid), true = ets:delete(couch_dbs_by_name, DbName), true = ets:delete(couch_dbs_by_pid, Pid), true = ets:delete(couch_dbs_by_lru, LruTime), @@ -336,20 +340,10 @@ handle_cast(Msg, _Server) -> code_change(_OldVsn, State, _Extra) -> {ok, State}. - -handle_info({'EXIT', _Pid, config_change}, _Server) -> - exit(kill); -handle_info({'EXIT', Pid, Reason}, #server{dbs_open=DbsOpen}=Server) -> - [{Pid, DbName}] = ets:lookup(couch_dbs_by_pid, Pid), - case ets:lookup(couch_dbs_by_name, DbName) of - [{DbName, {opened, Pid, LruTime}}] -> - true = ets:delete(couch_dbs_by_lru, LruTime); - [{DbName, {opening, Pid, Froms}}] -> - [gen_server:reply(From, Reason) || From <- Froms] - end, - true = ets:delete(couch_dbs_by_pid, Pid), - true = ets:delete(couch_dbs_by_name, DbName), - {noreply, Server#server{dbs_open=DbsOpen - 1}}; -handle_info(Info, _Server) -> - exit({unknown_message, Info}). + +handle_info({'EXIT', _Pid, config_change}, Server) -> + {noreply, shutdown, Server}; +handle_info(Error, _Server) -> + ?LOG_ERROR("Unexpected message, restarting couch_server: ~p", [Error]), + exit(kill). Modified: couchdb/trunk/src/couchdb/couch_server_sup.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_server_sup.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_server_sup.erl (original) +++ couchdb/trunk/src/couchdb/couch_server_sup.erl Fri Apr 2 20:01:11 2010 @@ -169,7 +169,7 @@ start_secondary_services() -> {list_to_atom(Name), {Module, Fun, Args}, permanent, - brutal_kill, + 1000, worker, [Module]} end Modified: couchdb/trunk/src/couchdb/couch_stats_collector.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_stats_collector.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_stats_collector.erl (original) +++ couchdb/trunk/src/couchdb/couch_stats_collector.erl Fri Apr 2 20:01:11 2010 @@ -60,7 +60,7 @@ increment(Key) -> Key2 = make_key(Key), case catch ets:update_counter(?HIT_TABLE, Key2, 1) of {'EXIT', {badarg, _}} -> - true = ets:insert(?HIT_TABLE, {Key2, 1}), + catch ets:insert(?HIT_TABLE, {Key2, 1}), ok; _ -> ok @@ -70,16 +70,16 @@ decrement(Key) -> Key2 = make_key(Key), case catch ets:update_counter(?HIT_TABLE, Key2, -1) of {'EXIT', {badarg, _}} -> - true = ets:insert(?HIT_TABLE, {Key2, -1}), + catch ets:insert(?HIT_TABLE, {Key2, -1}), ok; _ -> ok end. record(Key, Value) -> - true = ets:insert(?ABS_TABLE, {make_key(Key), Value}). + catch ets:insert(?ABS_TABLE, {make_key(Key), Value}). clear(Key) -> - true = ets:delete(?ABS_TABLE, make_key(Key)). + catch ets:delete(?ABS_TABLE, make_key(Key)). track_process_count(Stat) -> track_process_count(self(), Stat). Modified: couchdb/trunk/src/couchdb/couch_util.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_util.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_util.erl (original) +++ couchdb/trunk/src/couchdb/couch_util.erl Fri Apr 2 20:01:11 2010 @@ -12,7 +12,7 @@ -module(couch_util). --export([priv_dir/0, start_driver/1, normpath/1, terminate_linked/1]). +-export([priv_dir/0, start_driver/1, normpath/1]). -export([should_flush/0, should_flush/1, to_existing_atom/1]). -export([rand32/0, implode/2, collate/2, collate/3]). -export([abs_pathname/1,abs_pathname/2, trim/1, ascii_lower/1]). @@ -21,7 +21,7 @@ -export([file_read_size/1, get_nested_json_value/2, json_user_ctx/1]). -export([to_binary/1, to_integer/1, to_list/1, url_encode/1]). -export([json_encode/1, json_decode/1]). --export([verify/2]). +-export([verify/2,simple_call/2,shutdown_sync/1]). -export([compressible_att_type/1]). -include("couch_db.hrl"). @@ -72,14 +72,35 @@ to_existing_atom(V) when is_binary(V) -> to_existing_atom(V) when is_atom(V) -> V. +shutdown_sync(Pid) when not is_pid(Pid)-> + ok; +shutdown_sync(Pid) -> + MRef = erlang:monitor(process, Pid), + try + catch unlink(Pid), + catch exit(Pid, shutdown), + receive + {'DOWN', MRef, _, _, _} -> + ok + end + after + erlang:demonitor(MRef, [flush]) + end. + -terminate_linked(normal) -> - terminate_linked(shutdown); -terminate_linked(Reason) -> - {links, Links} = process_info(self(), links), - [catch exit(Pid, Reason) || Pid <- Links], - ok. - +simple_call(Pid, Message) -> + MRef = erlang:monitor(process, Pid), + try + Pid ! {self(), Message}, + receive + {Pid, Result} -> + Result; + {'DOWN', MRef, _, _, Reason} -> + exit(Reason) + end + after + erlang:demonitor(MRef, [flush]) + end. to_hex([]) -> []; Modified: couchdb/trunk/src/couchdb/couch_view.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_view.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_view.erl (original) +++ couchdb/trunk/src/couchdb/couch_view.erl Fri Apr 2 20:01:11 2010 @@ -269,8 +269,9 @@ init([]) -> {ok, #server{root_dir=RootDir}}. -terminate(Reason, _Srv) -> - couch_util:terminate_linked(Reason), +terminate(_Reason, _Srv) -> + [couch_util:shutdown_sync(Pid) || {Pid, _} <- + ets:tab2list(couch_groups_by_updater)], ok. @@ -311,10 +312,7 @@ do_reset_indexes(DbName, Root) -> fun({_DbName, Sig}) -> ?LOG_DEBUG("Killing update process for view group ~s. in database ~s.", [Sig, DbName]), [{_, Pid}] = ets:lookup(group_servers_by_sig, {DbName, Sig}), - exit(Pid, kill), - receive {'EXIT', Pid, _} -> - delete_from_ets(Pid, DbName, Sig) - end + couch_util:shutdown_sync(Pid) end, Names), delete_index_dir(Root, DbName), file:delete(Root ++ "/." ++ ?b2l(DbName) ++ "_temp"). Modified: couchdb/trunk/src/couchdb/couch_view_group.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_view_group.erl?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_view_group.erl (original) +++ couchdb/trunk/src/couchdb/couch_view_group.erl Fri Apr 2 20:01:11 2010 @@ -341,8 +341,8 @@ handle_info({'DOWN',_,_,_,_}, State) -> terminate(Reason, #group_state{updater_pid=Update, compactor_pid=Compact}=S) -> reply_all(S, Reason), - catch exit(Update, Reason), - catch exit(Compact, Reason), + couch_util:shutdown_sync(Update), + couch_util:shutdown_sync(Compact), ok. code_change(_OldVsn, State, _Extra) -> Modified: couchdb/trunk/test/etap/010-file-basics.t URL: http://svn.apache.org/viewvc/couchdb/trunk/test/etap/010-file-basics.t?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/test/etap/010-file-basics.t (original) +++ couchdb/trunk/test/etap/010-file-basics.t Fri Apr 2 20:01:11 2010 @@ -16,7 +16,7 @@ filename() -> test_util:build_file("test main(_) -> test_util:init_code_path(), - etap:plan(16), + etap:plan(19), case (catch test()) of ok -> etap:end_tests(); @@ -67,6 +67,19 @@ test() -> {ok, BinPos} = couch_file:append_binary(Fd, <<131,100,0,3,102,111,111>>), etap:is({ok, foo}, couch_file:pread_term(Fd, BinPos), "Reading a term from a written binary term representation succeeds."), + + BigBin = list_to_binary(lists:duplicate(100000, 0)), + {ok, BigBinPos} = couch_file:append_binary(Fd, BigBin), + etap:is({ok, BigBin}, couch_file:pread_binary(Fd, BigBinPos), + "Reading a large term from a written representation succeeds."), + + ok = couch_file:write_header(Fd, hello), + etap:is({ok, hello}, couch_file:read_header(Fd), + "Reading a header succeeds."), + + {ok, BigBinPos2} = couch_file:append_binary(Fd, BigBin), + etap:is({ok, BigBin}, couch_file:pread_binary(Fd, BigBinPos2), + "Reading a large term from a written representation succeeds 2."), % append_binary == append_iolist? % Possible bug in pread_iolist or iolist() -> append_binary Modified: couchdb/trunk/test/etap/040-util.t URL: http://svn.apache.org/viewvc/couchdb/trunk/test/etap/040-util.t?rev=930363&r1=930362&r2=930363&view=diff ============================================================================== --- couchdb/trunk/test/etap/040-util.t (original) +++ couchdb/trunk/test/etap/040-util.t Fri Apr 2 20:01:11 2010 @@ -17,7 +17,7 @@ main(_) -> test_util:init_code_path(), application:start(crypto), - etap:plan(16), + etap:plan(14), case (catch test()) of ok -> etap:end_tests(); @@ -35,29 +35,6 @@ test() -> etap:is(foobarbaz, couch_util:to_existing_atom("foobarbaz"), "A list of atoms is one munged atom."), - % terminate_linked - Self = self(), - - spawn(fun() -> - SecondSelf = self(), - ChildPid = spawn_link(fun() -> - SecondSelf ! {child, started}, - receive shutdown -> ok end - end), - PidUp = receive - {child, started} -> ok - after 1000 -> - {error, timeout} - end, - etap:is(ok, PidUp, "Started a linked process."), - couch_util:terminate_linked(normal), - Self ! {pid, ChildPid} - end), - receive - {pid, Pid} -> - etap:ok(not is_process_alive(Pid), "Linked process was killed.") - end, - % implode etap:is([1, 38, 2, 38, 3], couch_util:implode([1,2,3],"&"), "use & as separator in list."), From commitsepatrick@example.org Fri Apr 02 20:01:41 2010 Return-Path: <commitsepatrick@example.org> Delivered-To: epatrick@example.org Received: (qmail 50370 invoked from network); 2 Apr 2010 20:01:41 -0000 Received: from unknown (HELO mail.apache.org) (83.161.120.155) by 83.161.120.155 with SMTP; 2 Apr 2010 20:01:41 -0000 Received: (qmail 42799 invoked by uid 500); 2 Apr 2010 20:01:40 -0000 Delivered-To: epatrick@example.org Received: (qmail 42767 invoked by uid 500); 2 Apr 2010 20:01:40 -0000 Mailing-List: contact epatrick@example.org; run by ezmlm Precedence: bulk List-Help: <mailto:epatrick@example.org> List-Unsubscribe: <mailto:epatrick@example.org> List-Post: <mailto:epatrick@example.org> List-Id: <commits.couchdb.apache.org> Reply-To: epatrick@example.org Delivered-To: mailing list epatrick@example.org Received: (qmail 42760 invoked by uid 99); 2 Apr 2010 20:01:40 -0000 Received: from nike.apache.org (HELO nike.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 20:01:40 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 20:01:38 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 877382388A90; Fri, 2 Apr 2010 20:01:17 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r930365 - /couchdb/trunk/src/couchdb/couch_server.erl Date: Fri, 02 Apr 2010 20:01:17 -0000 To: epatrick@example.org From: epatrick@example.org X-Mailer: svnmailer-1.0.8 Message-Id: <epatrick@example.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: damien Date: Fri Apr 2 20:01:17 2010 New Revision: 930365 URL: http://svn.apache.org/viewvc?rev=930365&view=rev Log: change couch_server calls to have infinity timeout, because it might have to wait for disk io. Modified: couchdb/trunk/src/couchdb/couch_server.erl Modified: couchdb/trunk/src/couchdb/couch_server.erl URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_server.erl?rev=930365&r1=930364&r2=930365&view=diff ============================================================================== --- couchdb/trunk/src/couchdb/couch_server.erl (original) +++ couchdb/trunk/src/couchdb/couch_server.erl Fri Apr 2 20:01:17 2010 @@ -51,7 +51,7 @@ sup_start_link() -> gen_server:start_link({local, couch_server}, couch_server, [], []). open(DbName, Options) -> - case gen_server:call(couch_server, {open, DbName, Options}) of + case gen_server:call(couch_server, {open, DbName, Options}, infinity) of {ok, Db} -> Ctx = proplists:get_value(user_ctx, Options, #user_ctx{}), {ok, Db#db{user_ctx=Ctx}}; @@ -60,7 +60,7 @@ open(DbName, Options) -> end. create(DbName, Options) -> - case gen_server:call(couch_server, {create, DbName, Options}) of + case gen_server:call(couch_server, {create, DbName, Options}, infinity) of {ok, Db} -> Ctx = proplists:get_value(user_ctx, Options, #user_ctx{}), {ok, Db#db{user_ctx=Ctx}}; @@ -69,7 +69,7 @@ create(DbName, Options) -> end. delete(DbName, Options) -> - gen_server:call(couch_server, {delete, DbName, Options}). + gen_server:call(couch_server, {delete, DbName, Options}, infinity). check_dbname(#server{dbname_regexp=RegExp}, DbName) -> case re:run(DbName, RegExp, [{capture, none}]) of From commitsepatrick@example.org Fri Apr 02 20:14:18 2010 Return-Path: <commitsepatrick@example.org> Delivered-To: epatrick@example.org Received: (qmail 52252 invoked from network); 2 Apr 2010 20:14:18 -0000 Received: from unknown (HELO mail.apache.org) (83.161.120.155) by 83.161.120.155 with SMTP; 2 Apr 2010 20:14:18 -0000 Received: (qmail 53964 invoked by uid 500); 2 Apr 2010 20:14:18 -0000 Delivered-To: epatrick@example.org Received: (qmail 53923 invoked by uid 500); 2 Apr 2010 20:14:18 -0000 Mailing-List: contact epatrick@example.org; run by ezmlm Precedence: bulk List-Help: <mailto:epatrick@example.org> List-Unsubscribe: <mailto:epatrick@example.org> List-Post: <mailto:epatrick@example.org> List-Id: <commits.couchdb.apache.org> Reply-To: epatrick@example.org Delivered-To: mailing list epatrick@example.org Received: (qmail 53916 invoked by uid 99); 2 Apr 2010 20:14:18 -0000 Received: from nike.apache.org (HELO nike.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 20:14:18 +0000 X-ASF-Spam-Status: No, hits=0.7 required=10.0 tests=SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [83.161.120.155] (HELO ceres.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 20:14:10 +0000 Received: from ceres.apache.org (localhost [83.161.120.155]) by ceres.apache.org (Postfix) with SMTP id 8CA7428058 for <epatrick@example.org>; Fri, 2 Apr 2010 20:16:56 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain Date: Fri, 02 Apr 2010 20:16:56 +0000 Subject: buildbot success in ASF Buildbot on couchdb-coverage From: epatrick@example.org To: epatrick@example.org Message-Id: <epatrick@example.org> X-Virus-Checked: Checked by ClamAV on apache.org The Buildbot has detected a restored build of couchdb-coverage on ASF Buildbot. Full details are available at: http://ci.apache.org/builders/couchdb-coverage/builds/265 Buildbot URL: http://ci.apache.org/ Buildslave for this Build: bb-vm_ubuntu Build Reason: Build Source Stamp: [branch couchdb/trunk] 930365 Blamelist: damien Build succeeded! sincerely, -The ASF Buildbot From commitsepatrick@example.org Fri Apr 02 23:17:27 2010 Return-Path: <commitsepatrick@example.org> Delivered-To: epatrick@example.org Received: (qmail 85093 invoked from network); 2 Apr 2010 23:17:27 -0000 Received: from unknown (HELO mail.apache.org) (83.161.120.155) by 83.161.120.155 with SMTP; 2 Apr 2010 23:17:27 -0000 Received: (qmail 31383 invoked by uid 500); 2 Apr 2010 23:17:27 -0000 Delivered-To: epatrick@example.org Received: (qmail 31340 invoked by uid 500); 2 Apr 2010 23:17:27 -0000 Mailing-List: contact epatrick@example.org; run by ezmlm Precedence: bulk List-Help: <mailto:epatrick@example.org> List-Unsubscribe: <mailto:epatrick@example.org> List-Post: <mailto:epatrick@example.org> List-Id: <commits.couchdb.apache.org> Reply-To: epatrick@example.org Delivered-To: mailing list epatrick@example.org Received: (qmail 31333 invoked by uid 99); 2 Apr 2010 23:17:27 -0000 Received: from athena.apache.org (HELO athena.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 23:17:27 +0000 X-ASF-Spam-Status: No, hits=-1001.3 required=10.0 tests=ALL_TRUSTED,AWL X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Apr 2010 23:17:23 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 125AC238899B; Fri, 2 Apr 2010 23:17:03 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r930430 - in /couchdb/trunk: etc/couchdb/default.ini.tpl.in share/www/script/test/changes.js share/www/script/test/oauth.js share/www/script/test/stats.js src/couchdb/couch_httpd_misc_handlers.erl Date: Fri, 02 Apr 2010 23:17:02 -0000 To: epatrick@example.org From: epatrick@example.org X-Mailer: svnmailer-1.0.8 Message-Id: <epatrick@example.org> Author: damien Date: Fri Apr 2 23:17:02 2010 New Revision: 930430 URL: http://svn.apache.org/viewvc?rev=930430&view=rev Log: Removed _sleep from all tests. replaced with loops that spin until a condition is true. Makes tests faster and less likely to fail sporadically. Modified: couchdb/trunk/etc/couchdb/default.ini.tpl.in couchdb/trunk/share/www/script/test/changes.js couchdb/trunk/share/www/script/test/oauth.js couchdb/trunk/share/www/script/test/stats.js couchdb/trunk/src/couchdb/couch_httpd_misc_handlers.erl Modified: couchdb/trunk/etc/couchdb/default.ini.tpl.in URL: http://svn.apache.org/viewvc/couchdb/trunk/etc/couchdb/default.ini.tpl.in?rev=930430&r1=930429&r2=930430&view=diff ============================================================================== --- couchdb/trunk/etc/couchdb/default.ini.tpl.in (original) +++ couchdb/trunk/etc/couchdb/default.ini.tpl.in Fri Apr 2 23:17:02 2010 @@ -65,7 +65,6 @@ _uuids = {couch_httpd_misc_handlers, han _restart = {couch_httpd_misc_handlers, handle_restart_req} _stats = {couch_httpd_stats_handlers, handle_stats_req} _log = {couch_httpd_misc_handlers, handle_log_req} -_sleep = {couch_httpd_misc_handlers, handle_sleep_req} _session = {couch_httpd_auth, handle_session_req} _oauth = {couch_httpd_oauth, handle_oauth_req} Modified: couchdb/trunk/share/www/script/test/changes.js URL: http://svn.apache.org/viewvc/couchdb/trunk/share/www/script/test/changes.js?rev=930430&r1=930429&r2=930430&view=diff ============================================================================== --- couchdb/trunk/share/www/script/test/changes.js (original) +++ couchdb/trunk/share/www/script/test/changes.js Fri Apr 2 23:17:02 2010 @@ -70,44 +70,45 @@ couchTests.changes = function(debug) { // WebKit (last checked on nightly #47686) does fail on processing // the async-request properly while javascript is executed. - var sleep = function(msecs) { - // by making a slow sync request, we allow the waiting XHR request data - // to be received. - var req = CouchDB.request("GET", "/_sleep?time=" + msecs); - T(JSON.parse(req.responseText).ok == true); - } - xhr.open("GET", "/test_suite_db/_changes?feed=continuous", true); xhr.send(""); var docBar = {_id:"bar", bar:1}; db.save(docBar); + + while(true) { + var lines = xhr.responseText.split("\n"); + try { + var change1 = JSON.parse(lines[0]); + var change2 = JSON.parse(lines[1]); + break; + } catch (e) {} + db.info() // sync http req allow async req to happen + } - sleep(100); - var lines = xhr.responseText.split("\n"); - - var change = JSON.parse(lines[0]); - - T(change.seq == 1) - T(change.id == "foo") -
{'source': 'Apache Software Foundation Public Mail Archives'}