trac-ticketlinks / trac / web / session.py

Diff from to

trac/web/session.py

                         WHERE sid=%s
                         """, (self.req.authname, sid))
             else:
-                # we didn't have an anonymous session for this sid
-                cursor.execute("""
-                    INSERT INTO session (sid,last_visit,authenticated)
-                    VALUES (%s,%s,1)
-                    """, (self.req.authname, int(time.time())))
+                # We didn't have an anonymous session for this sid. The
+                # authenticated session might have been inserted between the
+                # SELECT above and here, so we catch the error.
+                try:
+                    cursor.execute("""
+                        INSERT INTO session (sid,last_visit,authenticated)
+                        VALUES (%s,%s,1)
+                        """, (self.req.authname, int(time.time())))
+                except Exception:
+                    self.env.log.warning('Authenticated session for %s '
+                                         'already exists', self.req.authname)
+                    db.rollback()
         self._new = False
 
         self.sid = sid
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.