mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08: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
 | 
					package cache
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"strconv"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/modules/setting"
 | 
						"code.gitea.io/gitea/modules/setting"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mc "github.com/go-macaron/cache"
 | 
						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()))
 | 
							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
 | 
					// 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()))
 | 
							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
 | 
					// Remove key from cache
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user