From 73d71c1baef1d0b094b104f5199468de10b62d10 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Mon, 27 Nov 2017 18:51:25 +0100 Subject: [PATCH 01/10] svn: extend detection of SVN to PROPFIND/PROPATCH methods. - in some cases like usage of tortoisesvn non of the available SVN protocol detection methods are available - with extended method we're able to catch directory delete/create --- rhodecode/lib/middleware/vcs.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rhodecode/lib/middleware/vcs.py b/rhodecode/lib/middleware/vcs.py index 39220997..417844af 100644 --- a/rhodecode/lib/middleware/vcs.py +++ b/rhodecode/lib/middleware/vcs.py @@ -76,12 +76,15 @@ def is_svn(environ): """ Returns True if requests target is Subversion server """ + http_dav = environ.get('HTTP_DAV', '') magic_path_segment = rhodecode.CONFIG.get( 'rhodecode_subversion_magic_path', '/!svn') is_svn_path = ( 'subversion' in http_dav or - magic_path_segment in environ['PATH_INFO']) + magic_path_segment in environ['PATH_INFO'] + or environ['REQUEST_METHOD'] in ['PROPFIND', 'PROPPATCH'] + ) log.debug( 'request path: `%s` detected as SVN PROTOCOL %s', environ['PATH_INFO'], is_svn_path) From 6cc32fc47b4b40e05ec8792f15e195e00d085e44 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Tue, 28 Nov 2017 18:23:48 +0100 Subject: [PATCH 02/10] logging: don't stop logging on "waiting for background thread to finish" This is misleading as we're waiting for something and didn't finalize. --- rhodecode/lib/hooks_daemon.py | 1 + 1 file changed, 1 insertion(+) diff --git a/rhodecode/lib/hooks_daemon.py b/rhodecode/lib/hooks_daemon.py index af3e82ed..50b3f72c 100644 --- a/rhodecode/lib/hooks_daemon.py +++ b/rhodecode/lib/hooks_daemon.py @@ -160,6 +160,7 @@ class HttpHooksCallbackDaemon(ThreadedHookCallbackDaemon): self._callback_thread.join() self._daemon = None self._callback_thread = None + log.debug("Background thread done.") def prepare_callback_daemon(extras, protocol, use_direct_calls): From bd4447f703c080b109eac0793d9f2cdba4a5ac69 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Mon, 4 Dec 2017 12:55:05 +0100 Subject: [PATCH 03/10] hooks: decrease pool interval to 10ms. For SVN operations and lots of requests we can save tons of time this way. It's a good balance value. --- rhodecode/lib/hooks_daemon.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rhodecode/lib/hooks_daemon.py b/rhodecode/lib/hooks_daemon.py index 50b3f72c..72407760 100644 --- a/rhodecode/lib/hooks_daemon.py +++ b/rhodecode/lib/hooks_daemon.py @@ -133,7 +133,7 @@ class HttpHooksCallbackDaemon(ThreadedHookCallbackDaemon): # From Python docs: Polling reduces our responsiveness to a shutdown # request and wastes cpu at all other times. - POLL_INTERVAL = 0.1 + POLL_INTERVAL = 0.01 def _prepare(self): log.debug("Preparing HTTP callback daemon and registering hook object") From 9794735710901358585ab9819474927f0c7df672 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Wed, 13 Dec 2017 22:14:25 +0100 Subject: [PATCH 04/10] dependencies: bumped webob to 1.7.4 --- pkgs/python-packages.nix | 6 +++--- requirements.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/python-packages.nix b/pkgs/python-packages.nix index 50d35363..92d2c30b 100644 --- a/pkgs/python-packages.nix +++ b/pkgs/python-packages.nix @@ -302,13 +302,13 @@ }; }; WebOb = super.buildPythonPackage { - name = "WebOb-1.7.3"; + name = "WebOb-1.7.4"; buildInputs = with self; []; doCheck = false; propagatedBuildInputs = with self; []; src = fetchurl { - url = "https://pypi.python.org/packages/46/87/2f96d8d43b2078fae6e1d33fa86b95c228cebed060f4e3c7576cc44ea83b/WebOb-1.7.3.tar.gz"; - md5 = "350028baffc508e3d23c078118e35316"; + url = "https://pypi.python.org/packages/75/34/731e23f52371852dfe7490a61644826ba7fe70fd52a377aaca0f4956ba7f/WebOb-1.7.4.tar.gz"; + md5 = "397e46892d7f199b1a07eb20a2d3d9bd"; }; meta = { license = [ pkgs.lib.licenses.mit ]; diff --git a/requirements.txt b/requirements.txt index c9b7a898..87aac23a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -87,7 +87,7 @@ venusian==1.1.0 WebError==0.10.3 WebHelpers2==2.0 WebHelpers==1.3 -WebOb==1.7.3 +WebOb==1.7.4 Whoosh==2.7.4 wsgiref==0.1.2 zope.cachedescriptors==4.0.0 From 27755750d60aefe09d93a66a2f1dd10225f7f95e Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Wed, 20 Dec 2017 12:30:25 +0100 Subject: [PATCH 05/10] celery: fix potential 404 problems with celery and sync creation of repositories --- rhodecode/apps/repository/views/repo_checks.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/rhodecode/apps/repository/views/repo_checks.py b/rhodecode/apps/repository/views/repo_checks.py index 1c2ce014..9f551c3f 100644 --- a/rhodecode/apps/repository/views/repo_checks.py +++ b/rhodecode/apps/repository/views/repo_checks.py @@ -46,11 +46,9 @@ class RepoChecksView(BaseAppView): repo_name = self.request.matchdict['repo_name'] db_repo = Repository.get_by_repo_name(repo_name) - if not db_repo: - raise HTTPNotFound() # check if maybe repo is already created - if db_repo.repo_state in [Repository.STATE_CREATED]: + if db_repo and db_repo.repo_state in [Repository.STATE_CREATED]: # re-check permissions before redirecting to prevent resource # discovery by checking the 302 code perm_set = ['repository.read', 'repository.write', 'repository.admin'] From bce37dbbde674d8ee7eeefec407cf258b2663ce0 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Wed, 20 Dec 2017 12:56:59 +0100 Subject: [PATCH 06/10] docs: added 4.10.6 release notes --- docs/release-notes/release-notes-4.10.6.rst | 52 +++++++++++++++++++++ docs/release-notes/release-notes.rst | 1 + 2 files changed, 53 insertions(+) create mode 100644 docs/release-notes/release-notes-4.10.6.rst diff --git a/docs/release-notes/release-notes-4.10.6.rst b/docs/release-notes/release-notes-4.10.6.rst new file mode 100644 index 00000000..4bc8fead --- /dev/null +++ b/docs/release-notes/release-notes-4.10.6.rst @@ -0,0 +1,52 @@ +|RCE| 4.10.6 |RNS| +------------------ + +Release Date +^^^^^^^^^^^^ + +- 2017-12-20 + + +New Features +^^^^^^^^^^^^ + + + +General +^^^^^^^ + +- dependencies: bump webob to 1.7.4 that fixes 1.7.3 regression for streaming. +- svn: extend detection of SVN PROPFIND/PROPATCH methods. This increases the + compatibility with svn methods such as svn mkdir or svn delete with + tortoise SVN. + + +Security +^^^^^^^^ + + + +Performance +^^^^^^^^^^^ + +- hooks: decrease pool interval to 10ms. For SVN operations and lots of requests + this can lead to almost 4x speed improvement. + + +Fixes +^^^^^ + +- celery: fix potential 404 problems with celery and sync creation + of repositories. +- fixed git streaming support for instance that are not behind a buffering + proxies. Webob library removed default chunked encoding support, and now + requires an explicit flag to make it work again. + + +Upgrade notes +^^^^^^^^^^^^^ + +- Fixed regression with streaming, and increased svn support. + No upgrade problems should be expected, however please check GIT repos + behaviour on upgrade. + diff --git a/docs/release-notes/release-notes.rst b/docs/release-notes/release-notes.rst index 0d3d83ab..d6f46139 100644 --- a/docs/release-notes/release-notes.rst +++ b/docs/release-notes/release-notes.rst @@ -9,6 +9,7 @@ Release Notes .. toctree:: :maxdepth: 1 + release-notes-4.10.6.rst release-notes-4.10.5.rst release-notes-4.10.4.rst release-notes-4.10.3.rst From ef236e875cd6373fa0b93b051c6535feb4d4b026 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Wed, 20 Dec 2017 17:24:08 +0100 Subject: [PATCH 07/10] release: Start preparation for 4.10.6 --- .bumpversion.cfg | 2 +- .release.cfg | 9 ++------- rhodecode/VERSION | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 10e29405..959905ba 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 4.10.5 +current_version = 4.10.6 message = release: Bump version {current_version} to {new_version} [bumpversion:file:rhodecode/VERSION] diff --git a/.release.cfg b/.release.cfg index 7ec60510..f435316c 100644 --- a/.release.cfg +++ b/.release.cfg @@ -5,23 +5,18 @@ done = false done = true [task:rc_tools_pinned] -done = true [task:fixes_on_stable] -done = true [task:pip2nix_generated] -done = true [task:changelog_updated] -done = true [task:generate_api_docs] -done = true [release] -state = prepared -version = 4.10.5 +state = in_progress +version = 4.10.6 [task:updated_translation] diff --git a/rhodecode/VERSION b/rhodecode/VERSION index 0cd39902..7a291b61 100644 --- a/rhodecode/VERSION +++ b/rhodecode/VERSION @@ -1 +1 @@ -4.10.5 \ No newline at end of file +4.10.6 \ No newline at end of file From 6d7d4f7ae8f28148defce6c36b7aed38fd514c40 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Wed, 20 Dec 2017 17:27:29 +0100 Subject: [PATCH 08/10] release: updated pip2nix output for 4.10.6 --- .release.cfg | 4 ++++ pkgs/python-packages.nix | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.release.cfg b/.release.cfg index f435316c..677783c3 100644 --- a/.release.cfg +++ b/.release.cfg @@ -5,14 +5,18 @@ done = false done = true [task:rc_tools_pinned] +done = true [task:fixes_on_stable] +done = true [task:pip2nix_generated] [task:changelog_updated] +done = true [task:generate_api_docs] +done = true [release] state = in_progress diff --git a/pkgs/python-packages.nix b/pkgs/python-packages.nix index 92d2c30b..73bcc8db 100644 --- a/pkgs/python-packages.nix +++ b/pkgs/python-packages.nix @@ -1719,7 +1719,7 @@ }; }; rhodecode-enterprise-ce = super.buildPythonPackage { - name = "rhodecode-enterprise-ce-4.10.5"; + name = "rhodecode-enterprise-ce-4.10.6"; buildInputs = with self; [pytest py pytest-cov pytest-sugar pytest-runner pytest-catchlog pytest-profiling gprof2dot pytest-timeout mock WebTest cov-core coverage configobj]; doCheck = true; propagatedBuildInputs = with self; [Babel Beaker FormEncode Mako Markdown MarkupSafe MySQL-python Paste PasteDeploy PasteScript Pygments pygments-markdown-lexer Pylons Routes SQLAlchemy Tempita URLObject WebError WebHelpers WebHelpers2 WebOb WebTest Whoosh alembic amqplib anyjson appenlight-client authomatic cssselect celery channelstream colander decorator deform docutils gevent gunicorn infrae.cache ipython iso8601 kombu lxml msgpack-python nbconvert packaging psycopg2 py-gfm pycrypto pycurl pyparsing pyramid pyramid-debugtoolbar pyramid-mako pyramid-beaker pysqlite python-dateutil python-ldap python-memcached python-pam recaptcha-client redis repoze.lru requests simplejson sshpubkeys subprocess32 waitress zope.cachedescriptors dogpile.cache dogpile.core psutil py-bcrypt]; From 658ed0f6bfba8b0e6d3cb961687fb8e4da640efa Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Wed, 20 Dec 2017 17:27:30 +0100 Subject: [PATCH 09/10] release: Finish preparation for 4.10.6 --- .release.cfg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.release.cfg b/.release.cfg index 677783c3..3f003720 100644 --- a/.release.cfg +++ b/.release.cfg @@ -11,6 +11,7 @@ done = true done = true [task:pip2nix_generated] +done = true [task:changelog_updated] done = true @@ -19,7 +20,7 @@ done = true done = true [release] -state = in_progress +state = prepared version = 4.10.6 [task:updated_translation] From c23cd267de2ff85d6750217ebcd08e37b53b571f Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Wed, 20 Dec 2017 17:27:31 +0100 Subject: [PATCH 10/10] Added tag v4.10.6 for changeset 96eb24bea2f5