Modify

Opened 4 years ago

Closed 4 years ago

#6356 closed defect (wontfix)

Rename of SvnPasswordStore raises WindowsError in Trac 0.11.6

Reported by: trac-hacks@… Owned by: pacopablo
Priority: normal Component: AccountManagerPlugin
Severity: normal Keywords:
Cc: Trac Release: 0.11

Description

I'm running Trac 0.11.6 on Windows XP Pro using TracAccountManager Plugin. If the user tries to register, the "rename" function runs into the first exception and throws an error.

2009-12-20 19:43:05,696 Trac[main] ERROR: Internal Server Error: 
Traceback (most recent call last):
  File "C:\Server\Python26\lib\site-packages\trac-0.11.6-py2.6-win32.egg\trac\web\main.py", line 450, in _dispatch_request
    dispatcher.dispatch(req)
  File "C:\Server\Python26\lib\site-packages\trac-0.11.6-py2.6-win32.egg\trac\web\main.py", line 206, in dispatch
    resp = chosen_handler.process_request(req)
  File "C:\Server\Python26\lib\site-packages\tracaccountmanager-0.2.1dev_r0-py2.6.egg\acct_mgr\web_ui.py", line 400, in process_request
    _create_user(req, self.env)
  File "C:\Server\Python26\lib\site-packages\tracaccountmanager-0.2.1dev_r0-py2.6.egg\acct_mgr\web_ui.py", line 70, in _create_user
    mgr.set_password(user, password)
  File "build\bdist.win32\egg\acct_mgr\api.py", line 128, in set_password
    if store.set_password(user, password):
  File "build\bdist.win32\egg\acct_mgr\svnserve.py", line 60, in set_password
    cfg.save()
  File "C:\Server\Python26\lib\site-packages\trac-0.11.6-py2.6-win32.egg\trac\config.py", line 225, in save
    fileobj.close()
  File "C:\Server\Python26\lib\site-packages\trac-0.11.6-py2.6-win32.egg\trac\util\__init__.py", line 178, in commit
    rename(self._temp, self._path)
  File "C:\Server\Python26\lib\site-packages\trac-0.11.6-py2.6-win32.egg\trac\util\__init__.py", line 120, in rename
    raise ctypes.WinError()

Replacing "FileMoveEx" (line 120: init.py in trac\utils) with

os.remove(dst)
os.rename(src, dst)

fixed the error. (but i'm not that much into python to say that it doesn't break anything else)

I'm pretty sure this is a general trac bug, but - the trac ticket guidelines sent me here ... ;)

Attachments (0)

Change History (4)

comment:1 follow-up: Changed 4 years ago by mrelbe

I can confirm this error, but shouldn't this be addressed to Trac instead?

See trac:ticket:8623#comment:16 which states:

On Windows XP and lower, or without ctypes, the rename will not be atomic and may fail, due to concurrent updates or if the config file is open for reading. In the former case, the worst that can happen is that a temporary file could be left in the conf directory. In the latter case, the update will simply fail, and the user will be alerted. Both cases should be rare enough.

Could we have the same problem (I've seen this on numerous WinXP Pro machines...)

comment:2 in reply to: ↑ 1 Changed 4 years ago by trac-hacks@…

Replying to mrelbe:

I can confirm this error, but shouldn't this be addressed to Trac instead?

Could we have the same problem (I've seen this on numerous WinXP Pro machines...)

Yup, seems to be the same one. The atomic file modifications are only available on systems with "Transactional NTFS" (TxF) so Windows Vista and above. I think the code in init.py should be changed to recognize the file-system type to do something the OS understands...

I already tried to reach someone on IRC, and there was one who want to have a look on it. I don't know if I should open a trac ticket. The guidelines sounds so restrictive to me...

Thank you for the confirmation :D

comment:3 Changed 4 years ago by mrelbe

I re-opened that ticket myself, on "the other side". Perhaps I will not be welcome there again :)

comment:4 Changed 4 years ago by rblank

  • Resolution set to wontfix
  • Status changed from new to closed

This was due to AccountManagerPlugin using Unicode paths, which were (accidentally) not supported. It's fixed now in [T8994], and will be released in 0.11.7. There's nothing more to do here, so I'm closing this ticket

Add Comment

Modify Ticket

Action
as closed .
as The resolution will be set. Next status will be 'closed'.
to The owner will be changed from pacopablo. Next status will be 'closed'.
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.