Skip to content

[Bug][Jenkins connector] Unable to delete data scope for scope with slash into branch name #9129

Description

@jvgr019

Search before asking

  • I had searched in the issues and found no similar issues.

What happened

When trying to delete a Jenkins data scope that originates from a branch containing a / character in its name, the deletion fails because the data scope is stored with the branch name URL-encoded.

For example, a branch named: feature/LOY-12394-accesspermission-front-users is registered as loyalty-core/feature%2FLOY-12394-accesspermission-front-users
When attempting to remove the data scope, the connector does not correctly handle the encoded branch name, preventing the data scope from being deleted and showing "operation failed" into UI

What do you expect to happen

The Jenkins data scope should be removable regardless of whether the original branch name contains special characters such as /

How to reproduce

  • Configure multibranch pipeline into jenkins
    Example: loyalty-core
  • The job should discover several branches almost one of them should contain symbol /
    Example:
    -- master
    -- develop
    -- feature/LOY-12394-accesspermission-front-users
  • Configure the Jenkins connector at devlake
  • Add data scope selecting job loyalty-core
  • Assign scope to project and collect data
  • Go to jenkins connection / details. Data scopes should be listed for every branch into job
  • Try to delete data scope for loyalty-core/feature%2FLOY-12394-accesspermission-front-users

Anything else

This is the error into log

devlake-1    | time="2026-09-10 14:24:10" level=error msg="HTTP 404 error\n\tcaused by: attached stack trace\n\t  -- stack trace:\n\t  | github.com/apache/devlake/helpers/srvhelper.(*ModelSrvHelper[...]).FindByPk\n\t  | \t/app/helpers/srvhelper/model_service_helper.go:148\n\t  | [...repeated from below...]\n\tWraps: (2) *models.JenkinsJob not found (404)\n\tWraps: (3) attached stack trace\n\t  -- stack trace:\n\t  | github.com/apache/devlake/impls/dalgorm.(*Dalgorm).convertGormError\n\t  | \t/app/impls/dalgorm/dalgorm.go:542\n\t  | github.com/apache/devlake/impls/dalgorm.(*Dalgorm).First\n\t  | \t/app/impls/dalgorm/dalgorm.go:215\n\t  | github.com/apache/devlake/helpers/srvhelper.(*ModelSrvHelper[...]).FindByPk\n\t  | \t/app/helpers/srvhelper/model_service_helper.go:145\n\t  | github.com/apache/devlake/helpers/pluginhelper/api.(*ModelApiHelper[...]).FindByPk\n\t  | \t/app/helpers/pluginhelper/api/model_api_helper.go:100\n\t  | github.com/apache/devlake/helpers/pluginhelper/api.(*DsScopeApiHelper[...]).Delete\n\t  | \t/app/helpers/pluginhelper/api/ds_scope_api_helper.go:135\n\t  | github.com/apache/devlake/plugins/jenkins/api.DeleteScope\n\t  | \t/app/plugins/jenkins/api/scope_api.go:119\n\t  | github.com/apache/devlake/server/api.registerPluginEndpoints.handlePluginCall.func1\n\t  | \t/app/server/api/router.go:149\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.CSRFProtect.(*Service).CSRFProtect.func3\n\t  | \t/app/server/api/auth/middleware.go:140\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.RequireAuth.(*Service).RequireAuth.func2\n\t  | \t/app/server/api/auth/middleware.go:104\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.OAuth2ProxyAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:115\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.OIDCAuthentication.(*Service).OIDCAuthentication.func1\n\t  | \t/app/server/api/auth/middleware.go:61\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.RequirePushAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:158\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.RestAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:136\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/recovery.go:102\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.LoggerWithConfig.func1\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/logger.go:240\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:620\n\t  | github.com/gin-gonic/gin.(*Engine).ServeHTTP\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:576\n\t  | net/http.serverHandler.ServeHTTP\n\t  | \t/usr/local/go/src/net/http/server.go:3311\n\t  | net/http.(*conn).serve\n\t  | \t/usr/local/go/src/net/http/server.go:2067\n\t  | runtime.goexit\n\t  | \t/usr/local/go/src/runtime/asm_amd64.s:1771\n\tWraps: (4) record not found (404)\n\tWraps: (5) record not found\n\tError types: (1) *withstack.withStack (2) *errutil.withPrefix (3) *withstack.withStack (4) *errutil.withPrefix (5) *errors.errorString"
config-ui-1  | 10.89.1.1 - - [10/Sep/2026:14:24:10 +0000] "DELETE /api/plugins/jenkins/connections/1/scopes/loyalty-core/feature%2FLOY-12394-accesspermission-front-users?delete_data_only=false HTTP/1.1" 404 4019 "http://localhost:4000/connections/jenkins/1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36" "-"
devlake-1    | time="2026-09-10 14:24:10" level=error msg="HTTP 404 error\n\tcaused by: attached stack trace\n\t  -- stack trace:\n\t  | github.com/apache/devlake/helpers/srvhelper.(*ModelSrvHelper[...]).FindByPk\n\t  | \t/app/helpers/srvhelper/model_service_helper.go:148\n\t  | [...repeated from below...]\n\tWraps: (2) *models.JenkinsJob not found (404)\n\tWraps: (3) attached stack trace\n\t  -- stack trace:\n\t  | github.com/apache/devlake/impls/dalgorm.(*Dalgorm).convertGormError\n\t  | \t/app/impls/dalgorm/dalgorm.go:542\n\t  | github.com/apache/devlake/impls/dalgorm.(*Dalgorm).First\n\t  | \t/app/impls/dalgorm/dalgorm.go:215\n\t  | github.com/apache/devlake/helpers/srvhelper.(*ModelSrvHelper[...]).FindByPk\n\t  | \t/app/helpers/srvhelper/model_service_helper.go:145\n\t  | github.com/apache/devlake/helpers/pluginhelper/api.(*ModelApiHelper[...]).FindByPk\n\t  | \t/app/helpers/pluginhelper/api/model_api_helper.go:100\n\t  | github.com/apache/devlake/helpers/pluginhelper/api.(*DsScopeApiHelper[...]).Delete\n\t  | \t/app/helpers/pluginhelper/api/ds_scope_api_helper.go:135\n\t  | github.com/apache/devlake/plugins/jenkins/api.DeleteScope\n\t  | \t/app/plugins/jenkins/api/scope_api.go:119\n\t  | github.com/apache/devlake/server/api.registerPluginEndpoints.handlePluginCall.func1\n\t  | \t/app/server/api/router.go:149\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.CSRFProtect.(*Service).CSRFProtect.func3\n\t  | \t/app/server/api/auth/middleware.go:140\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.RequireAuth.(*Service).RequireAuth.func2\n\t  | \t/app/server/api/auth/middleware.go:104\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.OAuth2ProxyAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:115\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.OIDCAuthentication.(*Service).OIDCAuthentication.func1\n\t  | \t/app/server/api/auth/middleware.go:61\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.RequirePushAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:158\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.RestAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:136\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/recovery.go:102\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.LoggerWithConfig.func1\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/logger.go:240\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:620\n\t  | github.com/gin-gonic/gin.(*Engine).ServeHTTP\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:576\n\t  | net/http.serverHandler.ServeHTTP\n\t  | \t/usr/local/go/src/net/http/server.go:3311\n\t  | net/http.(*conn).serve\n\t  | \t/usr/local/go/src/net/http/server.go:2067\n\t  | runtime.goexit\n\t  | \t/usr/local/go/src/runtime/asm_amd64.s:1771\n\tWraps: (4) record not found (404)\n\tWraps: (5) record not found\n\tError types: (1) *withstack.withStack (2) *errutil.withPrefix (3) *withstack.withStack (4) *errutil.withPrefix (5) *errors.errorString"
devlake-1    | time="2026-09-10 14:24:10" level=error msg="HTTP 404 error\n\tcaused by: attached stack trace\n\t  -- stack trace:\n\t  | github.com/apache/devlake/helpers/srvhelper.(*ModelSrvHelper[...]).FindByPk\n\t  | \t/app/helpers/srvhelper/model_service_helper.go:148\n\t  | [...repeated from below...]\n\tWraps: (2) *models.JenkinsJob not found (404)\n\tWraps: (3) attached stack trace\n\t  -- stack trace:\n\t  | github.com/apache/devlake/impls/dalgorm.(*Dalgorm).convertGormError\n\t  | \t/app/impls/dalgorm/dalgorm.go:542\n\t  | github.com/apache/devlake/impls/dalgorm.(*Dalgorm).First\n\t  | \t/app/impls/dalgorm/dalgorm.go:215\n\t  | github.com/apache/devlake/helpers/srvhelper.(*ModelSrvHelper[...]).FindByPk\n\t  | \t/app/helpers/srvhelper/model_service_helper.go:145\n\t  | github.com/apache/devlake/helpers/pluginhelper/api.(*ModelApiHelper[...]).FindByPk\n\t  | \t/app/helpers/pluginhelper/api/model_api_helper.go:100\n\t  | github.com/apache/devlake/helpers/pluginhelper/api.(*DsScopeApiHelper[...]).Delete\n\t  | \t/app/helpers/pluginhelper/api/ds_scope_api_helper.go:135\n\t  | github.com/apache/devlake/plugins/jenkins/api.DeleteScope\n\t  | \t/app/plugins/jenkins/api/scope_api.go:119\n\t  | github.com/apache/devlake/server/api.registerPluginEndpoints.handlePluginCall.func1\n\t  | \t/app/server/api/router.go:149\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.CSRFProtect.(*Service).CSRFProtect.func3\n\t  | \t/app/server/api/auth/middleware.go:140\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.RequireAuth.(*Service).RequireAuth.func2\n\t  | \t/app/server/api/auth/middleware.go:104\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.OAuth2ProxyAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:115\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.OIDCAuthentication.(*Service).OIDCAuthentication.func1\n\t  | \t/app/server/api/auth/middleware.go:61\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.RequirePushAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:158\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.RestAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:136\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/recovery.go:102\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.LoggerWithConfig.func1\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/logger.go:240\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:620\n\t  | github.com/gin-gonic/gin.(*Engine).ServeHTTP\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:576\n\t  | net/http.serverHandler.ServeHTTP\n\t  | \t/usr/local/go/src/net/http/server.go:3311\n\t  | net/http.(*conn).serve\n\t  | \t/usr/local/go/src/net/http/server.go:2067\n\t  | runtime.goexit\n\t  | \t/usr/local/go/src/runtime/asm_amd64.s:1771\n\tWraps: (4) record not found (404)\n\tWraps: (5) record not found\n\tError types: (1) *withstack.withStack (2) *errutil.withPrefix (3) *withstack.withStack (4) *errutil.withPrefix (5) *errors.errorString"
devlake-1    | [GIN] 2026/09/10 - 14:24:10 | 404 |    7.769236ms |      10.89.1.39 | DELETE   "/plugins/jenkins/connections/1/scopes/loyalty-core/feature/LOY-12394-accesspermission-front-users?delete_data_only=false"
devlake-1    | time="2026-09-10 14:24:10" level=error msg="HTTP 404 error\n\tcaused by: attached stack trace\n\t  -- stack trace:\n\t  | github.com/apache/devlake/helpers/srvhelper.(*ModelSrvHelper[...]).FindByPk\n\t  | \t/app/helpers/srvhelper/model_service_helper.go:148\n\t  | [...repeated from below...]\n\tWraps: (2) *models.JenkinsJob not found (404)\n\tWraps: (3) attached stack trace\n\t  -- stack trace:\n\t  | github.com/apache/devlake/impls/dalgorm.(*Dalgorm).convertGormError\n\t  | \t/app/impls/dalgorm/dalgorm.go:542\n\t  | github.com/apache/devlake/impls/dalgorm.(*Dalgorm).First\n\t  | \t/app/impls/dalgorm/dalgorm.go:215\n\t  | github.com/apache/devlake/helpers/srvhelper.(*ModelSrvHelper[...]).FindByPk\n\t  | \t/app/helpers/srvhelper/model_service_helper.go:145\n\t  | github.com/apache/devlake/helpers/pluginhelper/api.(*ModelApiHelper[...]).FindByPk\n\t  | \t/app/helpers/pluginhelper/api/model_api_helper.go:100\n\t  | github.com/apache/devlake/helpers/pluginhelper/api.(*DsScopeApiHelper[...]).Delete\n\t  | \t/app/helpers/pluginhelper/api/ds_scope_api_helper.go:135\n\t  | github.com/apache/devlake/plugins/jenkins/api.DeleteScope\n\t  | \t/app/plugins/jenkins/api/scope_api.go:119\n\t  | github.com/apache/devlake/server/api.registerPluginEndpoints.handlePluginCall.func1\n\t  | \t/app/server/api/router.go:149\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.CSRFProtect.(*Service).CSRFProtect.func3\n\t  | \t/app/server/api/auth/middleware.go:140\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.RequireAuth.(*Service).RequireAuth.func2\n\t  | \t/app/server/api/auth/middleware.go:104\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.OAuth2ProxyAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:115\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.OIDCAuthentication.(*Service).OIDCAuthentication.func1\n\t  | \t/app/server/api/auth/middleware.go:61\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.RequirePushAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:158\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.RestAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:136\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/recovery.go:102\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.LoggerWithConfig.func1\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/logger.go:240\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:620\n\t  | github.com/gin-gonic/gin.(*Engine).ServeHTTP\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:576\n\t  | net/http.serverHandler.ServeHTTP\n\t  | \t/usr/local/go/src/net/http/server.go:3311\n\t  | net/http.(*conn).serve\n\t  | \t/usr/local/go/src/net/http/server.go:2067\n\t  | runtime.goexit\n\t  | \t/usr/local/go/src/runtime/asm_amd64.s:1771\n\tWraps: (4) record not found (404)\n\tWraps: (5) record not found\n\tError types: (1) *withstack.withStack (2) *errutil.withPrefix (3) *withstack.withStack (4) *errutil.withPrefix (5) *errors.errorString"
devlake-1    | time="2026-09-10 14:24:10" level=error msg="HTTP 404 error\n\tcaused by: attached stack trace\n\t  -- stack trace:\n\t  | github.com/apache/devlake/helpers/srvhelper.(*ModelSrvHelper[...]).FindByPk\n\t  | \t/app/helpers/srvhelper/model_service_helper.go:148\n\t  | [...repeated from below...]\n\tWraps: (2) *models.JenkinsJob not found (404)\n\tWraps: (3) attached stack trace\n\t  -- stack trace:\n\t  | github.com/apache/devlake/impls/dalgorm.(*Dalgorm).convertGormError\n\t  | \t/app/impls/dalgorm/dalgorm.go:542\n\t  | github.com/apache/devlake/impls/dalgorm.(*Dalgorm).First\n\t  | \t/app/impls/dalgorm/dalgorm.go:215\n\t  | github.com/apache/devlake/helpers/srvhelper.(*ModelSrvHelper[...]).FindByPk\n\t  | \t/app/helpers/srvhelper/model_service_helper.go:145\n\t  | github.com/apache/devlake/helpers/pluginhelper/api.(*ModelApiHelper[...]).FindByPk\n\t  | \t/app/helpers/pluginhelper/api/model_api_helper.go:100\n\t  | github.com/apache/devlake/helpers/pluginhelper/api.(*DsScopeApiHelper[...]).Delete\n\t  | \t/app/helpers/pluginhelper/api/ds_scope_api_helper.go:135\n\t  | github.com/apache/devlake/plugins/jenkins/api.DeleteScope\n\t  | \t/app/plugins/jenkins/api/scope_api.go:119\n\t  | github.com/apache/devlake/server/api.registerPluginEndpoints.handlePluginCall.func1\n\t  | \t/app/server/api/router.go:149\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.CSRFProtect.(*Service).CSRFProtect.func3\n\t  | \t/app/server/api/auth/middleware.go:140\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.RequireAuth.(*Service).RequireAuth.func2\n\t  | \t/app/server/api/auth/middleware.go:104\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.OAuth2ProxyAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:115\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.CreateApiServer.OIDCAuthentication.(*Service).OIDCAuthentication.func1\n\t  | \t/app/server/api/auth/middleware.go:61\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.RequirePushAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:158\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/apache/devlake/server/api.RestAuthentication.func1\n\t  | \t/app/server/api/middlewares.go:136\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/recovery.go:102\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.LoggerWithConfig.func1\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/logger.go:240\n\t  | github.com/gin-gonic/gin.(*Context).Next\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174\n\t  | github.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:620\n\t  | github.com/gin-gonic/gin.(*Engine).ServeHTTP\n\t  | \t/go/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:576\n\t  | net/http.serverHandler.ServeHTTP\n\t  | \t/usr/local/go/src/net/http/server.go:3311\n\t  | net/http.(*conn).serve\n\t  | \t/usr/local/go/src/net/http/server.go:2067\n\t  | runtime.goexit\n\t  | \t/usr/local/go/src/runtime/asm_amd64.s:1771\n\tWraps: (4) record not found (404)\n\tWraps: (5) record not found\n\tError types: (1) *withstack.withStack (2) *errutil.withPrefix (3) *withstack.withStack (4) *errutil.withPrefix (5) *errors.errorString"
devlake-1    | [GIN] 2026/09/10 - 14:24:10 | 404 |    7.769236ms |      10.89.1.39 | DELETE   "/plugins/jenkins/connections/1/scopes/loyalty-core/feature/LOY-12394-accesspermission-front-users?delete_data_only=false"
devlake-1    | [GIN] 2026/09/10 - 14:24:10 | 404 |    7.769236ms |      10.89.1.39 | DELETE   "/plugins/jenkins/connections/1/scopes/loyalty-core/feature/LOY-12394-accesspermission-front-users?delete_data_only=false"
devlake-1    | [GIN] 2026/09/10 - 14:24:10 | 404 |    7.769236ms |      10.89.1.39 | DELETE   "/plugins/jenkins/connections/1/scopes/loyalty-core/feature/LOY-12394-accesspermission-front-users?delete_data_only=false"
devlake-1    | [GIN] 2026/09/10 - 14:24:10 | 404 |    7.769236ms |      10.89.1.39 | DELETE   "/plugins/jenkins/connections/1/scopes/loyalty-core/feature/LOY-12394-accesspermission-front-users?delete_data_only=false"

Version

v1.0.3-beta17@8fe26f4

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

type/bugThis issue is a bug

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions