annotate detectors/newissuecopy.py @ 6610:db3f0ba75b4a

Change checkpoint_data and restore_connection_on_error to subtransaction checkpoint_data and restore_connection_on_error used to commit() and rollback() the db connection. This causes additional I/O and load. Changed them to use 'SAVEPOINT name' and 'ROLLBACK TO name' to get a faster method for handling errors within a tranaction. One thing to note is that postgresql (unlike SQL std) doesn't overwrite an older savepoint with he same name. It keeps all savepoints but only rolls back to the newest one with a given name. This could be a resource issue. I left a commented out release statement in case somebody runs into an issue due to too many savepoints. I expect it to slow down the import but....
author John Rouillard <rouilj@ieee.org>
date Sat, 29 Jan 2022 11:29:36 -0500
parents 198b6e810c67
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4627
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
1 # copied from nosyreaction
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
2
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
3 from roundup import roundupdb
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
4
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
5 def newissuecopy(db, cl, nodeid, oldvalues):
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
6 ''' Copy a message about new issues to a team address.
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
7 '''
5242
39c9f69c3f31 OpenPGP: Extends newissuecopy.py to encrypt if configured.
Bernhard Reiter <bernhard@intevation.de>
parents: 4627
diff changeset
8 # get relevant crypto settings
39c9f69c3f31 OpenPGP: Extends newissuecopy.py to encrypt if configured.
Bernhard Reiter <bernhard@intevation.de>
parents: 4627
diff changeset
9 encrypt = db.config.PGP_ENABLE and db.config.PGP_ENCRYPT
39c9f69c3f31 OpenPGP: Extends newissuecopy.py to encrypt if configured.
Bernhard Reiter <bernhard@intevation.de>
parents: 4627
diff changeset
10
4627
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
11 # so use all the messages in the create
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
12 change_note = cl.generateCreateNote(nodeid)
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
13
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
14 # send a copy to the nosy list
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
15 for msgid in cl.get(nodeid, 'messages'):
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
16 try:
5242
39c9f69c3f31 OpenPGP: Extends newissuecopy.py to encrypt if configured.
Bernhard Reiter <bernhard@intevation.de>
parents: 4627
diff changeset
17 # note: fourth arg must be a list
39c9f69c3f31 OpenPGP: Extends newissuecopy.py to encrypt if configured.
Bernhard Reiter <bernhard@intevation.de>
parents: 4627
diff changeset
18 cl.send_message(nodeid, msgid, change_note,
39c9f69c3f31 OpenPGP: Extends newissuecopy.py to encrypt if configured.
Bernhard Reiter <bernhard@intevation.de>
parents: 4627
diff changeset
19 ['team@team.host'],
39c9f69c3f31 OpenPGP: Extends newissuecopy.py to encrypt if configured.
Bernhard Reiter <bernhard@intevation.de>
parents: 4627
diff changeset
20 crypt=encrypt)
5248
198b6e810c67 Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents: 5242
diff changeset
21 except roundupdb.MessageSendError as message:
198b6e810c67 Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents: 5242
diff changeset
22 raise roundupdb.DetectorError(message)
4627
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
23
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
24 def init(db):
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
25 db.issue.react('create', newissuecopy)
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
26
6b32e9dac625 Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
27 # vim: set filetype=python ts=4 sw=4 et si

Roundup Issue Tracker: http://roundup-tracker.org/