Skip to content

[feature] Add @enabled attribute to conf.xml elements to disable entries without removing them - #6550

Merged
dizzzz merged 4 commits into
eXist-db:developfrom
duncdrum:dp-conf-enabled-attr
Aug 25, 2026
Merged

[feature] Add @enabled attribute to conf.xml elements to disable entries without removing them#6550
dizzzz merged 4 commits into
eXist-db:developfrom
duncdrum:dp-conf-enabled-attr

Conversation

@duncdrum

@duncdrum duncdrum commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds an enabled="yes|no" attribute (default yes) to <module>, <trigger>, <job>, <feature>, <parameter>, and <property> elements in conf.xml/conf.xsd. Setting enabled="no" disables an entry at startup without removing it — the schema-valid equivalent of commenting it out.

Addresses #3062, part 1 of 2 (the @enabled attribute; SPI autodiscovery, part 2, is in #6551). Builds on #6528/#6530/#6531.

What changed

schema/conf.xsd (2.4.0 → 2.6.0) — @enabled (yes_no type, default yes) on the six element types above; tightened cron/class-name/period patterns along the way.

exist-distribution/src/main/config/conf.xml — the four live startup triggers now carry explicit enabled="yes"; two previously commented-out scheduler jobs (ConsistencyCheckTask, DataBackup) promoted to live <job enabled="no"> entries.

Configuration.javaconfigureModules()/configureStartup()/configureScheduler()/parseFeatures()/parseParameters()/parseProperties() all skip enabled="no" entries; fixes a latent case-sensitivity bug where "No" wasn't recognized.

Compatibility

Existing conf.xml files without the attribute are unaffected (default is yes).

Test plan

  • mvn validate -pl exist-distribution — canonical conf.xml validates against conf.xsd 2.6.0
  • mvn test -pl exist-core -Dtest=org.exist.config.ConfigurationTest — existing tests pass
  • Manual: enabled="no" on a <module> entry → module not loaded at startup
  • Manual: flip a scheduler job from enabled="no" to enabled="yes", restart → job runs

🤖 Generated with Claude Code

Comment thread exist-core/src/main/java/org/exist/jetty/JettyStart.java
@duncdrum

Copy link
Copy Markdown
Contributor Author

@reinhapa thanks for the suggestion. I lean towards applying the record form with both fields passed explicitly — — but wanted your take before committing to it. Does that form work for you, or would you prefer to keep the inner class as-is?

@duncdrum
duncdrum force-pushed the dp-conf-enabled-attr branch from 50b9e44 to 23585c0 Compare July 13, 2026 15:07
@line-o
line-o requested review from a team and reinhapa July 20, 2026 18:15
@line-o
line-o requested a review from a team July 20, 2026 19:54
@dizzzz
dizzzz requested a review from a team July 21, 2026 10:11
@duncdrum
duncdrum force-pushed the dp-conf-enabled-attr branch 2 times, most recently from 665e542 to 4bca008 Compare July 26, 2026 15:18
@duncdrum
duncdrum force-pushed the dp-conf-enabled-attr branch from 4bca008 to e2d482c Compare August 18, 2026 09:16
duncdrum and others added 4 commits August 19, 2026 12:06
…X parser features in conf.xml

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…yes", scheduler jobs as live enabled="no" entries, @enabled on <parameter> and <property> in conf.xsd; bump schema to 2.5.0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…2.6.0

- Add memorySizeType (pattern [0-9]+[KkMmGgTt]?|-1); apply to cacheSize,
  collectionCache, minDiskSpace, recovery/@SiZe
- pool/@min, @max: xs:integer → xs:positiveInteger
- lock-table/@trace-stack-depth: xs:int → xs:nonNegativeInteger
- indexer/create/@type: xs:anySimpleType → xs:string
- transformer/@caching: xs:string → yes_no with default="yes"
- scheduler/job/@period: xs:string → xs:positiveInteger
- vector-models/model/@Dimension: xs:integer → xs:positiveInteger
- Fix swapped docs on raise-error-on-failed-retrieval / enforce-index-use
- Fix "group-comit" typo in recovery/@group-commit doc
- Fix rpc-server in-memory-size default 4196 → 4096
- Fill in TODO docs: indexer/create attrs, flushAfter, n, xquery module
  attrs (class/uri/src), xupdate/@growth-factor

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ure triggers

ParametersExtractor.parseProperties() used case-sensitive .equals("no") while
every other enabled check in Configuration.java uses .equalsIgnoreCase(). An
enabled="NO" parameter would be silently included instead of skipped.

generate-conf-fixture.xsl stripped @enabled from kept module/index nodes but
not from surviving triggers, so BouncyCastle and URLStreamHandler emitted an
explicit enabled="yes" in generated fixtures — inconsistent with the module
treatment and noise in fixture diffs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@duncdrum
duncdrum force-pushed the dp-conf-enabled-attr branch from e2d482c to e80ba7a Compare August 19, 2026 10:07
@github-actions

Copy link
Copy Markdown
Contributor

📊 XQTS result comparison

Comparison of this run against develop.

Warning

63 test cases were recorded in only one of the two runs (34 only in the previous run, 29 only in the current run). The runner's JUnit output is not fully deterministic (see eXist-db/exist-xqts-runner#74), so totals and per-category deltas include recording noise; the newly passing/failing lists count only tests recorded in both runs.

Metric develop this run Change
🔴 Passed 28,814 (92.34%) 28,809 (92.34%) -5 (-0.00 pp)
➖ Failures 1,571 1,571 0
➖ Errors 134 134 0
➖ Skipped 685 685 0
🧪 Total tests 31,204 31,199 -5

Relative to develop: 1 newly passing, 1 newly failing, 0 new errors, 0 newly skipped — counting only tests recorded in both runs whose outcome changed.

🔴 Newly failing tests (1)
  • Constr-inscope-3 (was passing)
🟢 Newly passing tests (1)
  • Constr-inscope-2 (was failing)
⚪ Recorded only in this run (29)
  • function-call-reserved-function-names-033 (failing)
  • comp-attr-bad-name-7 (failing)
  • fn-has-children-031 (passing)
  • function-call-reserved-function-names-044 (passing)
  • K2-ABSFunc-43 (passing)
  • K-AdjDateTimeToTimezoneFunc-16 (passing)
  • K-AdjTimeToTimezoneFunc-16 (passing)
  • fn-adjust-time-to-timezone-21 (passing)
  • K-AdjTimeToTimezoneFunc-9 (passing)
  • K-AdjTimeToTimezoneFunc-6 (passing)
  • K-AdjTimeToTimezoneFunc-12 (passing)
  • cbcl-adjust-time-to-timezone-001 (passing)
  • K-AdjTimeToTimezoneFunc-3 (passing)
  • K-AdjTimeToTimezoneFunc-13 (passing)
  • K-AdjTimeToTimezoneFunc-2 (passing)
  • cbcl-adjust-time-to-timezone-002 (passing)
  • K-AdjTimeToTimezoneFunc-10 (passing)
  • K-AdjTimeToTimezoneFunc-14 (passing)
  • analyzeString-023 (passing)
  • format-date-inpt-er3 (passing)
  • function-literal-280 (passing)
  • function-literal-260 (passing)
  • fn-function-lookup-274 (passing)
  • fn-exactly-onenni1args-3 (passing)
  • fn-parse-json-940 (passing)
  • inline-fn-037 (passing)
  • serialize-xml-015b (passing)
  • cbcl-adjust-date-to-timezone-001 (passing)
  • K-AdjDateToTimezoneFunc-8 (passing)
⚪ Recorded only in `develop` (34)
  • Lookup-230 (failing)
  • modules-pub-priv-36 (failing)
  • K2-TimeAddDTD-1 (passing)
  • functx-functx-yyyyddmm-to-date-1 (passing)
  • K2-CodepointEqual-6 (passing)
  • fn-codepoint-equal-17 (passing)
  • cbcl-codepoints-to-string-014 (passing)
  • fn-innermost-012 (passing)
  • fn-current-time-16 (passing)
  • K-ContextCurrentTimeFunc-2 (passing)
  • map-put-023 (passing)
  • K-EncodeURIfunc-1 (passing)
  • math-log10-007 (passing)
  • K2-SeqExprCast-491 (passing)
  • PathExpr-22 (passing)
  • fo-test-array-sort-003 (passing)
  • fo-test-array-fold-right-001 (passing)
  • fo-test-map-remove-004 (passing)
  • fo-test-array-subarray-002 (passing)
  • fo-test-map-put-001 (passing)
  • fo-test-array-size-002 (passing)
  • fo-test-map-size-002 (passing)
  • fo-test-map-get-002 (passing)
  • fo-test-array-head-002 (passing)
  • fo-test-array-subarray-005 (passing)
  • fo-test-array-put-002 (passing)
  • fn-function-lookup-366 (passing)
  • fn-string-join-29 (passing)
  • K-SeqSUMFunc-27 (passing)
  • cbcl-sum-func-006 (passing)
  • fn-sumpint3args-2 (passing)
  • K-SeqSUMFunc-11 (passing)
  • Parenexpr-18 (passing)
  • re01000 (passing)

Runtime: 499.6s (+56.68s vs develop).

@duncdrum duncdrum added this to v7.0.0 Aug 19, 2026
@duncdrum duncdrum moved this to In review in v7.0.0 Aug 19, 2026
@duncdrum duncdrum added the enhancement new features, suggestions, etc. label Aug 19, 2026
@duncdrum duncdrum added this to the eXist-7.0.0 milestone Aug 19, 2026
@dizzzz

dizzzz commented Aug 24, 2026

Copy link
Copy Markdown
Member

@duncdrum good to go?

@duncdrum

Copy link
Copy Markdown
Contributor Author

@dizzzz yes

@dizzzz
dizzzz merged commit 64a4ee0 into eXist-db:develop Aug 25, 2026
10 checks passed
@github-project-automation github-project-automation Bot moved this from In review to Done in v7.0.0 Aug 25, 2026
@duncdrum
duncdrum deleted the dp-conf-enabled-attr branch August 25, 2026 11:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement new features, suggestions, etc.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants