Administrative Notes
You've probably noticed that this project appeared to be abandoned for the last few years. We moved to an internal GitLab repository in 2020 while working on some very large updates needed for our production systems. We've finally reached a point where things are stable enough to release again publicly.
Beware that this release comprises several years of changes; the API itself is not even backwards compatible with the previous version. Here in the release notes I am providing an overview of the big changes to watch out for, but there are too many to list comprehensively.
Going forward, I plan to take a hybrid approach to managing and updating this project: most of the day-to-day work will happen internally in GitLab, and I will push changes to GitHub when it makes sense to do so.
The problem I have consistently run into with this project is that I have never fully separated the generic / publicly-useful components from the components that implement very UNT-specific features. Of course the latter have had to take precedence at the expense of the former.
I am not aware of anyone else using this project in production, so I have not been as careful as I would otherwise be to make sure there's a stable migration path (with appropriate deprecations, etc.).
Migration Notes
I highly, highly recommend redeploying from scratch and not attempting to migrate old installations.
If you have custom code built on this, I sincerely and wholeheartedly apologize.
I've moved what was the master
branch for this project (on GitHub) to old-master
and what was the discover
branch to old-discover
. The new default branch is main
.
Overview of Large-Scale Changes
Solr
-
The old Solr version that was bundled in the repository (I think it was version 4.5) has been removed. It's been replaced with the
/solrconf
directory, which contains only the applicable configuration files, schemas, etc. -
The Docker setup now uses the official Solr images.
-
The Solr configuration files have been updated to work with Solr 9.2.
-
Solr cores have been changed.
bibdata
no longer exists. It has been replaced bydiscover-01
anddiscover-02
, the cores that power our Blacklight instance.marc
no longer exists. We never used the MARC record API view in production, and the index was large enough that we decided just to get rid of it.libguides
was never actually used by thecatalog-api
project, and we moved these files so they're managed by a different repository.
-
Added optional support for multi-server Solr architectures. For each Haystack connection, you can now specify a separate
SEARCH
URL andUPDATE
URL. Search/query requests are made againstSEARCH
and update requests are made toUPDATE
. This should support either a legacy / user-managed replication scenario or a SolrCloud-based one. -
Added optional support for specifying how Solr replication happens when a hard "commit" is issued. (I.e., you can issue a manual command to perform replication instead of using polling.)
Django and Python Dependencies
-
The target Django version is 3.2.
-
The target Python version is 3.10.
-
All other dependencies are as up-to-date as possible, except pymarc, which is pinned to the 4.x line for now (due to breaking changes in v5).
The API
-
The
marc
API resource has been removed because we never used it. -
The
bib
API resource is completely different — we've reimplemented all fields to utilize a different Solr schema, the one that our Blacklight instance uses (discover-01
anddiscover-02
). -
The
id
field forbib
s,item
s, andersource
s is now the III record number (minus the check digit), not the internal Sierra database ID.
Export Processes
-
All of the old SolrMarc-based processes have been removed, and SolrMarc has been removed as a dependency.
-
All-new Python-based MARC-translation processes have been added. These were developed specifically for building data for our Blacklight app. These are in
export.sierramarc
andexport.marcparse
.
Redis
-
I highly recommend that people upgrade the version of Redis being used to the latest.
-
Added support for supplying Redis passwords via protected Env variables, using the legacy single-password method for the 'default' user. The Celery and Appdata Redis instances can have separate passwords.
-
Lots of optimization and changes to the
utils.redisobjs
Redis interface.
New / Changed Settings
There are several new or updated settings. See the README and/or the env template file (in /django/sierra/sierra/settings/.env.template) for details.