Thanks Alexander!

Much appreciated!

Ben
On Oct 13, 2015 11:52 AM, "Alexander Kitaev" <kit...@gmail.com> wrote:

> Hello Ben,
>
> Thank you for more detailed description of what you expect to happen. What
> you describe is currently expected behaviour.
>
> For instance, when repository tree is browsed, "getDir" is called to
> expand each folder and that is a single low-level operation that includes
> several HTTP request. Connection is created for that operation and then
> disposed along with the SSLContext object. Same with other examples you've
> provided - single low-level operation, single persistent connection (with
> multiple requests being sent) and single SSLContext.
>
> What I was saying is that within that low-level operation SSLContext
> should persist, but now I see your point - SSLConext indeed never outlives
> the socket/connection. Actually it never appeared to me that this would be
> correct to reuse already created SSLContext object to create more than a
> single socket. I'm not an expert on that either.
>
> We'll check documentation on that to see the way SSLContext might be
> cached and reused.
>
> I've create an issue for that
> https://issues.tmatesoft.com/issue/SVNKIT-628 and I we could add
> SSLContext reuse as an optional feature first.
>
> Thanks,
> Alexander Kitaev.
>
> Alexander Kitaev,
> TMate Software,
> http://subgit.com/ - Svn to Git Migration!
> http://svnkit.com/ - Java [Sub]Versioning Library!
> http://hg4j.com/ - Java Mercurial Library!
> http://sqljet.com/ - Java SQLite Library!
>
> On Tue, Oct 13, 2015 at 5:15 PM, Ben Castellucci <ben...@gmail.com> wrote:
>
>> Thanks Alexander.
>>
>> This is why i stated up front i am not an expert.
>>
>> :)
>>
>> However, i did take a little time to try and prove my theory. I grabbed
>> the latest SVNKit source, built it and installed the plugin in Eclipse
>> (coupled with Subclipse) then proceeded to debug it. Everytime i looked at
>> the SSLSession object gleaned from the SSLSocket object in HTTPConnection
>> class, method request(), it's isSessionResumption member is always false,
>> always.
>>
>> Further, here are some examples of behavior i see:
>>
>>   1. When going to SVN Repository Exploring perspective in Eclipse and
>> simply navigating the tree structure, the full-deal SSL handshake is
>> performed every time i expand a folder.
>>
>>   2. When shift-clicking and checking out multiple projects, the
>> full-deal SSL handshake is performed prior to checking out each one.
>>
>>   3. (This is one of the most painful) when reverting local changes, the
>> full-deal SSL handshake is performed for EACH file being reverted.
>>
>> These are just a few examples.
>>
>> From what you say below and what i have experienced, most likely some of
>> this is coming from the Subclipse plugin and how it is utilizing the SVNKit
>> libraries. Maybe it's throwing away things and starting fresh when it
>> shouldn't.
>>
>> However, i did go one step further and make the SSLContext object static
>> and rebuilt to test. If left hanging around then the SSL sessions are
>> resumed and the full-deal handshake is no longer performed before each
>> operation and everything behaves much more pleasant.
>>
>> But again, not being an expert, this change may have consequences i am
>> not thinking of.
>>
>> Let me know what you think.
>>
>> Thanks!
>> Ben
>>
>> Hello Ben,
>>
>> Thank you for sharing your concern. However, with HTTP the [ssl]socket is
>> reused for each subsequent HTTP request, so I do not think SSLContext is
>> recreated for each request. Whether connection is persistent or not depends
>> on HTTP Keep-Alive header value (and that depends on the server settings),
>> so I think that SSLContext might be created a few times during SVN
>> operation like update or getDir, but it should not happen for each HTTP
>> request.
>>
>> Do you experience different behavior?
>>
>> Thanks!
>>
>> Alexander Kitaev,
>> TMate Software,
>> http://subgit.com/ - Svn to Git Migration!
>> http://svnkit.com/ - Java [Sub]Versioning Library!
>> http://hg4j.com/ - Java Mercurial Library!
>> http://sqljet.com/ - Java SQLite Library!
>> Hello Ben,
>>
>> Thank you for sharing your concern. However, with HTTP the [ssl]socket is
>> reused for each subsequent HTTP request, so I do not think SSLContext is
>> recreated for each request. Whether connection is persistent or not depends
>> on HTTP Keep-Alive header value (and that depends on the server settings),
>> so I think that SSLContext might be created a few times during SVN
>> operation like update or getDir, but it should not happen for each HTTP
>> request.
>>
>> Do you experience different behavior?
>>
>> Thanks!
>>
>> Alexander Kitaev,
>> TMate Software,
>> http://subgit.com/ - Svn to Git Migration!
>> http://svnkit.com/ - Java [Sub]Versioning Library!
>> http://hg4j.com/ - Java Mercurial Library!
>> http://sqljet.com/ - Java SQLite Library!
>>
>> On Thu, Oct 8, 2015 at 1:31 AM, Ben Castellucci <ben...@gmail.com> wrote:
>>
>>> Bump...
>>>
>>> Any thoughts about making a change like this?
>>> On Sep 30, 2015 10:46 AM, "Ben Castellucci" <ben...@gmail.com> wrote:
>>>
>>>> Greetings.
>>>>
>>>> This may indeed be the wrong place to bring this up. If so, could
>>>> someone kindly direct me to the right place (be that a feature request or
>>>> issue or whatever)?
>>>>
>>>> Also, I will disclose I am not an expert in any way regarding how Java
>>>> handles SSL communication so I may be completely off base here.
>>>>
>>>> However, I was perusing the source and noticed in
>>>> SVNSocketFactory.java, method createSSLContext(), it looks like a brand new
>>>> SSLContext object is created every time. This ends up that the entire SSL
>>>> handshake must be repeated for each and every SVN operation because the
>>>> built in support for session resume is not able to function.
>>>>
>>>> If the SSLContext object were stored in some way, possibly a static
>>>> variable or something, that should allow SSL session resume which would
>>>> avoid this issue.
>>>>
>>>> I realize this would have no benefit for command line as it's a new JVM
>>>> each time, however it would benefit GUI clients immensely. It would greatly
>>>> speed up operations and make using SVN over SSL orders of magnitude more
>>>> pleasant.
>>>>
>>>> Let me know any thoughts.
>>>>
>>>> Thanks!
>>>> Ben
>>>>
>>>
>>
>

Reply via email to