Mercurial > p > roundup > code
view tools/roundup.public.pgp.key @ 6433:c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
Title: Import of retired node with username after active node fails
with unique constraint failure.
More fixes needed for mysql and postgresql.
mysql: add unique constraint for (keyvalue, __retired__) when
creating class in the database.
On schema change if class is changed, remove the unique
constraint too.
upgrade version of rdbms database from 5 to 6 to add constraint
to all version 5 databases that were created as version 5
and didn't get the unique constraint. Make no changes
on version 5 databases upgraded from version 4, the upgrade
process to 5 added the constraint. Make no changes
to other databases (sqlite, postgres) during upgrade from
version 5 to 6.
postgres: Handle the exception raised on unique constraint violation.
The exception invalidates the database connection so it
can't be used to recover from the exception.
Added two new database methods:
checkpoint_data - performs a db.commit under postgres
does nothing on other backends
restore_connection_on_error - does a db.rollback on
postgres, does nothing on other
backends
with the rollback() done on the connection I can use the
database connection to fixup the import that failed on the
unique constraint. This makes postgres slower but without the
commit after every imported object, the rollback will delete
all the entries done up to this point.
Trying to figure out how to make the caller do_import batch
and recover from this failure is beyond me.
Also dismissed having to process the export csv file before
importing. Pushing that onto a user just seems wrong. Also
since import/export isn't frequently done the lack of
surprise on having a failing import and reduced
load/frustration for the user seems worth it. Also the import
can be run in verbose mode where it prints out a row as it is
processed, so it may take a while, ut the user can get
feedback.
db_test-base.py: add test for upgrade from 5 to 6.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Thu, 10 Jun 2021 12:52:05 -0400 |
| parents | 9deed9569617 |
| children | 1e004afe87bb |
line wrap: on
line source
This is the public PGP/GPG key used to sign roundup distributions. It is used for at least the 1.6.0 release. (Note in this file the @ sign in emails have been replaced with the word "at".) Key info: Roundup Team (signing key for roundup releases) <roundup-devel at lists.sourceforge.net> RSA key ID: 756A76D8 Expires: 2023-07-10 Key fingerprint = 411E 354B 5D1A F261 25D6 2122 1F2D D0CB 756A 76D8 Import the key in this file using: gpg --import roundup.public.pgp.key Then you can use it to verify a downloaded roundup release from pypi. Get the url of the release from: https://pypi.org/project/roundup Example (note there is no 1.5.7 release): https://files.pythonhosted.org/packages/bf/14/d61fac5ed2aaca8c720ac4d4077428b8fdafa356089516ba9ee630975d2a/roundup-1.5.7.tar.gz download the file then download: https://files.pythonhosted.org/packages/bf/14/d61fac5ed2aaca8c720ac4d4077428b8fdafa356089516ba9ee630975d2a/roundup-1.5.7.tar.gz.asc (same url as the file with .asc added at the end). To verify the tar file run: gpg --verify roundup-1.5.7.tar.gz.asc roundup-1.5.7.tar.gz and you should see: gpg: Signature made Wed 11 Jul 2018 08:40:06 PM EDT using RSA key ID 756A76D8 gpg: checking the trustdb [...] gpg: Good signature from "Roundup Team (signing key for roundup releases) <roundup-devel at lists.sourceforge.net>" [...] which verifies the tarball integrity. If something is wrong you will see: gpg: Signature made Wed 11 Jul 2018 08:40:06 PM EDT using RSA key ID 756A76D8 gpg: BAD signature from "Roundup Team (signing key for roundup releases) <roundup-devel at lists.sourceforge.net>" *do not use* the tarball if the signature is BAD. Email the roundup-devel mailing list if there is a problem. -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1 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 CPmI3olFQ8jLtLShWbAOCA== =rt/1 -----END PGP PUBLIC KEY BLOCK-----
