mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-30 19:08:37 +00:00 
			
		
		
		
	Fix memcache support when value is returned as string always (#2924)
This commit is contained in:
		
							
								
								
									
										29
									
								
								modules/cache/cache.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								modules/cache/cache.go
									
									
									
									
										vendored
									
									
								
							| @@ -5,6 +5,9 @@ | ||||
| package cache | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"strconv" | ||||
|  | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
|  | ||||
| 	mc "github.com/go-macaron/cache" | ||||
| @@ -42,7 +45,18 @@ func GetInt(key string, getFunc func() (int, error)) (int, error) { | ||||
| 		} | ||||
| 		conn.Put(key, value, int64(setting.CacheService.TTL.Seconds())) | ||||
| 	} | ||||
| 	return conn.Get(key).(int), nil | ||||
| 	switch value := conn.Get(key).(type) { | ||||
| 	case int: | ||||
| 		return value, nil | ||||
| 	case string: | ||||
| 		v, err := strconv.Atoi(value) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		return v, nil | ||||
| 	default: | ||||
| 		return 0, fmt.Errorf("Unsupported cached value type: %v", value) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // GetInt64 returns key value from cache with callback when no key exists in cache | ||||
| @@ -60,7 +74,18 @@ func GetInt64(key string, getFunc func() (int64, error)) (int64, error) { | ||||
| 		} | ||||
| 		conn.Put(key, value, int64(setting.CacheService.TTL.Seconds())) | ||||
| 	} | ||||
| 	return conn.Get(key).(int64), nil | ||||
| 	switch value := conn.Get(key).(type) { | ||||
| 	case int64: | ||||
| 		return value, nil | ||||
| 	case string: | ||||
| 		v, err := strconv.ParseInt(value, 10, 64) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		return v, nil | ||||
| 	default: | ||||
| 		return 0, fmt.Errorf("Unsupported cached value type: %v", value) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Remove key from cache | ||||
|   | ||||
		Reference in New Issue
	
	Block a user