UniqueViolation in notes_add #651

Closed
opened 2023-05-27 09:42:58 +02:00 by viennet · 2 comments
Owner

On observe parfois cette exception, sans apparemment que les utilisateurs ne s'en plaignent. La valeur peut être quelconque (ABS, EXC,nombre).

[2023-05-25 15:39:50,284] xxx@xxx requested https://xxx/Scolarite/Notes/save_note
ERROR: Exception on /ScoDoc/xxx/Scolarite/Notes/save_note [POST]
Referrer: https://xxx/Scolarite/Notes/saisie_notes?evaluation_id=1452
Method: POST
Params: ImmutableMultiDict([('etudid', '2028'), ('evaluation_id', '1452'), ('value', 'ATT'), ('comment', '')])
Traceback (most recent call last):
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app
    response = self.full_dispatch_request()
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1825, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1823, in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/opt/scodoc/app/decorators.py", line 80, in scodoc_function
    return func(*args, **kwargs)
  File "/opt/scodoc/app/decorators.py", line 92, in decorated_function
    return f(*args, **kwargs)
  File "/opt/scodoc/app/decorators.py", line 227, in scodoc7func_decorator
    value = func(*pos_arg_values, **kwargs)
  File "/opt/scodoc/app/scodoc/sco_saisie_notes.py", line 1388, in save_note
    nbchanged, _, existing_decisions = notes_add(
  File "/opt/scodoc/app/scodoc/sco_saisie_notes.py", line 574, in notes_add
    cursor.execute(
psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "notes_notes_etudid_evaluation_id_key"
DETAIL:  Key (etudid, evaluation_id)=(2028, 1452) already exists.
On observe parfois cette exception, sans apparemment que les utilisateurs ne s'en plaignent. La valeur peut être quelconque (ABS, EXC,nombre). ``` [2023-05-25 15:39:50,284] xxx@xxx requested https://xxx/Scolarite/Notes/save_note ERROR: Exception on /ScoDoc/xxx/Scolarite/Notes/save_note [POST] Referrer: https://xxx/Scolarite/Notes/saisie_notes?evaluation_id=1452 Method: POST Params: ImmutableMultiDict([('etudid', '2028'), ('evaluation_id', '1452'), ('value', 'ATT'), ('comment', '')]) Traceback (most recent call last): File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 2528, in wsgi_app response = self.full_dispatch_request() File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1825, in full_dispatch_request rv = self.handle_user_exception(e) File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1823, in full_dispatch_request rv = self.dispatch_request() File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1799, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) File "/opt/scodoc/app/decorators.py", line 80, in scodoc_function return func(*args, **kwargs) File "/opt/scodoc/app/decorators.py", line 92, in decorated_function return f(*args, **kwargs) File "/opt/scodoc/app/decorators.py", line 227, in scodoc7func_decorator value = func(*pos_arg_values, **kwargs) File "/opt/scodoc/app/scodoc/sco_saisie_notes.py", line 1388, in save_note nbchanged, _, existing_decisions = notes_add( File "/opt/scodoc/app/scodoc/sco_saisie_notes.py", line 574, in notes_add cursor.execute( psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "notes_notes_etudid_evaluation_id_key" DETAIL: Key (etudid, evaluation_id)=(2028, 1452) already exists. ```
viennet added this to the ScoDoc 9.5 milestone 2023-05-27 09:42:58 +02:00
viennet added the
bug
label 2023-05-27 09:42:58 +02:00
viennet modified the milestone from ScoDoc 9.5 to ScoDoc 9.6 2023-07-02 17:18:41 +02:00
viennet added the
à confirmer
label 2023-07-31 21:54:43 +02:00
Contributor

A la relecture du code:

cursor.execute(
                            """INSERT INTO notes_notes
                            (etudid, evaluation_id, value, comment, date, uid)
                            VALUES
                            (%(etudid)s,%(evaluation_id)s,%(value)s,
                                %(comment)s,%(date)s,%(uid)s)
                            ON CONFLICT ON CONSTRAINT notes_notes_etudid_evaluation_id_key
                            DO UPDATE SET etudid=%(etudid)s, evaluation_id=%(evaluation_id)s,
                                value=%(value)s, comment=%(comment)s, date=%(date)s, uid=%(uid)s
                            """,
                            args,
                        )

ce bug semble résolu par :
fb4cabee3b

A la relecture du code: ``` cursor.execute( """INSERT INTO notes_notes (etudid, evaluation_id, value, comment, date, uid) VALUES (%(etudid)s,%(evaluation_id)s,%(value)s, %(comment)s,%(date)s,%(uid)s) ON CONFLICT ON CONSTRAINT notes_notes_etudid_evaluation_id_key DO UPDATE SET etudid=%(etudid)s, evaluation_id=%(evaluation_id)s, value=%(value)s, comment=%(comment)s, date=%(date)s, uid=%(uid)s """, args, ) ``` ce bug semble résolu par : https://scodoc.org/git/ScoDoc/ScoDoc/commit/fb4cabee3b3ef6619f07159b704c105b4668cc09
Author
Owner

oui, en effet, c'était un commit "grand ménage de vieux code" mais j'avais oublié de fermer le ticket.

oui, en effet, c'était un commit "grand ménage de vieux code" mais j'avais oublié de fermer le ticket.
viennet removed the
à confirmer
label 2023-09-27 22:13:00 +02:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: ScoDoc/ScoDoc#651
No description provided.