Relstorage

Latest version: v4.1.1

Safety actively analyzes 701671 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 14

3.4.5

==================

- Scale the new timing metrics introduced in 3.4.2 to milliseconds.
This matches the scale of other timing metrics produced
automatically by the use of ``perfmetrics`` in this package.
Similarly, append ``.t`` to the end of their names for the same
reason.

3.4.4

==================

- Fix an exception sending stats when TPC is aborted because of an error
during voting such as a ``ConflictError``. This only affected those
deployments with perfmetrics configured to use a StatsD client. See
:issue:`464`.

3.4.3

==================

- PostgreSQL: Log the backend PID at the start of TPC. This can help
correlate error messages from the server. See :issue:`460`.

- Make more conflict errors include information about the OIDs and
TIDs that may have been involved in the conflict.

- Add support for pg8000 1.17 and newer; tested with 1.19.2. See
:issue:`438`.

3.4.2

==================

- Fix write replica selection after a disconnect, and generally
further improve handling of unexpectedly closed store connections.

- Release the critical section a bit sooner at commit time, when
possible. Only affects gevent-based drivers. See :issue:`454`.

- Add support for mysql-connector-python-8.0.24.

- Add StatsD counter metrics
"relstorage.storage.tpc_vote.unable_to_acquire_lock",
"relstorage.storage.tpc_vote.total_conflicts,"
"relstorage.storage.tpc_vote.readCurrent_conflicts,"
"relstorage.storage.tpc_vote.committed_conflicts," and
"relstorage.storage.tpc_vote.resolved_conflicts". Also add StatsD
timer metrics "relstorage.storage.tpc_vote.objects_locked" and
"relstorage.storage.tpc_vote.between_vote_and_finish" corresponding
to existing log messages. The rate at which these are sampled, as
well as the rate at which many method timings are sampled, defaults
to 10% (0.1) and can be controlled with the
``RS_PERF_STATSD_SAMPLE_RATE`` environment variable. See :issue:`453`.

3.4.1

==================

- RelStorage has moved from Travis CI to `GitHub Actions
<https://github.com/zodb/relstorage/actions>`_ for macOS and Linux
tests and manylinux wheel building. See :issue:`437`.
- RelStorage is now tested with PostgreSQL 13.1. See :issue:`427`.
- RelStorage is now tested with PyMySQL 1.0. See :issue:`434`.
- Update the bundled boost C++ library from 1.71 to 1.75.
- Improve the way store connections are managed to make it less likely
a "stale" store connection that hasn't actually been checked for
liveness gets used.

3.4.0

==================

- Improve the logging of ``zodbconvert``. The regular minute logging
contains more information and takes blob sizes into account, and
debug logging is more useful, logging about four times a minute.
Some extraneous logging was bumped down to trace.

- Fix psycopg2 logging debug-level warnings from the PostgreSQL server
on transaction commit about not actually being in a transaction.
(Sadly this just squashes the warning, it doesn't eliminate the
round trip that generates it.)

- Improve the performance of packing databases, especially
history-free databases. See :issue:`275`.

- Give ``zodbpack`` the ability to check for missing references in
RelStorages with the ``--check-refs-only`` argument. This will
perform a pre-pack with GC, and then report on any objects that
would be kept and refer to an object that does not exist. This can
be much faster than external scripts such as those provided by
``zc.zodbdgc``, though it definitely only reports missing references
one level deep.

This is new functionality. Feedback, as always, is very welcome!

- Avoid extra pickling operations of transaction meta data extensions
by using the new ``extension_bytes`` property introduced in ZODB
5.6. This results in higher-fidelity copies of storages, and may
slightly improve the speed of the process too. See :issue:`424`.

- Require ZODB 5.6, up from ZODB 5.5. See :issue:`424`.

- Make ``zodbconvert`` *much faster* (around 5 times faster) when the
destination is a history-free RelStorage and the source supports
``record_iternext()`` (like RelStorage and FileStorage do). This
also applies to the ``copyTransactionsFrom`` method. This is disabled
with the ``--incremental`` option, however. Be sure to read the
updated zodbconvert documentation.

Page 3 of 14

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.