Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gin SetMode not Passing Value to Function, Cause Panic Error On Minikube/Microk8s #4023

Open
anggriawanrilda88 opened this issue Aug 1, 2024 · 4 comments

Comments

@anggriawanrilda88
Copy link

anggriawanrilda88 commented Aug 1, 2024

Description

this problem happen when I try to create pods on microk8s. gin setMode cannot pass the value from main.go. so, output return panic. I also try on minkube but the result same

How to reproduce

package main

import (
	"github.com/gin-gonic/gin"
)

func main() {
	gin.SetMode(gin.DebugMode)
	r := gin.Default()

	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})

	r.GET("/dbhost", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"DB_HOST": "etst",
		})
	})

	r.Run(":8080") // Jalankan server di port 8080
}

Expectations

[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /ping                     --> main.main.func1 (3 handlers)
[GIN-debug] GET    /dbhost                   --> main.main.func2 (3 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on :8080

Actual result

panic: gin mode unknown: debug ##debug, release (available mode: debug release test)

goroutine 1 [running]:
github.com/gin-gonic/gin.SetMode(...)
        /app/vendor/github.com/gin-gonic/gin/mode.go:74
github.com/gin-gonic/gin.init.0()
        /app/vendor/github.com/gin-gonic/gin/mode.go:53 +0x146
exit status 2

Environment

  • go version: 1.22.5
  • gin version (or commit ref): v1.10.0
  • operating system: ubuntu 22.04 on microk8s / minikube

image

@RedCrazyGhost
Copy link
Contributor

RedCrazyGhost commented Aug 2, 2024

The default is gin.DebugMode, which can be manually specified
My side is normal, later I will test this situation in version 1.22.5

package main

import "github.com/gin-gonic/gin"

func main()  {
    gin.SetMode(gin.DebugMode)
    r := gin.Default()
	r.GET("/", func(c *gin.Context) {
        c.JSON(200,gin.H{"msg":"ok"})
    })
	r.Run(":9000")
}
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /                         --> main.main.func1 (3 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on :9000

go version go1.21.7 linux/amd64
gin version v1.10.0
os version 20.04.1-Ubuntu

@RedCrazyGhost
Copy link
Contributor

gin/mode.go

Line 73 in cc4e114

panic("gin mode unknown: " + value + " (available mode: debug release test)")

gin/mode.go

Line 52 in cc4e114

SetMode(mode)

Your code seems to have been modified again, and you need to check if the source code of the gin has been modified again

@anggriawanrilda88
Copy link
Author

hi RedCrazyGhost, thank for reply. in common linux, or windows or docker container, when I try run go gin with my code above, its normal work with no problem, but I try on kubernetes in microk8s and minikube its error happen. I even try enter to the exec on pods and run from there, but still error, I also debug on gin SetMode function for see what happen, and I found param not pass to the function.

@JimChenWYU
Copy link

image

maybe here is wrong, because you set a wrong global variable GIN_MODE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants