This PR should be considered an experimental proof-of-concept - a basis, perhaps - for using Golang versions of microservices instead of the stock PHP versions. Tests are not expected to pass in this PR.
When referring to Houdini, this PR description is speaking of the Golang version of Houdini unless otherwise specified
This PR does a few things:
Updates the snapshot image
It provides the Islandora Collection and Repository Objects for the Graphic and Pictorial collection. This provides a basis for running (and re-running) the Graphic and Pictorial image media ingest without going through the pain of loading dependent taxonomies, collections, and repository objects.
The snapshot image associated with this PR should not be deployed to any cloud-based service; it is only of use to developers.
Removes alpaca. In the golang world, Alpaca is not used; the microservices communicate directly with the message broker.
Alpaca reads messages from the message broker. The golang version of Houdini (included in this PR) also reads messages from the message broker. If both were running, messages intended for Houdini would be read by Alpaca, and golang Houdini would never see them. So this PR removes Alpaca.
Alpaca would not be part of the architecture if golang-based microservices are used.
Modifies the MariaDB read isolation to READ-COMMITTED
When multiple instances of Houdini are running, there is database contention for the Drupal cache_entity table which results in deadlock exceptions (when multiple Houdinis are running, concurrent PUTs to Drupal occur). Modifying the read isolation to READ-COMMITTED solves the deadlock problem.
This is a gotcha: the public key used by Houdini to verify JWT tokens must be modified in two ways:
the env var changes from HOUDINI_JWT_PUBLIC_KEY to DRUPAL_JWT_PUBLIC_KEY
the value of the env var must have a begin and end block that uses -----BEGIN RSA PUBLIC KEY----- and -----END RSA PUBLIC KEY----- (note the addition of RSA)
this image does not verify JWTs, but it does require that a JWT be present
This PR should be considered an experimental proof-of-concept - a basis, perhaps - for using Golang versions of microservices instead of the stock PHP versions. Tests are not expected to pass in this PR.
This PR does a few things:
alpaca
. In the golang world, Alpaca is not used; the microservices communicate directly with the message broker.READ-COMMITTED
cache_entity
table which results in deadlock exceptions (when multiple Houdinis are running, concurrentPUT
s to Drupal occur). Modifying the read isolation toREAD-COMMITTED
solves the deadlock problem.HOUDINI_JWT_PUBLIC_KEY
toDRUPAL_JWT_PUBLIC_KEY
-----BEGIN RSA PUBLIC KEY-----
and-----END RSA PUBLIC KEY-----
(note the addition ofRSA
)