docs(15.9): upgrade guide covers stored Groovy jobs, carried-over config and plugin upgrades - #536
Merged
Merged
Conversation
…fig and plugin upgrades An installation that upgrades from 15.8 by following install/upgrade.rst still ends up with several things broken that the guide did not mention. All seven languages of the development tree (15.9) are updated. - Groovy: every job 15.8 seeded is stored as groovy and the startup seeding is create-only, so Default Crawler and the other bundled jobs fail without fess-script-groovy, mostly visible only in fess.log. The section now lists every kind of stored setting that 15.9 evaluates as Groovy and what each does without the plugin, tells upgraders to look for the startup warning, and gives both ways out: install the plugin, or switch each kind to JavaScript with the field that selects its engine (Thumbnail Purger's 1000L literal needs an edit). - Index Exporter: the stored script names org.opensearch.index.query.QueryBuilders, removed by codelibs/fess#3439; give the replacement script and fix the examples in config/admin-index-export.rst. - Carried-over configuration: ZIP Step 3 copies fess_config.properties and fess.in.sh, and RPM keeps a modified fess_config.properties. List the keys whose 15.8.0 value now misbehaves (job.default.script, job.template.script, crawler.file.protocols, search_engine.http.url, the jcifs options, removed keys) and what a 15.8 fess.in.sh lacks. Say that DEB overwrites the file without prompting or a backup. - jcifs 3.x property names (codelibs/fess#3433): SMB connect and session timeouts now take effect, 35 s to 60 s. - The four keys removed by codelibs/fess#3435. - Plugins: bin/fess-setup upgrade plugins and check; what a Playwright crawl configuration does without the plugin. - Replace the ZIP size figure, which did not match the released fess-15.8.0.zip, with the Playwright driver bundle's share of it. The startup warning, the Playwright crawler warning and path mappings being left unapplied describe codelibs/fess#3451, #3445 and #3452.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The 15.9 upgrade guide describes each change on its own terms, but an installation that upgrades from 15.8 by following it step by step still ends up with several things broken that the guide never mentions. This fills those gaps in
install/upgrade.rstand corrects the query examples inconfig/admin-index-export.rst, in all seven languages (ja, en, de, es, fr, ko, zh-cn). Only the development tree (15.9) is touched.Found while verifying 15.9.0 by upgrading a 15.8.0 installation with the guide as written.
The bundled jobs stay on Groovy, and the guide did not say where to look
codelibs/fess#3425 stopped bundling Groovy. The script engine section said only that "a job that was already saved as groovy" needs the plugin, which reads as if it concerned custom jobs.
In fact every job that 15.8.0 seeded is stored with
scriptType=groovy. That covers all 14 entries inscheduled_job.bulk, Default Crawler, Suggest Indexer and Config Reloader included.SearchEngineClientloads the seed withOpType.CREATE, so an upgraded installation keeps all of them.Without
fess-script-groovy, each job fails whenever it runs, and Default Crawler never starts a crawl. Nine of the fourteen have Logging turned off, so the only trace is aFailed to execute jobwarning infess.log.The section is restructured around every kind of stored setting that 15.9 evaluates as Groovy when no engine is recorded, and what each does without the plugin. Each kind has its own fallback in core:
ScheduledJob#getScriptTypefield.script.*CrawlingConfig#getScriptTypeAbstractDataStore#getScriptTypeDocBoostMatchergroovy:path mappingsPathMappingHelperThe section then:
tells upgraders to look on the first start for the
fess.logwarning that beginsSettings use the script engine groovy, which is not registered. It counts each kind of setting and namesjob.default.scriptwhen a carried-over file still sets groovy.gives both ways out:
bin/fess-setup install plugin fess-script-groovyand a restart, after which the warning is no longer logged; orgives the switch per kind, using the screen labels from
fess_label_*.propertiesin each language:config.script.type=javascriptin Config Parametersscript_type=javascriptin Parametersjavascript:prefix of Replacementjob.default.scriptpoints out that two stored job scripts are not valid JavaScript as they are: Thumbnail Purger's
1000Lliteral and Index Exporter (next section).describes a
groovy:path mapping without its engine as not applied, with URLs left unchanged."Jobs created after the upgrade get javascript" is now qualified, because that holds only when
job.default.scriptwas not carried over (see the configuration group below).Index Exporter names a package that no longer exists
codelibs/fess#3439 moved the query builders to
org.codelibs.fesen.opensearch.*and updated the seeded script. As that PR's own upgrade note says, the seed is create-only, so an upgraded installation keepsorg.opensearch.index.query.QueryBuilders. The job then fails with or without the Groovy plugin.A new section gives the one-line replacement script. The three examples in
config/admin-index-export.rstused the old package as well; they are corrected in every language.Configuration files carried over from 15.8
ZIP Step 3 copies the old
fess_config.propertiesandbin/fess.in.shwhole. An RPM upgrade keeps a modified/etc/fess/fess_config.properties(%config(noreplace)).A new section lists the keys whose 15.8.0 value now does the wrong thing, from a key-by-key diff of the file between the
fess-15.8.0tag andmain:job.default.scriptgroovyjavascriptjob.template.scriptcrawler.file.protocols...,storage,s3,gcsfile,smb,smb1,ftps3:andgcs:paths are accepted without their pluginsearch_engine.http.urlhttp://localhost:9201http://localhost:9200SEARCH_ENGINE_HTTP_URLis unset (ResourceUtil#getFesenHttpUrl), which it is in a 15.8fess.in.shjvm.crawler.options,jvm.thumbnail.optionsjcifs.client.*crawler.default.scriptand the four keys belowThe same section covers the rest of what a copied file carries over:
fess.in.shleavesSEARCH_ENGINE_HTTP_URLunset.The surrounding steps now point there:
Properties
jcifs.smb.client.*andjcifs.smb1.smb.client.*, which jcifs 3 ignores.jcifs.client.*, so the SMB connect and session timeouts take effect for the first time and go from 35 s (the jcifs default) to 60 s.rag.chat.message.max.lengthstill works as a system property.Plugins
bin/fess-setup upgrade pluginsandbin/fess-setup check(feat(setup): add check, upgrade plugins and list installed fess#3417). It also notes thatupgrade pluginsdoes not install the plugins split out in 15.9. Step 3's copy of the plugin directory gets a note pointing there.playwrightwithout the plugin:Distribution size
"The ZIP drops from 438.5 MiB to 204.7 MiB" does not match the released artifacts:
fess-15.8.0.zipis 479,344,489 bytes (457.1 MiB). The sentence now states something that can be checked against that zip: the Playwright driver bundle that carried the Node.js executables took up 204.3 MiB of it.The guide gives no figure for 15.9. A zip built from current
mainis 102.8 MiB, but that number still depends on dependency releases: codelibs/fess#3444 only takes ICU4J out of the distribution once fess-suggest is released.The chapter intro no longer counts "eight changes", since the chapter now has more sections.
Ordering
Parts of the text describe log output and behaviour from pull requests that are still open. Everything else describes behaviour already on codelibs/fess
main.groovy:path mapping being left unapplied, with URLs unchanged, when its engine is missing.Verification
python tools/check_headings.py */15.9: no mismatched section titles.doctitle_xform=Falseas Sphinx uses:fess_label_{en,ja,de,es,fr,ko,zh_CN}.properties, using the keys the admin JSPs use:scheduledjob_scriptTypeboost_document_rule_script_typeconfig_parameterhandler_parameterhandler_scriptreplacementscheduledjob_jobLoggingfess-15.8.0andmain:scheduled_job.bulk: script types, Logging flags, and the Thumbnail Purger and Index Exporter scripts;fess_config.propertieskey diff;fess.in.shdiff;SearchEngineClient#open;FessSetupusage text;fess-15.8.0.zipand the size of itsdriver-bundle-1.60.0.jarentry.