l3montree-dev / l3montree-dev/devguard
SCA scan fails with 500er - DB Deadlock
Open
Nobody has claimed this yet.
bug
component/devguard-api
needs more info
- Dominant language
- Go
- Stars
- 161
- Forks
- 43
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 37
Description
Unfortunately not stable reproducible...
[2m8:49AM[0m [92mINF[0m [2mmiddlewares/logging_middleware.go:34[0m handled request [2mmethod=[0mPOST [2murl=[0mhttp://api.devguard.opencode.de/api/v2/scan/ [2mstatus=[0m200 [2mduration=[0m6.958837876s
[2m8:49AM[0m [92mINF[0m [2mcontrollers/scan_controller.go:298[0m updating license information in background [2masset=[0mCustomizing-Navigation-Display-Names [2massetID=[0ma7dca4ae-d5ac-475f-8b70-cb799d2173e7
[2m8:49AM[0m [92mINF[0m [2mcontrollers/scan_controller.go:339[0m recalculating risk history for asset [2m"asset version"=[0mCustomizing-Navigation-Display-Names [2massetID=[0ma7dca4ae-d5ac-475f-8b70-cb799d2173e7
[2m8:49AM[0m [92mINF[0m [2mservices/component_service.go:215[0m getting license information for components [2mamount=[0m0
[2m8:49AM[0m [92mINF[0m [2mcontrollers/scan_controller.go:303[0m license information updated [2masset=[0mCustomizing-Navigation-Display-Names [2massetID=[0ma7dca4ae-d5ac-475f-8b70-cb799d2173e7
[2m8:49AM[0m [91mERR[0m [2mmonitoring/alert.go:33[0m critical error encountered [2mmsg=[0m"Database error" [2merror=[0m"ERROR: deadlock detected (SQLSTATE 40P01)" [2mid=[0m1732904092b24ebca6f4bb0b90bf185e
[2m8:49AM[0m [91mERR[0m [2mservices/scan_service.go:494[0m could not recalculate raw risk assessment [2merr=[0m"could not save dependencyVulns: could not execute batch 0 - 1: ERROR: deadlock detected (SQLSTATE 40P01)"
[2m8:49AM[0m [91mERR[0m [2mservices/scan_service.go:150[0m could not handle scan result [2merr=[0m"could not save dependencyVulns: could not execute batch 0 - 1: ERROR: deadlock detected (SQLSTATE 40P01)\ncould not recalculate raw risk assessment\ngithub.com/l3montree-dev/devguard/services.(*scanService).HandleScanResult\n\tgithub.com/l3montree-dev/devguard/services/scan_service.go:497\ngithub.com/l3montree-dev/devguard/services.(*scanService).ScanNormalizedSBOM\n\tgithub.com/l3montree-dev/devguard/services/scan_service.go:147\ngithub.com/l3montree-dev/devguard/controllers.(*ScanController).DependencyVulnScan\n\tgithub.com/l3montree-dev/devguard/controllers/scan_controller.go:263\ngithub.com/l3montree-dev/devguard/controllers.(*ScanController).ScanSbomFileVex\n\tgithub.com/l3montree-dev/devguard/controllers/scan_controller.go:764\ngithub.com/l3montree-dev/devguard/middlewares.DisallowPublicRequests.func1\n\tgithub.com/l3montree-dev/devguard/middlewares/access_control_middlewares.go:116\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.ScanMiddleware.func10.1\n\tgithub.com/l3montree-dev/devguard/middlewares/context_middlewares.go:154\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.AssetAccessControl.func9.1\n\tgithub.com/l3montree-dev/devguard/middlewares/access_control_middlewares.go:141\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.ProjectAccessControl.func8.1\n\tgithub.com/l3montree-dev/devguard/middlewares/access_control_middlewares.go:170\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.ResourceFetchMiddleware.func7.1\n\tgithub.com/l3montree-dev/devguard/middlewares/access_control_middlewares.go:281\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.AssetNameMiddleware.func6.1\n\tgithub.com/l3montree-dev/devguard/middlewares/context_middlewares.go:55\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.NeededScope.func5.1\n\tgithub.com/l3montree-dev/devguard/middlewares/access_control_middlewares.go:104\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.ExternalEntityProviderOrgSyncMiddleware.func4.1\n\tgithub.com/l3montree-dev/devguard/middlewares/external_entity_provider_middlewares.go:66\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.SessionMiddleware.func3.1\n\tgithub.com/l3montree-dev/devguard/middlewares/session_middleware.go:93\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.func2.1\n\tgithub.com/l3montree-dev/devguard/router/apiv2_router.go:44\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.func1.1\n\tgithub.com/l3montree-dev/devguard/router/apiv2_router.go:38\ngithub.com/labstack/echo/v4.(*Echo).add.func1\n\tgithub.com/labstack/echo/v4@v4.15.4/echo.go:601\ngithub.com/l3montree-dev/devguard/middlewares.registerMiddlewares.recovermiddleware.func5.1\n\tgithub.com/l3montree-dev/devguard/middlewares/recover_middleware.go:40\ngithub.com/l3montree-dev/devguard/middlewares.registerMiddlewares.logger.func4.1\n\tgithub.com/l3montree-dev/devguard/middlewares/logging_middleware.go:31\ngithub.com/labstack/echo/v4/middleware.CORSWithConfig.func1.1\n\tgithub.com/labstack/echo/v4@v4.15.4/middleware/cors.go:215\ngithub.com/l3montree-dev/devguard/middlewares.registerMiddlewares.traceID.func3.1\n\tgithub.com/l3montree-dev/devguard/middlewares/logging_middleware.go:20\ngithub.com/l3montree-dev/devguard/middlewares.registerMiddlewares.func1.1\n\tgithub.com/l3montree-dev/devguard/middlewares/server.go:59\ngo.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho.Middleware.func1.1\n\tgo.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho@v0.71.0/echo.go:96\ngithub.com/labstack/echo/v4.(*Echo).ServeHTTP.func1\n\tgithub.com/labstack/echo/v4@v4.15.4/echo.go:682\ngithub.com/l3montree-dev/devguard/middlewares.addTrailingSlash.func1\n\tgithub.com/l3montree-dev/devguard/middlewares/server.go:37\ngithub.com/labstack/echo/v4.(*Echo).ServeHTTP\n\tgithub.com/labstack/echo/v4@v4.15.4/echo.go:688\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3311\nnet/http.(*conn).serve\n\tnet/http/server.go:2067\nruntime.goexit\n\truntime/asm_amd64.s:1771"
[2m8:49AM[0m [91mERR[0m [2mcontrollers/scan_controller.go:265[0m could not scan normalized sbom [2merr=[0m"could not save dependencyVulns: could not execute batch 0 - 1: ERROR: deadlock detected (SQLSTATE 40P01)\ncould not recalculate raw risk assessment\ngithub.com/l3montree-dev/devguard/services.(*scanService).HandleScanResult\n\tgithub.com/l3montree-dev/devguard/services/scan_service.go:497\ngithub.com/l3montree-dev/devguard/services.(*scanService).ScanNormalizedSBOM\n\tgithub.com/l3montree-dev/devguard/services/scan_service.go:147\ngithub.com/l3montree-dev/devguard/controllers.(*ScanController).DependencyVulnScan\n\tgithub.com/l3montree-dev/devguard/controllers/scan_controller.go:263\ngithub.com/l3montree-dev/devguard/controllers.(*ScanController).ScanSbomFileVex\n\tgithub.com/l3montree-dev/devguard/controllers/scan_controller.go:764\ngithub.com/l3montree-dev/devguard/middlewares.DisallowPublicRequests.func1\n\tgithub.com/l3montree-dev/devguard/middlewares/access_control_middlewares.go:116\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.ScanMiddleware.func10.1\n\tgithub.com/l3montree-dev/devguard/middlewares/context_middlewares.go:154\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.AssetAccessControl.func9.1\n\tgithub.com/l3montree-dev/devguard/middlewares/access_control_middlewares.go:141\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.ProjectAccessControl.func8.1\n\tgithub.com/l3montree-dev/devguard/middlewares/access_control_middlewares.go:170\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.ResourceFetchMiddleware.func7.1\n\tgithub.com/l3montree-dev/devguard/middlewares/access_control_middlewares.go:281\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.AssetNameMiddleware.func6.1\n\tgithub.com/l3montree-dev/devguard/middlewares/context_middlewares.go:55\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.NeededScope.func5.1\n\tgithub.com/l3montree-dev/devguard/middlewares/access_control_middlewares.go:104\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.ExternalEntityProviderOrgSyncMiddleware.func4.1\n\tgithub.com/l3montree-dev/devguard/middlewares/external_entity_provider_middlewares.go:66\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.SessionMiddleware.func3.1\n\tgithub.com/l3montree-dev/devguard/middlewares/session_middleware.go:93\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.func2.1\n\tgithub.com/l3montree-dev/devguard/router/apiv2_router.go:44\ngithub.com/l3montree-dev/devguard/router.NewAPIV2Router.func1.1\n\tgithub.com/l3montree-dev/devguard/router/apiv2_router.go:38\ngithub.com/labstack/echo/v4.(*Echo).add.func1\n\tgithub.com/labstack/echo/v4@v4.15.4/echo.go:601\ngithub.com/l3montree-dev/devguard/middlewares.registerMiddlewares.recovermiddleware.func5.1\n\tgithub.com/l3montree-dev/devguard/middlewares/recover_middleware.go:40\ngithub.com/l3montree-dev/devguard/middlewares.registerMiddlewares.logger.func4.1\n\tgithub.com/l3montree-dev/devguard/middlewares/logging_middleware.go:31\ngithub.com/labstack/echo/v4/middleware.CORSWithConfig.func1.1\n\tgithub.com/labstack/echo/v4@v4.15.4/middleware/cors.go:215\ngithub.com/l3montree-dev/devguard/middlewares.registerMiddlewares.traceID.func3.1\n\tgithub.com/l3montree-dev/devguard/middlewares/logging_middleware.go:20\ngithub.com/l3montree-dev/devguard/middlewares.registerMiddlewares.func1.1\n\tgithub.com/l3montree-dev/devguard/middlewares/server.go:59\ngo.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho.Middleware.func1.1\n\tgo.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho@v0.71.0/echo.go:96\ngithub.com/labstack/echo/v4.(*Echo).ServeHTTP.func1\n\tgithub.com/labstack/echo/v4@v4.15.4/echo.go:682\ngithub.com/l3montree-dev/devguard/middlewares.addTrailingSlash.func1\n\tgithub.com/l3montree-dev/devguard/middlewares/server.go:37\ngithub.com/labstack/echo/v4.(*Echo).ServeHTTP\n\tgithub.com/labstack/echo/v4@v4.15.4/echo.go:688\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3311\nnet/http.(*conn).serve\n\tnet/http/server.go:2067\nruntime.goexit\n\truntime/asm_amd64.s:1771"
[2m8:49AM[0m [91mERR[0m [2mmiddlewares/server.go:91[0m could not recalculate raw risk assessment: could not save dependencyVulns: could not execute batch 0 - 1: ERROR: deadlock detected (SQLSTATE 40P01) [2mmethod=[0mPOST [2mpath=[0mhttp://api.devguard.opencode.de/api/v2/scan/
[2m8:49AM[0m [91mERR[0m [2mmiddlewares/server.go:91[0m could not recalculate raw risk assessment: could not save dependencyVulns: could not execute batch 0 - 1: ERROR: deadlock detected (SQLSTATE 40P01) [2mmethod=[0mPOST [2mpath=[0mhttp://api.devguard.opencode.de/api/v2/scan/
[2m8:49AM[0m [92mINF[0m [2mmiddlewares/logging_middleware.go:34[0m handled request [2mmethod=[0mPOST [2murl=[0mhttp://api.devguard.opencode.de/api/v2/scan/ [2mstatus=[0m200 [2mduration=[0m12.754201026s
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the failure from services/scan_service.go:494-497 through controllers/scan_controller.go:263-265, using the reported POST /api/v2/scan/ path and deadlock log. Investigate concurrent scan behavior and the dependencyVulns save and risk recalculation flow; done means the scan no longer fails with a database deadlock under the relevant workload.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100