Edgewall Software

Changes between Initial Version and Version 3 of Ticket #4164


Ignore:
Timestamp:
Nov 14, 2006, 10:53:48 PM (17 years ago)
Author:
Emmanuel Blot
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #4164 – Description

    initial v3  
    1 Note: This is against 0.10.2 but that version is not yet in the version list.
     1Note: This is against [milestone:0.10.2] but that version is not yet in the version list.
    22
    3 
    4 I have been looking into an issue where trying to use the authz_ functionality for svn results in the source browser hanging.  The user experience is that the user clicks on "Browse Source" and the browser never loads a page.  While adding a ton of print statements to narrow down what was happening I ended up introducing an error which caused an exception.  As it turns out this exception showed the source of the problem:  versioncontrol/web_ui/browser.py calls RepositoryManager.get_repository which then calls SubversionConnector.get_repository which then creates a new SubversionAuthorizer.  The SubversionAuthorizer then calls Environment.get_repository which in turn calls RepositoryManager.get_repository.  Since RepositoryManager locks before performing this call (now for the second time) the application is frozen.  To get more info, I added a check before locking and produced the following traceback:
    5 
     3I have been looking into an issue where trying to use the authz_ functionality for svn results in the source browser hanging.  The user experience is that the user clicks on "Browse Source" and the browser never loads a page.  While adding a ton of print statements to narrow down what was happening I ended up introducing an error which caused an exception.  As it turns out this exception showed the source of the problem:  `versioncontrol/web_ui/browser.py` calls `RepositoryManager.get_repository` which then calls `SubversionConnector.get_repository` which then creates a new `SubversionAuthorizer`.  The `SubversionAuthorizer` then calls `Environment.get_repository` which in turn calls `RepositoryManager.get_repository`.  Since `RepositoryManager` locks before performing this call (now for the second time) the application is frozen.  To get more info, I added a check before locking and produced the following traceback:
     4{{{
    65Traceback (most recent call last):
    76  File "/usr/local/lib/python2.3/site-packages/trac/web/main.py", line 379, in dispatch_request
     
    2423    raise Exception('get_repository already called!')
    2524Exception: get_repository already called!
    26 
    27 
     25}}}
    2826
    2927I have these settings in trac.ini:
     28{{{
    3029authz_module_name = resolver
    3130authz_file = /etc/apache2/svnpolicy
    32 
     31}}}
    3332
    3433In this scenario, I have the following authz file:
     34{{{
    3535[/]
    3636* = r
     
    4242[movgen:/]
    4343jkyllo = rw
    44 
     44}}}
    4545
    4646Here is the versioncontrol/api.py diff against 0.10.2 to produce the above traceback:
     47{{{
     48#!diff
    474963a64
    4850>       self.called = False
     
    5254>       self.called = True
    5355>
    54 
     56}}}
    5557
    5658I'm not sure what the logic is supposed be, but is there some configuration I'm missing, or is this really a bug?