Skip to content

matrix-project: create-job does not activate touchstone when XML contains <touchStoneCombinationFilter> #764

Description

@viavi-ab

Jenkins and plugins versions report

Environment
Jenkins: 2.541.3
OS: Linux - 6.8.0-117-generic
Java: 21.0.10 - Ubuntu (OpenJDK 64-Bit Server VM)
---
PrioritySorter:936.v2c01c6b_84449
ant:520.vd082ecfb_16a_9
antisamy-markup-formatter:173.v680e3a_b_69ff3
any-buildstep:14.ve115ec1484f0
apache-httpcomponents-client-4-api:4.5.14-269.vfa_2321039a_83
asm-api:9.10-211.v7d13903b_a_d89
badge:3.591.v9074c6c6f0b_9
bootstrap5-api:5.3.8-895.v4d0d8e47fea_d
bouncycastle-api:2.30.1.84-291.v9f17b_21896e2
branch-api:2.1280.v0d4e5b_b_460ef
build-monitor-plugin:1034.vd5c4f4d17b_ff
build-timeout:1.40
build-timestamp:1.1.1
build-token-root:151.va_e52fe3215fc
build-user-vars-plugin:214.va_eed2ed849ca_
built-on-column:1.5
caffeine-api:3.2.3-194.v31a_b_f7a_b_5a_81
checks-api:402.vca_263b_f200e3
claim:617.v149399f86b_de
cloudbees-folder:6.1100.ve9eed61d16c4
command-launcher:134.v025a_5fcf9dea_
commons-lang3-api:3.20.0-109.ve43756e2d2b_4
commons-text-api:1.15.0-218.va_61573470393
conditional-buildstep:1.5.0
config-file-provider:1006.vc7366c201f57
credentials:1502.v5c95e620ddfe
credentials-binding:720.v3f6decef43ea_
dashboard-view:2.558.v96b_901978e47
disable-job-button:1.3.vf55949267366
display-url-api:2.217.va_6b_de84cc74b_
doclinks:0.7
durable-task:671.v340ff7959010
echarts-api:6.0.0-1247.vf3e35a_c1813f
eddsa-api:0.3.0.1-29.v67e9a_1c969b_b_
embeddable-build-status:637.vd878e68178f8
emoji-symbols-api:17.0-57.v8d44b_9a_b_d5ea_
envinject:2.941.v351a_20c0a_3ca_
envinject-api:1.241.vdd714803b_403
environment-script:100.v3a_f1a_6a_b_7549
extended-choice-parameter:388.ve7b_d0b_920e10
extensible-choice-parameter:255.vfa_41f46828ef
external-monitor-job:223.vb_fddcf42c9b_3
extra-columns:1.28
fail-the-build-plugin:5.v153b_2c826ef0
flexible-publish:0.16.1
font-awesome-api:7.2.0-965.ve3840b_696418
git:5.10.1
git-client:6.6.0
gradle:2.19.1244.v1f9866817fec
groovy-postbuild:303.v5fe3da_6233f0
gson-api:2.14.0-201.v8eefe5515533
hidden-parameter:546.vdeec4ce8b_26f
htmlpublisher:427.1
instance-identity:203.v15e81a_1b_7a_38
ionicons-api:94.vcc3065403257
jackson-annotations2-api:2.21-7.v4777a_f3a_a_d47
jackson2-api:2.21.2-436.v29efdb_7418ff
jackson3-api:3.1.3-76.vd9b_7cd2e80b_8
jakarta-activation-api:2.1.4-1
jakarta-mail-api:2.1.5-1
jakarta-xml-bind-api:4.0.6-12.vb_1833c1231d3
javadoc:354.vee1a_660b_4990
javax-activation-api:1.2.0-8
javax-mail-api:1.6.2-11
jaxb:2.3.9-143.v5979df3304e6
jdk-tool:83.v417146707a_3d
jenkins-multijob-plugin:662.vd2e0001f6b_b_d
jquery:1.12.4-3
jquery3-api:3.7.1-619.vdb_10e002501a_
jsch:0.2.16-95.v3eecb_55fa_b_78
json-api:20251224-185.v0cc18490c62c
json-path-api:3.0.0-218.vcd4dd1355de2
jsoup:1.22.2-95.vc5d00f1eb_42d
junit:1403.vd9d1413fd205
ldap:807.v7d7de30930cf
leastload:71.vb_585f7a_dc4f5
mailer:534.v1b_36f5864073
mapdb-api:1.0.9-44.va_1e1310c9118
matrix-auth:3.2.10
matrix-project:870.v9db_fcfc2f45b_
maven-plugin:3.27
mina-sshd-api-common:2.17.1-187.v0341274c2905
mina-sshd-api-core:2.17.1-187.v0341274c2905
next-build-number:66.v4b_4762172d53-VIAVI-1
nodelabelparameter:851.vd94e5048d321
okhttp-api:5.3.2-200.vedb_720a_cf1f8
oss-symbols-api:456.v46e634a_63b_99
pam-auth:1.12
parameter-separator:334.v1fc0e534c71d
parameterized-trigger:893.va_383a_9b_a_4c11
pipeline-groovy-lib:797.v90ea_a_9b_e45a_0
plain-credentials:199.v9f8e1f741799
plugin-util-api:6.1192.v30fe6e2837ff
preSCMbuildstep:115.vf9808414429d
prism-api:1.30.0-717.vb_f8360844b_53
rebuild:338.va_0a_b_50e29397
robot:6.2.0
role-strategy:848.va_a_ea_673cf0b_c
run-condition:276.v97298f3a_cd51
scm-api:728.vc30dcf7a_0df5
script-security:1402.v94c9ce464861
show-build-parameters:1.0
sidebar-link:2.5.0
simple-theme-plugin:230.v8b_fd91b_b_800c
snakeyaml-api:2.5-149.v72471e9c6371
snakeyaml-engine-api:3.0.1-5.vd98ea_ff3b_92e
ssh-credentials:372.va_250881b_08cd
ssh-slaves:3.1097.v868116049892
sshd:3.384.vc89b_5e138cf9
structs:362.va_b_695ef4fdf9
subversion:1303.vcfd9679fb_c12
timestamper:1.30
token-macro:477.vd4f0dc3cb_cf1
trilead-api:2.284.v1974ea_324382
variant:70.va_d9f17f859e0
view-job-filters:406.va_0ec67147ee2
woodstox-core-api:7.1.1-1.v4d297985f397
workflow-api:1413.v2ff1a_5e720fa_
workflow-basic-steps:1098.v808b_fd7f8cf4
workflow-cps:4331.v9d06ed4658ff
workflow-durable-task-step:1479.v56e587f413a_7
workflow-job:1571.1580.v18e46842c125
workflow-scm-step:466.va_d69e602552b_
workflow-step-api:724.v538c2362b_dfb_
workflow-support:1015.v785e5a_b_b_8b_22

What Operating System are you using (both controller, and any agents involved in the problem)?

Ubuntu 24.04 server LTS

Reproduction steps

  1. Create a new Matrix Project job in Jenkins, tick "Execute touchstone builds first", enter any filter expression, and save.
  2. Export the job's XML: ssh -p <port> <jenkins-host> get-job original_job > original_job.xml
    Observe that the XML contains <touchStoneCombinationFilter> with your filter
  3. Create a new job from that XML:
    ssh -p <port> <jenkins-host> create-job buggy_job < original_job.xml
  4. Open http://<jenkins-host>/job/buggy_job/configure — observe that "Execute touchstone builds first" is unchecked and the filter field is empty, even though the new job's on-disk XML is identical to the source.
  5. Reload the job: ssh -p <port> <jenkins-host> reload-job buggy_job
    Open the configure page again — "Execute touchstone builds first" is now correctly checked and the filter is populated.

Expected Results

The newly-created job should be identical to the original, including the touchstone checkbox and status

Actual Results

The newly-created job doesn't loses the touchstone checkbox and status ; more precisely:

  • Between steps 3 and 5, the job's in-memory representation is incorrect and it will not run the touchstone build as
    expected.
  • If the user saves the job at step 4 before issuing reload-job, the filter expression is permanently lost from the
    XML.

Anything else?

  • This is a regression. The expected behaviour is that create-job and reload-job produce an identical in-memory state
    from the same XML. Previously they did; the reload-job workaround should not be necessary. I can dig up an older
    Jenkins version (circa 2025) where this worked correctly if needed for bisecting.
  • My use case is create-job via the ssh cli. The same bug is probably triggered via the REST API.
  • My AI agent keeps mentioning an XML element <hasTouchStoneCombinationFilter> but I can see no traces of that in any of my matrix jobs

Are you interested in contributing a fix?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions