One of my users tried to reset his password, but never got his email (my Trac never sent the email, and I can't figure out why, but this seems to be a separate problem), so he tried again, and got an exception from the database saying there was duplicate primary key. I'm using a db password store with a MySQL database. I am using TracAccountManager?-0.3dev_r9785
The exception is generated by this block of code in _do_reset_password in web_ui.py:
cursor.execute("UPDATE session_attribute SET value=%s "
"WHERE name=%s AND sid=%s AND authenticated=1",
(1, "force_change_passwd", username))
if not cursor.rowcount:
cursor.execute("INSERT INTO session_attribute "
(username, "force_change_passwd", 1))
Notably, the UPDATE says 0 affected rows because there is already a row in there that has that value. As such, it sees no rows were updated, and it tries to insert the row (which is already there), and that throws an exception.