Changes between Initial Version and Version 3 of Ticket #4164
- Timestamp:
- Nov 14, 2006, 10:53:48 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #4164 – Description
initial v3 1 Note: This is against 0.10.2but that version is not yet in the version list.1 Note: This is against [milestone:0.10.2] but that version is not yet in the version list. 2 2 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 3 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: 4 {{{ 6 5 Traceback (most recent call last): 7 6 File "/usr/local/lib/python2.3/site-packages/trac/web/main.py", line 379, in dispatch_request … … 24 23 raise Exception('get_repository already called!') 25 24 Exception: get_repository already called! 26 27 25 }}} 28 26 29 27 I have these settings in trac.ini: 28 {{{ 30 29 authz_module_name = resolver 31 30 authz_file = /etc/apache2/svnpolicy 32 31 }}} 33 32 34 33 In this scenario, I have the following authz file: 34 {{{ 35 35 [/] 36 36 * = r … … 42 42 [movgen:/] 43 43 jkyllo = rw 44 44 }}} 45 45 46 46 Here is the versioncontrol/api.py diff against 0.10.2 to produce the above traceback: 47 {{{ 48 #!diff 47 49 63a64 48 50 > self.called = False … … 52 54 > self.called = True 53 55 > 54 56 }}} 55 57 56 58 I'm not sure what the logic is supposed be, but is there some configuration I'm missing, or is this really a bug?