Relstorage

Latest version: v4.1.1

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

Scan your dependencies

Page 13 of 14

1.4.0

Not secure
==================

- Made compatible with ZODB 3.10.0b7.

- Enabled ketama and compression in pylibmc_wrapper. Both options
are better for clusters. [Helge Tesdal]

- Oracle: Use a more optimal query for POSKeyError logging. [Helge Tesdal]

- Fixed a NameError that occurred when getting the history of an
object where transaction extended info was set. [Helge Tesdal]

1.4.0c4

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

- Worked around an Oracle RAC bug: apparently, in a RAC environment,
the read-only transaction mode does not isolate transactions in the
manner specified by the documentation, so Oracle users now have to
use serializable isolation like everyone else. It's slower but more
reliable.

- Use the client time instead of the database server time as a factor
in the transaction ID. RelStorage was using the database server time
to reduce the need for synchronized clocks, but in practice, that
policy broke tests and did not really avoid the need to synchronize
clocks. Also, the effect of unsynchronized clocks is predictable
and manageable: you'll get bunches of transactions with sequential
timestamps.

- If the database returns an object from the future (which should never
happen), generate a ReadConflictError, hopefully giving the application
a chance to recover. The most likely causes of this are a broken
database and threading bugs.

1.4.0c3

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

- Always update the RelStorage cache when opening a database connection for
loading, even when no ZODB Connection is using the storage. Otherwise,
code that used the storage interface directly could cause the cache
to fall out of sync; the effects would be seen in the next
ZODB.Connection.

- Added a ZODB monkey patch that passes the "force" parameter to the
sync method. This should help the poll-interval option do its job
better.

1.4.0c2

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

- Fixed a subtle bug in the cache code that could lead to an
AssertionError indicating a cache inconsistency. The inconsistency
was caused by after_poll(), which was ignoring the randomness of
the order of the list of recent changes, leading it to sometimes
put the wrong transfer ID in the "delta_after" dicts. Also expanded
the AssertionError with debugging info, since cache inconsistency
can still be caused by database misconfiguration and mismatched
client versions.

- Oracle: updated the migration notes. The relstorage_util package
is not needed after all.

1.4.0c1

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

- History-preserving storages now replace objects on restore instead of
just inserting them. This should solve problems people were
having with the zodbconvert utility.

- Oracle: call the DBMS_LOCK.REQUEST function directly instead of using
a small package named ``relstorage_util``. The ``relstorage_util``
package was designed as a secure way to access the DBMS_LOCK package,
but the package turned out to be confusing to DBAs and provided no
real security advantage. People who have already deployed
RelStorage 1.4.x on Oracle need to do the following:

GRANT EXECUTE ON DBMS_LOCK TO <zodb_user>;

You can also drop the ``relstorage_util`` package. Keep the
``relstorage_op`` package.

- Made compatible with ZODB 3.10.

- MySQL: specify the transaction isolation mode for every connection,
since the default is apparently not necessarily "read committed"
anymore.

1.4.0b3

Not secure
====================

- Auto-reconnect in new_oid().

Page 13 of 14

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.