seal-io / walrus

Walrus is an open-source application management platform based on IaC tools including OpenTofu, Terraform and others. It helps platform engineers build golden paths for developers and empowers developers with self-service capabilities.
Apache License 2.0
428 stars 42 forks source link

Panic when viewing the undeployed resource details page #2152

Closed Finenyaco closed 6 months ago

Finenyaco commented 7 months ago

Describe the bug

Steps to reproduce

  1. New a resource and save as draft.
  2. Go to the resource details page.

Result

  1. Returned an error.

    image
  2. Check Walrus logs.

2024-03-01T10:08:24.258Z    E   api panic observing: runtime error: invalid memory address or nil pointer dereference, callstack:
runtime.panicmem
    runtime/panic.go:261 (0x62e9b)
runtime.sigpanic
    runtime/signal_unix.go:861 (0x62e68)
github.com/seal-io/walrus/pkg/apis/resource.Handler.getResourceOutputs
    github.com/seal-io/walrus/pkg/apis/resource/extension.go:243 (0x51a596c)
github.com/seal-io/walrus/pkg/apis/resource.Handler.RouteGetOutputs
    github.com/seal-io/walrus/pkg/apis/resource/extension.go:237 (0x51a4f6f)
reflect.Value.call
    reflect/value.go:596 (0xfaec3)
reflect.Value.Call
    reflect/value.go:380 (0xfa343)
github.com/seal-io/walrus/pkg/apis/runtime.(*Router).Routes.func1
    github.com/seal-io/walrus/pkg/apis/runtime/router_route.go:150 (0x4ff97db)
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x501640f)
github.com/seal-io/walrus/pkg/auths.Account.Filter
    github.com/seal-io/walrus/pkg/auths/account.go:56 (0x50163f4)
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x10ad5ab)
github.com/seal-io/walrus/pkg/apis.(*Server).Setup.If.func5
    github.com/seal-io/walrus/pkg/apis/runtime/middleware_filter.go:54 (0x565e44b)
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x10ad5ab)
github.com/seal-io/walrus/pkg/apis.(*Server).Setup.RequestThrottling.func3
    github.com/seal-io/walrus/pkg/apis/runtime/middleware_flowcontrol.go:86 (0x565e86b)
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x10ad5ab)
github.com/seal-io/walrus/pkg/apis.(*Server).Setup.I18n.func6
    github.com/seal-io/walrus/pkg/apis/runtime/middleware_i18n.go:31 (0x565fb77)
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x4ff32c7)
github.com/seal-io/walrus/pkg/apis/runtime.erroring
    github.com/seal-io/walrus/pkg/apis/runtime/middleware_error.go:20 (0x4ff32ac)
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x4ff586b)
github.com/seal-io/walrus/pkg/apis/runtime.recovering
    github.com/seal-io/walrus/pkg/apis/runtime/middleware_recovery.go:39 (0x4ff5850)
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x4ff4e67)
github.com/seal-io/walrus/pkg/apis/runtime.observing
    github.com/seal-io/walrus/pkg/apis/runtime/middleware_observation.go:89 (0x4ff4e48)
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x10b79b3)
github.com/gin-gonic/gin.(*Engine).handleHTTPRequest
    github.com/gin-gonic/gin@v1.9.1/gin.go:620 (0x10b76dc)
github.com/gin-gonic/gin.(*Engine).ServeHTTP
    github.com/gin-gonic/gin@v1.9.1/gin.go:576 (0x10b72ff)
github.com/seal-io/walrus/pkg/apis/runtime.(*Router).ServeHTTP
    github.com/seal-io/walrus/pkg/apis/runtime/router.go:194 (0x4ff83d7)
net/http.serverHandler.ServeHTTP
    net/http/server.go:2938 (0x3626db)
net/http.initALPNRequest.ServeHTTP
    net/http/server.go:3546 (0x365433)
net/http.(*http2serverConn).runHandler
    net/http/h2_bundle.go:6193 (0x3382cf)
runtime.goexit
    runtime/asm_arm64.s:1197 (0x823f3)

github.com/seal-io/walrus/pkg/apis/runtime.recovering.func1
    github.com/seal-io/walrus/pkg/apis/runtime/middleware_recovery.go:26
runtime.gopanic
    runtime/panic.go:914
runtime.panicmem
    runtime/panic.go:261
runtime.sigpanic
    runtime/signal_unix.go:861
github.com/seal-io/walrus/pkg/apis/resource.Handler.getResourceOutputs
    github.com/seal-io/walrus/pkg/apis/resource/extension.go:243
github.com/seal-io/walrus/pkg/apis/resource.Handler.RouteGetOutputs
    github.com/seal-io/walrus/pkg/apis/resource/extension.go:237
reflect.Value.call
    reflect/value.go:596
reflect.Value.Call
    reflect/value.go:380
github.com/seal-io/walrus/pkg/apis/runtime.(*Router).Routes.func1
    github.com/seal-io/walrus/pkg/apis/runtime/router_route.go:150
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174
github.com/seal-io/walrus/pkg/auths.Account.Filter
    github.com/seal-io/walrus/pkg/auths/account.go:56
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174
github.com/seal-io/walrus/pkg/apis.(*Server).Setup.If.func5
    github.com/seal-io/walrus/pkg/apis/runtime/middleware_filter.go:54
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174
github.com/seal-io/walrus/pkg/apis.(*Server).Setup.RequestThrottling.func3
    github.com/seal-io/walrus/pkg/apis/runtime/middleware_flowcontrol.go:86
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174
github.com/seal-io/walrus/pkg/apis.(*Server).Setup.I18n.func6
    github.com/seal-io/walrus/pkg/apis/runtime/middleware_i18n.go:31
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174
github.com/seal-io/walrus/pkg/apis/runtime.erroring
    github.com/seal-io/walrus/pkg/apis/runtime/middleware_error.go:20
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174
github.com/seal-io/walrus/pkg/apis/runtime.recovering
    github.com/seal-io/walrus/pkg/apis/runtime/middleware_recovery.go:39
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174
github.com/seal-io/walrus/pkg/apis/runtime.observing
    github.com/seal-io/walrus/pkg/apis/runtime/middleware_observation.go:89
github.com/gin-gonic/gin.(*Context).Next
    github.com/gin-gonic/gin@v1.9.1/context.go:174
github.com/gin-gonic/gin.(*Engine).handleHTTPRequest
    github.com/gin-gonic/gin@v1.9.1/gin.go:620
github.com/gin-gonic/gin.(*Engine).ServeHTTP
    github.com/gin-gonic/gin@v1.9.1/gin.go:576
github.com/seal-io/walrus/pkg/apis/runtime.(*Router).ServeHTTP
    github.com/seal-io/walrus/pkg/apis/runtime/router.go:194
net/http.serverHandler.ServeHTTP
    net/http/server.go:2938
net/http.initALPNRequest.ServeHTTP
    net/http/server.go:3546
net/http.(*http2serverConn).runHandler
    net/http/h2_bundle.go:6193
2024-03-01T10:08:24.258Z    D   api 500 | HTTP/2.0 |        0 B |        0 B |    8.657064ms |   192.168.237.1 | GET     /v1/projects/502909006822567170/environments/502909614593993986/resources/502909644004453634/outputs

Expected behavior

Environment

Additional context Add any other context about the problem here.

Finenyaco commented 6 months ago

Environment

Test Result: pass