• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

zopefoundation / ZODB / 1075
84%

Build:
DEFAULT BRANCH: master
Ran 31 Aug 2020 10:44AM UTC
Jobs 6
Files 51
Run time 4min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

pending completion
1075

push

travis-ci

navytux
interface: Require invalidations to be called with full set of objects and not to skip transactions

Currently invalidate documentation is not clear whether it should be
called for every transaction and whether it should include full set of
objects created/modified by that transaction. Until now this was working
relatively well for the sole purpose of invalidating client ZEO cache,
because for that particular task it is relatively OK not to include just
created objects into invalidation messages, and even to completely skip
sending invalidation if transaction only create - not modify - objects.
Due to this fact the workings of the client cache was indifferent to the
ambiguity of the interface.

In 2016 skipping transactions with only created objects was reconsidered
as bug and fixed in ZEO5 because ZODB5 relies more heavily on MVCC
semantic and needs to be notified about every transaction committed to
storage to be able to properly update ZODB.Connection view:

https://github.com/zopefoundation/ZEO/commit/02943acd#diff-52fb76aaf08a1643cdb8fdaf69e37802L889-R834
https://github.com/zopefoundation/ZEO/commit/9613f09b

However just-created objects were not included into invalidation
messages until, hopefully, recently:

https://github.com/zopefoundation/ZEO/pull/160

As ZODB is started to be used more widely in areas where it was not
traditionally used before, the ambiguity in invalidate interface and the
lack of guarantees - for any storage - to be notified with full set of
information, creates at least the following problems:

- a ZODB client (not necessarily native ZODB/py client) can maintain
  raw cache for the storage. If such client tries to load an oid at
  database view when that object did not existed yet, gets "no object"
  reply and stores that information into raw cache, to properly invalidate
  the cache it needs an invalidation message from ZODB server that
  *includes* created object.

- tools like `zodb watch` [1,2,3] don't work properly (... (continued)

6481 of 8543 relevant lines covered (75.86%)

4.52 hits per line

Jobs
ID Job ID Ran Files Coverage
1 1075.1 (ZOPE_INTERFACE_STRICT_IRO=1) 31 Aug 2020 10:45AM UTC 0
74.46
Travis Job 1075.1
2 1075.2 (ZOPE_INTERFACE_STRICT_IRO=1) 31 Aug 2020 10:45AM UTC 0
75.51
Travis Job 1075.2
3 1075.3 (ZOPE_INTERFACE_STRICT_IRO=1) 31 Aug 2020 10:44AM UTC 0
75.51
Travis Job 1075.3
4 1075.4 (ZOPE_INTERFACE_STRICT_IRO=1) 31 Aug 2020 10:44AM UTC 0
75.51
Travis Job 1075.4
5 1075.5 (ZOPE_INTERFACE_STRICT_IRO=1) 31 Aug 2020 10:45AM UTC 0
75.59
Travis Job 1075.5
8 1075.8 (ZOPE_INTERFACE_STRICT_IRO=1 PURE_PYTHON=1) 31 Aug 2020 10:48AM UTC 0
75.57
Travis Job 1075.8
Source Files on build 1075
Detailed source file information is not available for this build.
  • Back to Repo
  • Travis Build #1075
  • c1e08052 on github
  • Prev Build on master (#1072)
  • Next Build on master (#1076)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc