Skip to content

Fix dense vector field schema and guard CI against solr-only regressions#73

Merged
reekitconcept merged 4 commits into
mainfrom
fix-vector-image
May 12, 2026
Merged

Fix dense vector field schema and guard CI against solr-only regressions#73
reekitconcept merged 4 commits into
mainfrom
fix-vector-image

Conversation

@reekitconcept
Copy link
Copy Markdown
Member

@reekitconcept reekitconcept commented May 12, 2026

Summary

  • Fix the knn_vector_768 field type in solr/etc/conf/schema.xml: replace the unrecognized hnswEfConstruction attribute with hnswBeamWidth. With the broken attribute on main the Solr plone core fails to load on startup (org.apache.solr.common.SolrException: Unable to create core [plone]), so the indexer is non-functional on the current latest image. Verified the valid attribute names by inspecting DenseVectorField.class inside ghcr.io/kitconcept/solr:latest.
  • Run the acceptance suite on solr/** changes. main.yml's push trigger and config.yml's acceptance path-filter both omitted solr/**, so a solr-only PR (like the one that introduced the broken attribute) silently bypassed every test that actually starts Solr. The solr-acceptance service is built from the working tree (docker-compose-ci.yml), so this immediately tests the latest schema with no extra plumbing.
  • Add a smoke-test step in solr.yml. The image-build workflow previously did docker build + docker push only — a schema that fails core-load still produces a buildable image. The new step boots the freshly built amd64 image and polls /solr/plone/admin/ping, which returns 404 when the core failed to load. Multi-arch push only runs if the smoke test passes, so we stop publishing broken :latest images.

Test plan

  • Solr image creation workflow runs — including the new smoke-test step — and the multi-arch push only happens after it passes.
  • kitconcept Solr CI (main.yml) now triggers on this PR (previously a solr-only change wouldn't have triggered it at all).
  • All five acceptance Cypress jobs (Solr / Search Blocks / Search Document / Search File / Search UI) run and pass against the locally-built solr-acceptance container.

hnswEfConstruction is not a recognized attribute on solr.DenseVectorField
in Solr 9.10, causing the plone core to fail to load on startup. The
correct attribute name is hnswBeamWidth.
A solr-only change like the broken DenseVectorField attribute slipped
through CI because:

- main.yml's push trigger and config.yml's acceptance path-filter both
  excluded solr/**, so the acceptance suite (the only thing that boots
  Solr) never ran for solr-only PRs.
- solr.yml built and pushed the image but did not start it, so a schema
  that fails to load on core startup still produced a green build.

Add solr/** to both filters so acceptance runs on solr-only PRs against
the locally-built solr-acceptance service, and add a smoke-test step to
solr.yml that boots the freshly built image and pings the plone core
before the multi-arch push.
Copy link
Copy Markdown
Member

@davisagli davisagli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@reekitconcept thank you!

@reekitconcept reekitconcept merged commit 7847319 into main May 12, 2026
19 checks passed
@reekitconcept reekitconcept deleted the fix-vector-image branch May 12, 2026 17:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants