9.2. Release Notes

9.2.1. LOCKSS 2.0.91-beta2

Released: 2026-07-13

LOCKSS 2.0.91-beta2 is the second beta release of the LOCKSS 2.0 system.

Release Notes

  • Major changes

    • The artifact index uses PostgreSQL instead of Solr starting with this release, for much better performance.

    • Most UI, REST and other port numbers have changed in this release, to simplify firewall configuration. See Section 9.5.1 (LOCKSS 2.0-beta2 Port Changes).

    • A beta version of officially supported Python clients to interact with the LOCKSS 2.x REST APIs is now available for testing.

  • LOCKSS 1.x to 2.x migration

    • For new-host migrations where crawling from a known IP is important (such as in the GLN), added infrastructure to proxy through the v1 instance during migration, and related logic in configure-lockss.

    • In new-host or same-host migrations where crawl rates from a given IP address are important, the v1 and v2 crawl rates each can be halved globally during the migration to avoid exceeding maximum crawl rates.

    • Added a migration banner on most UI screens while migration from LOCKSS 1.x is in progress.

  • Platform

    • Upgraded to K3s 1.31.5+k3s1.

    • Previously, some log files were not rotated; they are now rotated with Logrotate-centric containers, including in 3rd-party containers.

  • Repository

    • Support adding a specified artifact version.

    • Allow replacing a specified uncommitted artifact version.

    • Now using one WARC journal per WARC file.

    • Bring RestLockssRepository's callBulkOp in line with other client calls, and improve tests.

    • Repository better detects "full disk" errors and reports them to clients, via a 500 or 507 response.

    • Added repository error injection framework, to facilitate testing.

    • Conditionally compress content depending on media type, only if not already compressed, for a configurable set of media types.

    • Automatically detect situations requiring rebuilding the artifact index.

    • Support URLs (artifact names) longer than 1024 characters (via a long URL table).

    • Consolidated the /aus/{auid}/artifacts endpoint into /artifacts; moved AUID to a query parameter

    • Revamped paged iterator logic to not hold database connections open.

    • ArtifactIndex and WarcArtifactDataStore versioning and upgrade support.

    • Ensure multiple storage areas are filled evenly.

    • By default, potentially huge temp files used during artifact upload are stored in the first content storage area instead of the temporary storage area.

  • Metadata

    • The LOCKSS Metadata Extraction Service has been merged into the LOCKSS Metadata Service.

    • Rework metadata job queueing and database upgrading to fix bugs and accommodate concurrent access by v1 during migration.

  • Core

    • Make the size of the REST client connection pool configurable.

    • Allow REST client read/connect timeouts to be changed without restart; default read timeout changed to 1 hour.

    • Apply missing non-default AU config params from TDB at AU config time.

    • Added plugin_allow_start_url_error plugin key.

    • Added isKubernetes() and isRuncluster() methods to platform version; disallow blanks in platform version name and handle semantic versions.

    • Many updated dependencies.

    • Enabled AccountManager by default.

    • Added QueryUrlNormalizer.

    • Allow permission page redirects to take off-host excursion and return to original host/URL.

    • Handle Content-Encoding: "" header as null.

    • Made ports in the Content Server Options servlet read only (as they are in fact not yet configurable through the UI in LOCKSS 2.x).

    • Removed ConfigParamDescr.InvalidFormatException in favor of AuParamType.InvalidFormatException.

    • Fixed temp file leaks.

  • API changes

    • Make result pagination more consistent across services and collections.

    • Improve REST error handling and error responses.

    • Changed configuration service REST endpoint paths: normalizeUrl to normalizeurl, mimeType to mediatypes.

    • Clean up and update API specifications for PageInfo, ArtifactPageInfo, AuidPageInfo, AuSize, RepositoryInfo (nullable properties, renamed resultsPerPage to itemsInPage).

    • Propagated enum changes (IncludeContentEnum, BulkAuOpEnum, etc.) from crawler and poller services.

  • Security

    • IP access control lists for admin access and content access are enforced for third-party services (PostgreSQL, Pywb, OpenWayback).

    • Temporarily relax strict access control to Account Manager endpoints, in order to allow the migrator to migrate user accounts.

    • Add role-based authorization uniformly to all REST services.

  • Performance

    • Pipelined artifact iterator, primarily to improve hash performance.

    • Increased buffer size when reading large WARCs.

  • Web replay

    • Pywb and OpenWayback work better thanks to several fixes.

    • OpenWayback now supplies credentials to the repository.

    • AU detail page in the UI now links to Pywb and OpenWayback (if they're configured).

    • Find the first start URL with content for the default replay URL.

    • Added requested_disposition query parameter (ported from lockss-daemon).

    • Port ServeContent rewrite-for-stem-map logic from lockss-daemon.

    • Added CDX record endpoint improvements.

    • Don't rewrite data: URLs.

  • Bug fixes

    • Endpoints allowing un-credentialed access now grant correct privileges to credentialed clients.

    • Ensure proper URL-encoding of query and path args in REST request URLs.

    • In plugins with alternative permission URLs, a permission fetch failure could mask failure to fetch a required start URL, erroneously allowing a crawl to appear successful even though it had failed.

    • Ensure all services are notified of relevant config changes via a ConfigChanged notification.

    • Prevented ServeContent and ViewContent from sending incorrect (compressed) content length.

    • Check global excludes when following redirects.

    • Fixed a metadata indexing enabling/disabling bug.

  • TDB tools

    • Add titleName trait to supplant the title block's name.

    • Make title sets based on publisher names, not publisher blocks.

    • Add AU-level DOI and demote title-level DOI.

    • TdbXml set of publisher names now reset between multiple segments (e.g. --output-dir).

Component Versions

LOCKSS 2.0.91-beta2 NOT YET RELEASED consists of a configurable set of the following components: