I think now is good moment to discuss whether we should merge
ra-reuse-session  branch to trunk or not: it's better to merge such
branch in the beginning of release cycle, to have more time to test
The idea of the branch is pretty simple: add pool of RA sessions in
svn_client_ctx_t and use it when we're going to open new RA session in
libsvn_client. RA sessions are returned back to RA pool *only* by
explicit svn_client__ra_session_release() call. RA sessions *will not
be reused* if they are destroyed by APR pool cleanup.
Goals of the branch were:
1. Avoid opening many TCP connections and improve merge performance of WAN
2. Avoid opening many TCP connections and improve performance in some
non-typical cases like working copy with many svn:externals (issue
3763 ) or subtree svn:mergeinfo.
3. Avoid passing RA session around and writing custom code with
reparent RA session to interesting and back in libsvn_client.
4. Improve performance of GUI clients that perform several
svn_client_* operation using the same svn_client_ctx_t.
That branch is complete and ready for merging, but I'm still not sure
whether we should merge it or not.
- It reduce number of TCP connection to something like one or two,
instead of 10-20 in some cases.
- It should theoretically improve performance oven WAN
- It allows us write cleaner since we don't manage RA sessions. See
patch in  as an example how code could change.
- Fixes issue 3763
- In makes behavior less stable. RA session pool doesn't reuse
sessions that was unused for some time to avoid timeout issues
- There is the chance that we will try to reuse 'broken' RA session
due the bug and operation will fail
Received on 2015-09-17 17:42:15 CEST