jenkinsci / jenkinsci/scm-api-plugin

SCM event delivery broken after SCM id changes in version 721+

Open
#440 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
33
Forks
87
PR merge metrics
No merged PRs in 30d

Description

### Jenkins and plugins versions report

Environment


```text
Jenkins: 2.516.3
OS: Linux - 6.1.158-180.294.amzn2023.x86_64
Java: 21.0.8 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
amazon-ecr:1.161.v1a_1e8df852d6
analysis-model-api:13.8.0-902.v26f80296f743
ansicolor:1.0.6
ant:520.vd082ecfb_16a_9
antisamy-markup-formatter:173.v680e3a_b_69ff3
apache-httpcomponents-client-4-api:4.5.14-269.vfa_2321039a_83
apache-httpcomponents-client-5-api:5.5-170.v023de017ccd7
artifact-manager-s3:951.v74e888e4e3f2
artifactory:4.0.8
asm-api:9.9-185.va_6c6b_3348b_c3
audit-trail:436.vc0d1e79fc5a_3
authentication-tokens:1.144.v5ff4a_5ec5c33
aws-credentials:254.v978a_5e206a_d7
aws-global-configuration:152.ve13a_2a_c319a_9
aws-java-sdk:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-api-gateway:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-autoscaling:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-cloudformation:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-cloudfront:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-cloudwatch:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-codebuild:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-codedeploy:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-ec2:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-ecr:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-ecs:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-efs:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-elasticbeanstalk:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-elasticloadbalancingv2:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-iam:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-kinesis:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-lambda:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-logs:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-minimal:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-organizations:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-secretsmanager:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-sns:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-sqs:1.12.780-480.v4a_0819121a_9e
aws-java-sdk-ssm:1.12.780-480.v4a_0819121a_9e
aws-java-sdk2-core:2.33.4-62.vc1a_8df64b_4c9
aws-java-sdk2-ec2:2.33.4-62.vc1a_8df64b_4c9
aws-java-sdk2-ecr:2.33.4-62.vc1a_8df64b_4c9
aws-java-sdk2-s3:2.33.4-62.vc1a_8df64b_4c9
badge:2.10
basic-branch-build-strategies:275.vde2351b_4a_58b_
blueocean:1.27.19
blueocean-bitbucket-pipeline:1.27.19
blueocean-commons:1.27.21
blueocean-config:1.27.21
blueocean-core-js:1.27.21
blueocean-dashboard:1.27.21
blueocean-display-url:2.4.4
blueocean-events:1.27.21
blueocean-git-pipeline:1.27.21
blueocean-github-pipeline:1.27.21
blueocean-i18n:1.27.21
blueocean-jira:1.27.21
blueocean-jwt:1.27.21
blueocean-personalization:1.27.21
blueocean-pipeline-api-impl:1.27.21
blueocean-pipeline-editor:1.27.21
blueocean-pipeline-scm-api:1.27.21
blueocean-rest:1.27.21
blueocean-rest-impl:1.27.21
blueocean-web:1.27.21
bootstrap5-api:5.3.8-876.vb_c62a_27d9a_77
bouncycastle-api:2.30.1.81-264.v95c79c0e772c
branch-api:2.1268.v044a_87612da_8
build-failure-analyzer:2.5.5
build-token-root:151.va_e52fe3215fc
build-user-vars-plugin:195.v8c35f9d5c3dc
build-with-parameters:76.v9382db_f78962
caffeine-api:3.2.3-194.v31a_b_f7a_b_5a_81
checks-api:373.vfe7645102093
cloudbees-bitbucket-branch-source:937.2.4-SNAPSHOT (private-f447eed3-mykolashestopal)
cloudbees-folder:6.1053.vd62fb_b_f7367b_
clover:4.14.2.628.ve412b_714e733
cloverphp:0.6
command-launcher:123.v37cfdc92ef67
commons-collections4-api:4.5.0-8.va_d5448ef9011
commons-compress-api:1.28.0-2
commons-lang3-api:3.19.0-104.v12125f33a_255
commons-text-api:1.14.0-194.v804a_dc3a_1b_d8
config-file-provider:994.v3d4a_5fa_f353a_
configuration-as-code:2006.v001a_2ca_6b_574
content-replace:1.8.2
copyartifact:770.va_6c69e063442
coverage:2.2941.v08df75b_767f1
credentials:1453.v9b_a_29777a_b_fd
credentials-binding:702.vfe613e537e88
custom-tools-plugin:0.8
customizable-header:222.v59c31852cf3a_
dark-theme:574.va_19f05d54df5
data-tables-api:2.3.4-1400.vb_1e3e3c4dfc8
deploy-dashboard:0.1.0
display-url-api:2.217.va_6b_de84cc74b_
docker-commons:457.v0f62a_94f11a_3
docker-workflow:621.va_73f881d9232
durable-task:605.v9a_b_9040c9970
ec2:2034.v0a_11fb_792b_ee
echarts-api:6.0.0-1146.v5c8f3b_8f0573
eddsa-api:0.3.0.1-19.vc432d923e5ee
emoji-symbols-api:17.0-57.v8d44b_9a_b_d5ea_
envinject:2.926.v69c9b_3896a_96
envinject-api:1.235.va_14c74f8f487
extended-choice-parameter:388.ve7b_d0b_920e10
extended-read-permission:61.vf24570ff3b_e9
extensible-choice-parameter:239.v5f5c278708cf
external-monitor-job:223.vb_fddcf42c9b_3
favorite:2.253.v9b_413168133b_
file-operations:353.vf3b_9b_a_f1f7f7
flatpickr-api:4.6.13-18.vcf5f6a_5b_8468
flock:1.0.1
folder-properties:62.v1636b_4a_84608
font-awesome-api:7.0.1-859.v128d3a_efb_6e5
forensics-api:3.1754.v2a_6613b_77002
generic-webhook-trigger:2.4.1
git:5.8.1
git-client:6.4.0
git-parameter:444.vca_b_84d3703c2
git-server:137.ve0060b_432302
github:1.45.0
github-api:1.330-492.v3941a_032db_2a_
github-branch-source:1864.v411feec5e78e
gradle:2.16.1149.v711b_998b_0532
groovy:497.v7b_061a_a_de65d
gson-api:2.13.2-173.va_a_092315913c
handy-uri-templates-2-api:2.1.8-36.v85e4cb_234a_13
hashicorp-vault-plugin:371.v884a_4dd60fb_6
htmlpublisher:427
http_request:1.20
ignore-committer-strategy:37.v0d3157c4a_ef8
instance-identity:203.v15e81a_1b_7a_38
ionicons-api:94.vcc3065403257
jackson2-api:2.20.1-423.v13951f6b_6532
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-133.vb_ec76a_73f706
jdk-tool:83.v417146707a_3d
jenkins-design-language:1.27.21
jersey2-api:2.47-165.ve7809a_3e87e0
jira:3.19
jjwt-api:0.11.5-120.v0268cf544b_89
job-dsl:1.93
job-restrictions:216.v0732cc7fb_076
jobConfigHistory:1356.ve360da_6c523a_
joda-time-api:2.14.0-149.v1c3ce991d1b_9
jquery:1.12.4-3
jquery3-api:3.7.1-594.vb_3864f326cf0
jsch:0.2.16-95.v3eecb_55fa_b_78
json-api:20251224-185.v0cc18490c62c
json-path-api:2.9.0-190.veefca_05d5477
jsoup:1.21.2-66.v6ea_38164b_8a_2
junit:1355.v45e2ea_65863c
kubernetes:4371.vb_33b_086d54a_1
kubernetes-client-api:7.3.1-256.v788a_0b_787114
kubernetes-credentials:207.v492f58828b_ed
ldap:780.vcb_33c9a_e4332
list-git-branches-parameter:0.0.13
lockable-resources:1412.v3f305a_fb_a_117
log-parser:2.5.0
mailer:522.va_995fa_cfb_8b_d
mapdb-api:1.0.9-44.va_1e1310c9118
mask-passwords:204.v24d863065180
matrix-auth:3.2.8
matrix-project:870.v9db_fcfc2f45b_
maven-plugin:3.27
mercurial:1323.ve69d2a_db_8a_b_d
metrics:4.2.33-484.v2fcd689980d1
mina-sshd-api-common:2.16.0-167.va_269f38cc024
mina-sshd-api-core:2.16.0-167.va_269f38cc024
mina-sshd-api-scp:2.16.0-167.va_269f38cc024
monitoring:2.5.0
mstest:1.0.5
next-build-number:66.v4b_4762172d53
node-iterator-api:72.vc90e81737df1
nunit:593.v76f7a_5f959c1
okhttp-api:4.11.0-189.v976fa_d3379d6
oss-symbols-api:424.ved751e062911
pam-auth:1.12
parameterized-scheduler:285.ve611986d4c48
performance:995.v8e27b_a_c368c1
pipeline-aws:1.45
pipeline-build-step:571.v08a_fffd4b_0ce
pipeline-graph-analysis:245.v88f03631a_b_21
pipeline-groovy-lib:752.vdddedf804e72
pipeline-input-step:534.v352f0a_e98918
pipeline-milestone-step:138.v78ca_76831a_43
pipeline-model-api:2.2273.v643f36ed9e94
pipeline-model-definition:2.2273.v643f36ed9e94
pipeline-model-extensions:2.2273.v643f36ed9e94
pipeline-rest-api:2.38
pipeline-stage-step:322.vecffa_99f371c
pipeline-stage-tags-metadata:2.2273.v643f36ed9e94
pipeline-stage-view:2.38
pipeline-utility-steps:2.19.0
plain-credentials:199.v9f8e1f741799
plugin-usage-plugin:4.10
plugin-util-api:6.1167.v022176c7e0ca_
powershell:2.3
prism-api:1.30.0-609.vf0a_df102d9a_f
pubsub-light:1.19
rebuild:338.va_0a_b_50e29397
saml:4.583.vc68232f7018a_
scm-api:724.v7d839074eb_5c
script-security:1385.v7d2d9ec4d909
simple-theme-plugin:211.v5424a_5510e47
snakeyaml-api:2.3-125.v4d77857a_b_402
sse-gateway:1.28
ssh-agent:386.v36cc0c7582f0
ssh-credentials:361.vb_f6760818e8c
ssh-slaves:3.1071.v0d059c7b_c555
ssh-steps:2.0.79.v1d1b_5f76dda_8
sshd:3.374.v19b_d59ce6610
stashNotifier:1.528.v9637674a_673f
structs:362.va_b_695ef4fdf9
templating-engine:2.5.5
theme-manager:319.v9193461f9671
throttle-concurrents:2.18
timestamper:1.30
token-macro:477.vd4f0dc3cb_cf1
trilead-api:2.209.v0e69b_c43c245
validating-string-parameter:255.v31e2e6d0d273
variant:70.va_d9f17f859e0
vsphere-cloud:2.27
warnings-ng:12.9783.ve1cb_9f060738
workflow-aggregator:608.v67378e9d3db_1
workflow-api:1384.vdc05a_48f535f
workflow-basic-steps:1079.vce64b_a_929c5a_
workflow-cps:4183.v94b_6fd39da_c1
workflow-durable-task-step:1464.v2d3f5c68f84c
workflow-job:1546.v62a_c59c112dd
workflow-multibranch:821.vc3b_4ea_780798
workflow-scm-step:466.va_d69e602552b_
workflow-step-api:710.v3e456cc85233
workflow-support:989.va_20a_1a_57710a_
```

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

Ubuntu

### Reproduction steps

1. Created multibranch pipeline in Jenkins for Bitbucket repository
2. PR created or commit made to PR in repository

### Expected Results

Build for PR triggered

### Actual Results

Build didn't triggered for PR

### Anything else?

We've updated Bitbucket branch source plugin from version 936.1.1 to version 937.2.3 and after that webhooks stopped triggering builds in MultiBranch/Org Folder projects.  Bitbucket branch source plugin also caused update other plugins on which it's depends (scm-api, branch-api, git etc.).

After investigation we've identified that after upgrading scm-api from 707.v749f968369d4 to 724.v7d839074eb_5c, SCM events are no longer being delivered to multibranch projects, breaking webhook functionality.

**Root Cause**:
PR #357 changed SCMSource.getId() behavior from generating random UUIDs to returning empty strings (later fixed by branch-api to use sequential IDs). However, the SCM event delivery system appears to have compatibility issues with the new ID format.

**Evidence**:
- SCMHeadEvent.fireLater() is called successfully with 5-second delay
- PluginPushEvent.heads() correctly matches SCM sources and returns SCM heads
- Events are not reaching MultiBranchProject instances to trigger builds
- Direct calls to SCMSourceOwner.onSCMSourceUpdated() work correctly

**Expected**: SCM events should be delivered to multibranch projects regardless of SCM source ID format
**Actual**: SCM events are fired but never reach multibranch projects

**Workaround**: Direct calls to SCMSourceOwner.onSCMSourceUpdated() bypass the broken event system

### Are you interested in contributing a fix?

Possibly, if you'll guide me, since I'm new in contributing to Jenkins.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.