jenkinsci / jenkinsci/branch-api-plugin

[JENKINS-70064] Possible memory leak in WorkspaceLocatorImpl#indexCache

Open
#771 0 comments 0 reactions 0 assignees View on GitHub
component:branch-api-plugin imported-jira-issue priority:minor resolution:unresolved
Dominant language
Java
Stars
39
Forks
154
PR merge metrics
No merged PRs in 30d

Description

Within 2 months we had 2 OutOfMemory-Exceptions (Jenkins-Master is running with 512MB).

According to the Eclipse Memory Analyzer the problem might be WorkspaceLocatorImpl#indexCache:





Each entry in the Map needs roughly ~1MB and there are currently 208 Entries.

The machine was running for ~4 weeks now, has 2 Agents connected via Websockets and likely processed a few thousand builds on a few hundred branches. However most of these builds and branches are now merged and have therefore been deleted.

I'm not entirely sure what the Map contains exactly, but according to https://github.com/jenkinsci/branch-api-plugin/pull/188 it's used to cache file transferation over channels.

---
Originally reported by ab_xdev, imported from: Possible memory leak in WorkspaceLocatorImpl#indexCache


  • status: Open
  • priority: Minor
  • component(s): branch-api-plugin
  • resolution: Unresolved
  • votes: 0
  • watchers: 2
  • imported: 20251211-141027

Raw content of original issue

Within 2 months we had 2 OutOfMemory-Exceptions (Jenkins-Master is running with 512MB).

According to the Eclipse Memory Analyzer the problem might be WorkspaceLocatorImpl#indexCache:


Each entry in the Map needs roughly ~1MB and there are currently 208 Entries.

The machine was running for ~4 weeks now, has 2 Agents connected via Websockets and likely processed a few thousand builds on a few hundred branches. However most of these builds and branches are now merged and have therefore been deleted.

I'm not entirely sure what the Map contains exactly, but according to https://github.com/jenkinsci/branch-api-plugin/pull/188 it's used to cache file transferation over channels.

environment

```
Jenkins: 2.361.2

OS: Linux - 5.15.0-1022-aws

---

ace-editor:1.1

antisamy-markup-formatter:2.7

apache-httpcomponents-client-4-api:4.5.13-138.v4e7d9a_7b_a_e61

authentication-tokens:1.4

authorize-project:1.4.0

blueocean:1.25.8

blueocean-autofavorite:1.2.5

blueocean-bitbucket-pipeline:1.25.8

blueocean-commons:1.25.8

blueocean-config:1.25.8

blueocean-core-js:1.25.8

blueocean-dashboard:1.25.8

blueocean-display-url:2.4.1

blueocean-events:1.25.8

blueocean-git-pipeline:1.25.8

blueocean-github-pipeline:1.25.8

blueocean-i18n:1.25.8

blueocean-jwt:1.25.8

blueocean-personalization:1.25.8

blueocean-pipeline-api-impl:1.25.8

blueocean-pipeline-editor:1.25.8

blueocean-pipeline-scm-api:1.25.8

blueocean-rest:1.25.8

blueocean-rest-impl:1.25.8

blueocean-web:1.25.8

bootstrap5-api:5.2.1-3

bouncycastle-api:2.26

branch-api:2.1046.v0ca_37783ecc5

build-timeout:1.24

caffeine-api:2.9.3-65.v6a_47d0f4d1fe

checks-api:1.7.5

cloudbees-bitbucket-branch-source:791.vb_eea_a_476405b

cloudbees-folder:6.758.vfd75d09eea_a_1

command-launcher:84.v4a_97f2027398

commons-lang3-api:3.12.0-36.vd97de6465d5b_

commons-text-api:1.10.0-27.vb_fa_3896786a_7

copyartifact:1.47

credentials:1189.vf61b_a_5e2f62e

credentials-binding:523.vd859a_4b_122e6

dark-theme:255.v364936264de8

display-url-api:2.3.6

docker-commons:1.21

docker-workflow:521.v1a_a_dd2073b_2e

durable-task:501.ve5d4fc08b0be

echarts-api:5.4.0-1

email-ext:2.92

favorite:2.4.1

font-awesome-api:6.2.0-3

git:4.12.1

git-client:3.12.1

github:1.35.0

github-api:1.303-400.v35c2d8258028

github-branch-source:1695.v88de84e9f6b_9

github-checks:1.0.19

handlebars:3.0.8

handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953

htmlpublisher:1.31

instance-identity:116.vf8f487400980

ionicons-api:31.v4757b_6987003

jackson2-api:2.13.4.20221013-295.v8e29ea_354141

jakarta-activation-api:2.0.1-2

jakarta-mail-api:2.0.1-2

javax-activation-api:1.2.0-5

javax-mail-api:1.6.2-8

jaxb:2.3.7-1

jdk-tool:55.v1b_32b_6ca_f9ca

jenkins-design-language:1.25.8

jjwt-api:0.11.5-77.v646c772fddb_0

jquery3-api:3.6.1-2

jsch:0.1.55.61.va_e9ee26616e7

junit:1153.v1c24f1a_d2553

locale:180.v207501dff9b_a_

mailer:438.v02c7f0a_12fa_4

matrix-auth:3.1.5

matrix-project:785.v06b_7f47b_c631

mina-sshd-api-common:2.9.1-44.v476733c11f82

mina-sshd-api-core:2.9.1-44.v476733c11f82

momentjs:1.1.1

okhttp-api:4.9.3-108.v0feda04578cf

pam-auth:1.10

pipeline-build-step:2.18

pipeline-github-lib:38.v445716ea_edda_

pipeline-graph-analysis:195.v5812d95a_a_2f9

pipeline-groovy-lib:613.v9c41a_160233f

pipeline-input-step:456.vd8a_957db_5b_e9

pipeline-milestone-step:101.vd572fef9d926

pipeline-model-api:2.2118.v31fd5b_9944b_5

pipeline-model-definition:2.2118.v31fd5b_9944b_5

pipeline-model-extensions:2.2118.v31fd5b_9944b_5

pipeline-rest-api:2.27

pipeline-stage-step:296.v5f6908f017a_5

pipeline-stage-tags-metadata:2.2118.v31fd5b_9944b_5

pipeline-stage-view:2.27

pipeline-utility-steps:2.13.0

plain-credentials:139.ved2b_9cf7587b

plugin-util-api:2.18.0

popper2-api:2.11.6-2

pubsub-light:1.17

resource-disposer:0.20

scm-api:621.vda_a_b_055e58f7

scm-filter-branch-pr:0.5.1

script-security:1189.vb_a_b_7c8fd5fde

snakeyaml-api:1.32-86.ve3f030a_75631

sse-gateway:1.26

ssh-credentials:305.v8f4381501156

sshd:3.249.v2dc2ea_416e33

structs:324.va_f5d6774f3a_d

theme-manager:1.5

timestamper:1.20

token-macro:308.v4f2b_ed62b_b_16

trilead-api:2.72.v2a_3236754f73

variant:59.vf075fe829ccb

workflow-aggregator:590.v6a_d052e5a_a_b_5

workflow-api:1200.v8005c684b_a_c6

workflow-basic-steps:994.vd57e3ca_46d24

workflow-cps:2803.v1a_f77ffcc773

workflow-durable-task-step:1206.v8a_d5f86e336b

workflow-job:1249.v7d974144cc14

workflow-multibranch:716.vc692a_e52371b_

workflow-scm-step:400.v6b_89a_1317c9a_

workflow-step-api:639.v6eca_cd8c04a_a_

workflow-support:839.v35e2736cfd5c

ws-cleanup:0.43
```

3 attachments

- [image-2022-11-11-09-12-33-571.png](https://issues.jenkins.io/secure/attachment/59490/image-2022-11-11-09-12-33-571.png)
> ![image-2022-11-11-09-12-33-571.png](https://issues.jenkins.io/secure/attachment/59490/image-2022-11-11-09-12-33-571.png)
- [image-2022-11-11-09-18-19-806.png](https://issues.jenkins.io/secure/attachment/59489/image-2022-11-11-09-18-19-806.png)
> ![image-2022-11-11-09-18-19-806.png](https://issues.jenkins.io/secure/attachment/59489/image-2022-11-11-09-18-19-806.png)
- [image-2022-11-11-09-18-32-464.png](https://issues.jenkins.io/secure/attachment/59488/image-2022-11-11-09-18-32-464.png)
> ![image-2022-11-11-09-18-32-464.png](https://issues.jenkins.io/secure/attachment/59488/image-2022-11-11-09-18-32-464.png)

Contributor guide

Open the contributing guide

Research direction

Locate WorkspaceLocatorImpl#indexCache in the branch-api-plugin and read the referenced PR #188 to understand the cache's file-transfer role. Reproduce or inspect the reported heap-growth pattern using the attached analysis, then determine whether entries for deleted branches or builds are retained; done means the leak is confirmed and addressed or ruled out with evidence.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.