Skip to content

docs(install): correct the 15.8 upgrade guide against the implementation - #472

Merged
marevol merged 1 commit into
masterfrom
docs-15.8-upgrade-accuracy
Aug 9, 2026
Merged

docs(install): correct the 15.8 upgrade guide against the implementation#472
marevol merged 1 commit into
masterfrom
docs-15.8-upgrade-accuracy

Conversation

@marevol

@marevol marevol commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Summary

Reviewed 15.8/install/upgrade.rst against the actual implementation (fess, fess-parent, docker-fess, corelib) and fixed what it had carried over unchanged from 15.7. Applied to all seven languages.

Most of these are copy-paste survivors: create_version.sh rewrites the Fess version token but not embedded dependency versions or procedures, so the page had drifted from the code.

Corrections

Issue Was Is
Release archive fess-15.8.0.tar.gz + tar -xzf fess-15.8.0.zip + unzip
OpenSearch 3.7.0 (4 plugin installs + 2 prose spots) 3.8.0
Docker volume backup -v search01_data:/data -v ${PROJECT}_search01_data:/data
/etc/fess/* on upgrade "automatically preserved" RPM only; DEB overwrites it
fess_basic_config.bulk "basic settings" 19 config indices
fess_config.bulk "crawl settings, scheduler, labels…" superset of 25 indices
fess.json / doc.json one item, "index settings (mapping)" settings vs. document mapping

Evidence:

  • tar.gz does not exist. targz-bin.xml has been commented out in fess/pom.xml since 2015; only zip-bin.xml is active. The fess-15.7.0 release carries exactly .deb, .rpm, .zip. The documented download was a 404.
  • OpenSearch 3.8.0. fess-parent/pom.xml declares <opensearch.version>3.8.0</opensearch.version>, and fess/plugin.xml pins analysis-fess, analysis-extension, minhash and configsync at 3.8.0 (plus knn at 3.8.0.0). Installing 3.7.0 plugins would fail the version check the page itself warns about.
  • The volume backup silently produced nothing. Compose prefixes volume names with the project name, which the page states two lines earlier. docker run -v search01_data:/data therefore creates a new empty volume, exits 0, and writes an empty tarball that looks like a successful backup.
  • DEB does not preserve /etc/fess. src/packaging/deb/scripts/conffiles lists only /etc/default/fess, /etc/init.d/fess and the systemd unit, so dpkg -i overwrites fess_config.properties. RPM does preserve it via <configuration>noreplace</configuration>.
  • The two bulk descriptions were swapped. fess_basic_config is an alias over 19 config indices; fess_config is a superset of 25 that adds coordinator, crawling_info, crawling_info_param, failure_url, job_log and thumbnail_queue.
  • Step 3 never restored fess_config.properties or log4j2.xml even though step 1 told you to back them up.

Additions

  • k-NN is mandatory in 15.8. fess_indices/fess.json always sends "knn": true and knn.derived_source.enabled, and doc.json always declares content_chunk_vector, regardless of whether chunk vector search is enabled. Index creation fails without the plugin. Step 4 is no longer labelled "if necessary".
  • Upgrading from 14.x crosses an OpenSearch major version (14.19 shipped 2.19.0).
  • Restore accepts only *.bulk, system*.properties, gsa*.xml, fess*.json and doc*.json; the four *.ndjson log files are rejected. Uploading an old fess.json/doc.json overwrites the shipped index definitions, and an uploaded system.properties is loaded into memory only and lost on restart.
  • A Docker rollback procedure, which was missing entirely.
  • Per-install-method log paths (logs/fess.log, /var/log/fess/fess.log, docker compose logs), plus fess-crawler.log / audit.log / searchlog.log.
  • 15.8 migration work: fess-webapp-semantic-search removal and the fess-llm-* split.
  • bin/fess -p writes a pid file; no stop script ships with the archive.
  • Replaced the Upgrade Guide -> https://fess.codelibs.org/ja/ link, which was circular (this page is the upgrade guide) and pointed at the Japanese site from the English, Spanish and French pages, with :doc:prerequisites``.

Verification

  • All 7 files parse with zero docutils warnings. This required padding the CJK heading underlines in ja and zh-cn, which were emitting real Title underline too short warnings (docutils counts CJK as two columns); install-docker.rst and install-linux.rst were already normalized.
  • Structural parity across all 7: 35 headings in the same order and level, 63 literal blocks, 18 notes, 8 warnings, 2 important.
  • All technical literals (versions, paths, flags, property names, :doc:/:ref: targets) are byte-identical across languages.
  • No 3.7.0 and no fess.codelibs.org/ja/ remain in any language.

Follow-up (not in this PR)

3.7.0 is still stale in six sibling pages — prerequisites, install, install-linux, install-windows, run, uninstall — across all 7 languages. Worth a mechanical sweep so the install set stays self-consistent with this page. Two other pre-existing errors surfaced during review: install-linux.rst misquotes FESS_DICTIONARY_PATH as /var/lib/opensearch/data/config/ (the shipped value is /var/lib/opensearch/config/), and config/crawler-advanced.rst writes the crawler log as fess_crawler.log (the real name is fess-crawler.log).

Reviewed ja/15.8/install/upgrade.rst against the Fess, docker-fess and
corelib sources and fixed the errors it carried over from 15.7, then
ported the same changes to de/en/es/fr/ko/zh-cn.

Corrections:

- OpenSearch is 3.8.0 for Fess 15.8, not 3.7.0. fess-parent declares
  <opensearch.version>3.8.0</opensearch.version> and fess/plugin.xml pins
  all four CodeLibs plugins at 3.8.0 (and knn at 3.8.0.0).
- Fess is distributed as a ZIP only. The targz-bin.xml assembly has been
  commented out since 2015 and the GitHub releases carry .deb/.rpm/.zip,
  so the documented "wget fess-15.8.0.tar.gz && tar -xzf" was a 404.
- The Docker volume backup used bare volume names. Compose prefixes them
  with the project name, so "docker run -v search01_data:/data" creates a
  new empty volume, exits 0, and writes an empty archive that looks like a
  successful backup.
- /etc/fess/* is preserved on RPM only. The DEB conffiles list holds just
  /etc/default/fess, /etc/init.d/fess and the systemd unit, so dpkg -i
  overwrites /etc/fess/fess_config.properties on upgrade.
- The two .bulk descriptions were swapped. fess_basic_config is an alias
  over 19 config indices; fess_config is a superset of 25 that adds
  crawling_info, failure_url, job_log and thumbnail_queue.
- fess.json is the index settings and doc.json the document mapping; they
  were described as one item.
- Step 3 never restored fess_config.properties or log4j2.xml even though
  step 1 backed them up, and omitted plugins, themes and the embedded
  OpenSearch data directory.

Additions:

- Fess 15.8 always writes index.knn and a content_chunk_vector knn_vector
  field, so a k-NN capable OpenSearch is mandatory and index creation
  fails without it. Step 4 is no longer labelled optional.
- Upgrading from 14.x crosses an OpenSearch major version (2.x to 3.x).
- Restore only accepts *.bulk, system*.properties, gsa*.xml, fess*.json
  and doc*.json; the *.ndjson log files are rejected. Uploading an old
  fess.json or doc.json overwrites the new release's index definitions,
  and an uploaded system.properties is only held in memory.
- A Docker rollback procedure, which was missing entirely.
- Per-install-method log paths, and the 15.8 plugin migration work
  (fess-webapp-semantic-search removal, the fess-llm-* split).
- bin/fess -p writes a pid file; no stop script ships with the archive.

Also pads the CJK heading underlines in ja and zh-cn. docutils measures a
title by display width, counting CJK as two columns, so those headings
were emitting real "Title underline too short" warnings. All seven files
now parse with no docutils warnings.
@marevol
marevol merged commit 89b577e into master Aug 9, 2026
2 checks passed
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.

1 participant