func groupcacheStatsHTTPHandler(w http.ResponseWriter, req *http.Request) { gp := groupcache.GetGroup(groupcacheName) if gp == nil { http.Error(w, fmt.Sprintf("group %s not found", groupcacheName), http.StatusServiceUnavailable) return } type cachesStats struct { Main groupcache.CacheStats Hot groupcache.CacheStats } type stats struct { Group groupcache.Stats Caches cachesStats } data, err := json.MarshalIndent( stats{ Group: gp.Stats, Caches: cachesStats{ Main: gp.CacheStats(groupcache.MainCache), Hot: gp.CacheStats(groupcache.HotCache), }, }, "", " ", ) if err != nil { http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) return } _, _ = w.Write(data) }
func (s *Server) initCache() { s.zoomedFloorCache = groupcache.GetGroup("zoomedImages") if s.zoomedFloorCache == nil { g := zoomedImageGetter{s} s.zoomedFloorCache = groupcache.NewGroup("zoomedImages", int64(256*units.MiB), g) } }
func (gp *GRPCPool) Retrieve(ctx context.Context, req *gcgrpc.RetrieveRequest) (*gcgrpc.RetrieveResponse, error) { group := groupcache.GetGroup(req.Group) if group == nil { log.Warnf("Unable to find group [%s]", req.Group) return nil, fmt.Errorf("Unable to find group [%s]", req.Group) } group.Stats.ServerRequests.Add(1) var value []byte err := group.Get(ctx, req.Key, groupcache.AllocatingByteSliceSink(&value)) if err != nil { log.WithError(err).Warnf("Failed to retrieve [%s]", req) return nil, fmt.Errorf("Failed to retrieve [%s]: %v", req, err) } return &gcgrpc.RetrieveResponse{Value: value}, nil }