Return-Path: X-Original-To: apmail-subversion-dev-archive@minotaur.apache.org Delivered-To: apmail-subversion-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2ABDA18230 for ; Fri, 20 Nov 2015 06:55:04 +0000 (UTC) Received: (qmail 71463 invoked by uid 500); 20 Nov 2015 06:55:04 -0000 Delivered-To: apmail-subversion-dev-archive@subversion.apache.org Received: (qmail 71405 invoked by uid 500); 20 Nov 2015 06:55:04 -0000 Mailing-List: contact dev-help@subversion.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@subversion.apache.org Received: (qmail 71395 invoked by uid 99); 20 Nov 2015 06:55:03 -0000 Received: from Unknown (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 20 Nov 2015 06:55:03 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 44BB0180A2A for ; Fri, 20 Nov 2015 06:55:03 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.1 X-Spam-Level: X-Spam-Status: No, score=-0.1 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=visualsvn.com Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id IDFpFoqDgTDu for ; Fri, 20 Nov 2015 06:54:51 +0000 (UTC) Received: from mail-lb0-f170.google.com (mail-lb0-f170.google.com [209.85.217.170]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id F214920384 for ; Fri, 20 Nov 2015 06:54:50 +0000 (UTC) Received: by lbbsy6 with SMTP id sy6so56627849lbb.2 for ; Thu, 19 Nov 2015 22:54:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=visualsvn.com; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=RLseOZCQ8+NAzBDQVYhmpNDr1viuBkjexvlo2tniy+U=; b=O+rFLx90IWyO1Lo0jSN0SP0+sXjUY0oaI1+LDGIz+tC3tKLDIWUoMLQ86tNVuyvVIF ie4DlI6ETwmYvA/wMxPD7K3biRRfif/+gnsq+qjv3Qb6AcMq/KZw4GGop/FuvcSGpEbJ pq1wR/mLy1vp3aY+ewMpBQZe28jKCt1QTrzLc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=RLseOZCQ8+NAzBDQVYhmpNDr1viuBkjexvlo2tniy+U=; b=JAlSdIcMJrXYAGSkSyMlddkHIaFff/S4+Msa7yFGallocaDQND6JEnFiS1/MbCMaoL ubs3QvvhYkNIffbO2CeylLqoo34Fi6iI+SZXJnOVHCd4x262oBZqlaUpNtWxN7k+IVvS aWeWVZ9w8R8Lxr1RYDIuqr3i4zsKs9QYhnyfxBpi99RL+qXcYi3ZppLLVqDKPip18Gy1 SqH6B04GMBV2EVvugqpX3QB2eKEYgrzr6xczMHfs9zm7ETOq7eEPccA6+4bu9KrmWN6F ZBzKZp8NQCjf6032tGDSOQUl4wE9AWTKyw4MMbC7lDgRCyI3XUVWMYFzXraVgX4mxhFm wjCQ== X-Gm-Message-State: ALoCoQmfc9Vb5qwOVboVV+qDMYOBdwoBM9UW2jPHV6hcWVTTbSchfIW/i+UD6LT/GxvC+rNWpNGM X-Received: by 10.112.161.228 with SMTP id xv4mr3947000lbb.60.1448002489157; Thu, 19 Nov 2015 22:54:49 -0800 (PST) MIME-Version: 1.0 Received: by 10.25.44.204 with HTTP; Thu, 19 Nov 2015 22:54:29 -0800 (PST) In-Reply-To: <073301d1231c$7560f540$6022dfc0$@qqmail.nl> References: <20151119180312.8FB3E3A00E5@svn01-us-west.apache.org> <072601d1230d$be972ae0$3bc580a0$@qqmail.nl> <073201d1231b$4fc08040$ef4180c0$@qqmail.nl> <073301d1231c$7560f540$6022dfc0$@qqmail.nl> From: Ivan Zhakov Date: Fri, 20 Nov 2015 09:54:29 +0300 Message-ID: Subject: Re: svn commit: r1715228 - /subversion/trunk/subversion/libsvn_ra_serf/util.c To: Bert Huijben Cc: dev@subversion.apache.org Content-Type: text/plain; charset=UTF-8 On 20 November 2015 at 01:48, Bert Huijben wrote: >> -----Original Message----- >> From: Bert Huijben [mailto:bert@qqmail.nl] >> Sent: donderdag 19 november 2015 23:41 >> To: 'Ivan Zhakov' >> Cc: dev@subversion.apache.org >> Subject: RE: svn commit: r1715228 - >> /subversion/trunk/subversion/libsvn_ra_serf/util.c >> >> >> >> > -----Original Message----- >> > From: Ivan Zhakov [mailto:ivan@visualsvn.com] >> > Sent: donderdag 19 november 2015 23:12 >> > To: Bert Huijben >> > Cc: dev@subversion.apache.org >> > Subject: Re: svn commit: r1715228 - >> > /subversion/trunk/subversion/libsvn_ra_serf/util.c >> > >> > On 20 November 2015 at 00:03, Bert Huijben wrote: >> > >> -----Original Message----- >> > >> From: rhuijben@apache.org [mailto:rhuijben@apache.org] >> > >> Sent: donderdag 19 november 2015 19:03 >> > >> To: commits@subversion.apache.org >> > >> Subject: svn commit: r1715228 - >> > >> /subversion/trunk/subversion/libsvn_ra_serf/util.c >> > >> >> > >> Author: rhuijben >> > >> Date: Thu Nov 19 18:03:11 2015 >> > >> New Revision: 1715228 >> > >> >> > >> URL: http://svn.apache.org/viewvc?rev=1715228&view=rev >> > >> Log: >> > >> Add a tiny bit of code to allow testing with Apache Serf's http/2 support. >> > >> >> > >> I committed this patch to celebrate that I got through basic_tests.py >> > >> using the current http/2 support. >> > >> >> > >> * subversion/libsvn_ra_serf/util.c >> > >> (conn_negotiate_protocol): New function. >> > >> (conn_setup): Register usage of conn_negotiate_protocol when >> > >> a very recent (read: trunk) serf + SVN__SERF_TEST_HTTP2 are used. >> > > >> > > Currently most tests pass for me over http2 when running with some >> minor >> > tweaks. I still get some aborted connections that aren't retried as cleanly as >> > with http 1.1. Not sure what causes these yet; but this could also be an >> httpd >> > issues. >> > > >> > > The only ra function that really causes problems is the implementation of >> > the replay >> > > range api. This 100% expects that results will be received in the same >> order >> > in which >> > > they are sent. This is typically the correct way in http 1.1 using serf, but >> > even there it >> > > is sometimes possible to get results out of order. (Authentication can re- >> > queue >> > > requests... and sometimes authorization is necessary even when earlier >> > requests >> > > succeeded, depending on the auth scheme). >> > > >> > Can we use WINDOW_UPDATE frame to control flow of replay-revision >> > response? In this case we can use spillbuf for buffering responses to >> > avoid latency performance regressions. What do you think? >> >> In theory we could... we could set the initial window to 0 and then send a >> window update later. Assuming that httpd does that efficiently, etc. etc. >> (Some of these assumptions are most likely not true) >> >> But I doubt if it would be more efficient than just sending the request when >> we need it... or perhaps asking the properties a revision earlier. (We can also >> send the request, but just leave out the end of stream marker... Sending EOS >> will then handle the request) > > The proper 2.0 way would be to make the streams completely dependent on each other via priority handling. > > But using this priority information is optional on the server side. And I doubt that > we can trust this to always do the right thing even if httpd would implement this > correctly today. > Yes, stream priorities is another option, but it's not reliable. We still have to manage spillbuf as fallback etc. I agree that current code could fail in some edge cases, like re-authentication for some reason. I think simple solution for all these kind of problems would be just add new replay-range REPORT that will stream all revision range in one REPORT. We already do this for blame in file-revs REPORT, so I don't see problems here. For older servers we can just disable pipelining in this case. What do you think? -- Ivan Zhakov