Attn Jelmer & David - re: [Fwd: [Rails-core] Re: ERROR on Rails Subversion repository]

Hendy Irawan hendy at rainbowpurple.com
Thu Sep 20 11:44:55 BST 2007


Dear Bazaar,

Below works fine now...

ceefour> svn log -v http://svn.rubyonrails.org/rails/trunk
------------------------------------------------------------------------
r7515 | bitsweat | 2007-09-20 15:27:45 +0700 (Thu, 20 Sep 2007) | 1 line
Changed paths:
   M /trunk/actionpack/lib/action_view/helpers/text_helper.rb
   M /trunk/actionpack/test/template/text_helper_test.rb

Revert [7397]. Reopens #7313.
------------------------------------------------------------------------
r7514 | david | 2007-09-19 06:10:34 +0700 (Wed, 19 Sep 2007) | 1 line
Changed paths:
   M /trunk/actionpack/CHANGELOG
   M /trunk/actionpack/lib/action_controller/layout.rb
   M /trunk/actionpack/test/controller/mime_responds_test.rb
   A 
/trunk/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.html.erb

Fixed that default layouts did not take the format into account #9564 
[lifofifo]
------------------------------------------------------------------------
r7513 | bitsweat | 2007-09-18 18:56:04 +0700 (Tue, 18 Sep 2007) | 1 line
Changed paths:
   M /trunk/actionpack/lib/action_view/base.rb

ERB::Util#html_escape creates fewer objects
------------------------------------------------------------------------
r7512 | bitsweat | 2007-09-18 17:55:15 +0700 (Tue, 18 Sep 2007) | 1 line
Changed paths:


Rails SVN admin has fixed it........ hopefully.

Can we try importing the 'rails' project into Launchpad again? Or it's 
already handled automatically?

Jason notes that "

The header is off (and for reference one can just turn off mod_headers
entirely) and should be fine now.

"
which is probably a good suggestion to project hosters that are also 
blocked by this problem.

However, most open source projects do not have direct control of their 
hoster's Subversion repository configuration...

In Rails' case though, we're pretty lucky that Joyent guys are also 
Rails devs that care about this :-)

Let me know how it turns out! :-)


-------- Original Message --------
Subject: 	[Rails-core] Re: ERROR on Rails Subversion repository
Date: 	Thu, 20 Sep 2007 07:57:19 -0000
From: 	jason <jasonhoffman at gmail.com>
Reply-To: 	rubyonrails-core at googlegroups.com
To: 	Ruby on Rails: Core <rubyonrails-core at googlegroups.com>
References: 	<46F12AE6.60401 at gmail.com>



Hi Hendy,

There aren't any configurations to do with SVN other than turning it
on. What's happening is no different than standard HTTP errors when
you're trying to push or pull too much stuff. No different then trying
to put a string that's over 1024 bytes into IE, or trying to pass a
string that's larger to 4096 bytes to Apache (so something like
passing 200 facebook "friends" IDs in a string.)

Yes, I see the same thing with pulling up a PATH on the URL of the svn
repository

Jasons-15er% svn log -v http://svn.rubyonrails.org/rails trunk
svn: REPORT request failed on '/rails/!svn/bc/7514'
svn: REPORT of '/rails/!svn/bc/7514': Response exceeded maximum number
of header fields. (http://svn.rubyonrails.org)

The error isn't from subversion it's from the Neon library that
subversion uses for http and webdav access to stuff.

In ne_request.c, the max header is 8192 bytes

#define MAX_HEADER_LEN (8192)

/* Read response headers.  Returns NE_* code, sets session error and
 * closes connection on error. */
static int read_response_headers(ne_request *req)
{
    char hdr[MAX_HEADER_LEN];
    int ret, count = 0;

    while ((ret = read_message_header(req, hdr, sizeof hdr)) ==
NE_RETRY
	   && ++count < MAX_HEADER_FIELDS) {
	char *pnt;
	unsigned int hash = 0;

	/* Strip any trailing whitespace */
	pnt = hdr + strlen(hdr) - 1;
	while (pnt > hdr && (*pnt == ' ' || *pnt == '\t'))
	    *pnt-- = '\0';

	/* Convert the header name to lower case and hash it. */
	for (pnt = hdr; (*pnt != '\0' && *pnt != ':' &&
			 *pnt != ' ' && *pnt != '\t'); pnt++) {
	    *pnt = ne_tolower(*pnt);
	    hash = HH_ITERATE(hash,*pnt);
	}

	/* Skip over any whitespace before the colon. */
	while (*pnt == ' ' || *pnt == '\t')
	    *pnt++ = '\0';

	/* ignore header lines which lack a ':'. */
	if (*pnt != ':')
	    continue;

	/* NUL-terminate at the colon (when no whitespace before) */
	*pnt++ = '\0';

	/* Skip any whitespace after the colon... */
	while (*pnt == ' ' || *pnt == '\t')
	    pnt++;

	/* pnt now points to the header value. */
	NE_DEBUG(NE_DBG_HTTP, "Header Name: [%s], Value: [%s]\n", hdr, pnt);
        add_response_header(req, hash, hdr, pnt);
    }

    if (count == MAX_HEADER_FIELDS)
	ret = aborted(
	    req, _("Response exceeded maximum number of header fields"), 0);

    return ret;
}


Jasons-15er% svn log -v http://svn.rubyonrails.org/rails trunk
svn: REPORT request failed on '/rails/!svn/bc/7514'
svn: REPORT of '/rails/!svn/bc/7514': Response exceeded maximum number
of header fields. (http://svn.rubyonrails.org)
Jasons-15er% svn log -v http://svn-commit.rubyonrails.org/rails trunk
| wc -l
   46380

So let's take a look and see

Nonverbose is fine

Jasons-15er% svn log http://svn.rubyonrails.org/rails trunk | wc -l
   23132

Oddly enough, verbose on the entire repos URL is also fine (leave off
trunk) ... try and figure out that one

Jasons-15er% svn log -v http://svn.rubyonrails.org/rails | wc -l
   66627

Verbose on a specific version is fine

Jasons-15er% svn log -v -r 7000 http://svn.rubyonrails.org/rails
trunk
------------------------------------------------------------------------
r7000 | bitsweat | 2007-06-11 10:06:07 +0200 (Mon, 11 Jun 2007) | 1
line
Changed paths:
   M /trunk/activerecord/lib/active_record/base.rb

Remove deprecated quote methods, replaced by quote_value so quote can
be used as an attribute name.
------------------------------------------------------------------------

Verbose in a range of 1000 is fine

Jasons-15er% svn log -v -r 1000:2000 http://svn.rubyonrails.org/rails
trunk | wc -l
    7205

Let's now extend that range, the above is 1000, let's keep increasing
that by 1000 until it "breaks" again

Jasons-15er% svn log -v -r 1:2000 http://svn.rubyonrails.org/rails
trunk | wc -l
svn: REPORT request failed on '/rails/!svn/bc/2000'
svn: REPORT of '/rails/!svn/bc/2000': Response exceeded maximum number
of header fields. (http://svn.rubyonrails.org)
       0

And yes the breakpoint is the size of the header fields coming back.

Let's turn the extraneous headers off-and-on.

It turns out to be the standard Header add MS-Author-Via "DAV" that
one adds in (and used to be a DAV default) for some window's clients.

header being sent

Jasons-15er% svn log -v http://svn.rubyonrails.org/rails/trunk
svn: REPORT request failed on '/rails/!svn/bc/7514/trunk'
svn: REPORT of '/rails/!svn/bc/7514/trunk': Response exceeded maximum
number of header fields. (http://svn.rubyonrails.org)

header off

Jasons-15er% svn log -v http://svn-commit.rubyonrails.org/rails/trunk
| wc -l
   46380

header being sent

Jasons-15er% svn log -v http://svn.rubyonrails.org/rails/trunk
svn: REPORT request failed on '/rails/!svn/bc/7514/trunk'
svn: REPORT of '/rails/!svn/bc/7514/trunk': Response exceeded maximum
number of header fields. (http://svn.rubyonrails.org)

header off

Jasons-15er% svn log -v http://svn.rubyonrails.org/rails/trunk | wc -l

   46380

The header is off (and for reference one can just turn off mod_headers
entirely) and should be fine now.

Regards, Jason



On Sep 19, 3:57 pm, Hendy Irawan <gauld... at gmail.com> wrote:
> While diagnosing this problem with Jelmer Vernooij (Bazaar), it seems
> that there is a certain "misconfiguration" on the part of Rails
> Subversion server hosted on Joyent.
>
> If this is a Joyent-side issue, would someone with authority of the
> Rails SVN server please contact Joyent about this problem so we can
> resolve it?
>
> Thank you.
>
> -------- Original Message --------
> Subject:        Re: Attn: Jelmer & David (was [Fwd: [Rails-core] Re: ERROR on
>
> Rails Subversion repository])
> Date:   Wed, 19 Sep 2007 15:46:07 +0200
> From:   Jelmer Vernooij <jel... at samba.org>
> To:     Hendy Irawan <he... at rainbowpurple.com>
> CC:     Bazaar Mailing List <baz... at lists.canonical.com>
> References:     <46F1066B.7030703 at rainbowpurple.com>
>
> Hi Hendy,
>
> Am Mittwoch, den 19.09.2007, 18:22 +0700 schrieb Hendy Irawan:
> > Although I'm not sure about the exact culprit, there is possibility
> > that this happens not only on Rails SVN server, but also a bunch of
> > other SVN servers in the world. Be it misconfigured, having an old
> > version of library, or something.
> If this is not a configuration issue, it should ideally be fixed in the
> Subversion client library so that all users of libsvn can benefit from
> it.
>
> > From the description, and from experiments, it seems true that
> > limiting does have the "nice" effect of avoiding these errors, which
> > means that can probably do a workaround.
>
> > My proposal is that bzr-svn will issue "svn log -v" in bulk batches,
> > i.e. 1000 revisions at once. If it can work out, then it should work
> > more reliably with "buggy" SVN servers. And the running performance
> > shouldn't be that bad. Considering that even in a 10,000 revisions
> > repository, we'll only do that 10 times. And that is still better than
> > try to do that once, and fail. :-(
> Limiting the number of revisions fetched to a 1000 per time still causes
> this error. Anything over 600 seems to break, which seems rather
> arbitrary. I also bet that if there are long commit messages that it
> breaks even earlier.
>
> > I'll also try joining the Subversion list to see if anyone comes up
> > with a better solution. But even if Subversion will have  a fix in the
> > future, there's no guarantee that everyone in the world will be
> > rushing to update it... So a workaround is still needed
> > unfortunately. :-(
> I'm not sure this is a misconfiguration in the Subversion side of
> things. The rubyonrails server returns the following headers when I run
> `svn log':
>
> HTTP/1.1 200 OK
> Date: Wed, 19 Sep 2007 13:27:54 GMT
> Server: Apache
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> Served-By: Joyent
> MS-Author-Via: DAV
> Vary: Accept-Encoding
> Content-Encoding: gzip
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> MS-Author-Via: DAV
> Connection: close
> Transfer-Encoding: chunked
> Content-Type: text/xml; charset="utf-8"
>
> Notice that MS-Author-Via: DAV and Served-By: Joyent are repeated.
>
> It almost seems like it's adding a new header for every x kilobytes of
> data or something that is returned. Requesting 1000 revisions results in
> these two headers being repeated 48 times, whereas requesting 500
> revisions results in them being repeated 26 times.
>
> I don't want to degrade the performance of bzr-svn to work around a
> single SVN repository with a broken configuration, but I can live with a
> knob that allows setting the number of revisions fetched with
> svn.ra.get_log().
>
> Cheers,
>
> Jelmer
> --
> Jelmer Vernooij <jel... at samba.org> -http://samba.org/~jelmer/
> Jabber: jel... at jabber.fsfe.org
>
> --
> Hendy Irawanwww.hendyirawan.com
>
>
>
>  signature.asc
> 1KDownload


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group.
To post to this group, send email to rubyonrails-core at googlegroups.com
To unsubscribe from this group, send email to rubyonrails-core-unsubscribe at googlegroups.com
For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---



-- 
Hendy Irawan
www.hendyirawan.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.ubuntu.com/archives/bazaar/attachments/20070920/96c8ae57/attachment-0001.htm 


More information about the bazaar mailing list