[Relstorage] Running Plone/Zope against Yugabyte

Hi there,

Yugabyte is a cloud-aware "planet-scale" database with a Postgres binary-compatible protocol layer.

Based on my database experience over many years with many, many databases, I have a good opinion about Yugabyte and about their claims.

In the past, Yugabyte did not work with Relstorage but with the most decent version of Yugabyte and Relstorage I have good feeling that Plone could benefit a lot from Yugabyte when it comes to scalable solutions.

For the first time I am able to run Zope (ZMI and basic ZMI operations) against Yugabyte. So it seems that the combination Zope/Plone + Yugabyte through Relstorage and Psycopg2 seems to work.

However creating a Plone site fails at commit time (obviously to some connection timeout):

2020-03-11 20:40:20,863 WARNING [relstorage.adapters.postgresql.connmanager:92][waitress] Unable to connect: FATAL:  Timed out: Read RPC (request call id 123) to 172.18.0.2:7100 timed out after 1.148s

2020-03-11 20:40:21,804 ERROR   [Zope.SiteErrorLog:252][waitress] 1583955621.7481280.9929664127610605 http://dev2.zopyx.de:12020/@@plone-addsite
Traceback (innermost last):
  Module ZPublisher.WSGIPublisher, line 168, in transaction_pubevents
  Module transaction._manager, line 257, in commit
  Module transaction._manager, line 135, in commit
  Module transaction._transaction, line 282, in commit
  Module transaction._compat, line 45, in reraise
  Module transaction._transaction, line 273, in commit
  Module transaction._transaction, line 464, in _commitResources
  Module transaction.weakset, line 61, in map
  Module transaction._transaction, line 464, in <lambda>
  Module ZODB.Connection, line 757, in afterCompletion
  Module ZODB.Connection, line 737, in newTransaction
  Module relstorage.storage, line 632, in poll_invalidations
  Module relstorage.adapters.connections, line 201, in restart_and_call
  Module relstorage.adapters.connections, line 224, in call
  Module relstorage.adapters.connections, line 148, in _open_connection
  Module relstorage.adapters.connmanager, line 317, in open_for_load
  Module relstorage.adapters.postgresql.connmanager, line 135, in _do_open_for_load
  Module perfmetrics._metric, line 72, in perfmetrics._metric._AbstractMetricImpl.__call__
  Module relstorage.adapters.postgresql.connmanager, line 78, in open
  Module relstorage.adapters.postgresql.drivers.psycopg2, line 101, in connect_with_isolation
psycopg2.OperationalError: FATAL:  Timed out: Read RPC (request call id 123) to 172.18.0.2:7100 timed out after 1.148s

Anyone with Relstorage know-now having some idea :thinking:

1 Like

I would love to see Yugabyte supported. But I fear in here are not many with in-depth RelStorage knowledge. I would pass this question over to an issue at https://github.com/zodb/relstorage

I'd ask Jason Madden either directly or as Jens said via the relstorage project.