From cc40f115684ca379d43d7dc9bb3ceeb4ff521dcd Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Mon, 11 Jul 2011 14:26:16 -0700 Subject: [PATCH] rgw: fix lru --- src/rgw/rgw_cache.h | 13 ++++++++++--- src/rgw/rgw_common.h | 2 +- src/rgw/rgw_env.cc | 8 +++++--- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/rgw/rgw_cache.h b/src/rgw/rgw_cache.h index dd8e17dc62fe4..7935eb4100f41 100644 --- a/src/rgw/rgw_cache.h +++ b/src/rgw/rgw_cache.h @@ -123,6 +123,10 @@ class RGWCache : public T return string(buf); } + string normal_name(rgw_obj& obj) { + return normal_name(obj.bucket, obj.object); + } + int distribute(rgw_obj& obj, ObjectCacheInfo& obj_info); int watch_cb(int opcode, uint64_t ver, bufferlist& bl); public: @@ -142,11 +146,12 @@ template int RGWCache::get_obj(void **handle, rgw_obj& obj, char **data, off_t ofs, off_t end) { string& bucket = obj.bucket; - string& oid = obj.object; - string name = normal_name(bucket, oid); if (bucket[0] != '.' || ofs != 0) return T::get_obj(handle, obj, data, ofs, end); + string& oid = obj.object; + string name = normal_name(bucket, oid); + ObjectCacheInfo info; if (cache.get(name, info, CACHE_FLAG_DATA) == 0) { if (info.status < 0) @@ -284,9 +289,11 @@ int RGWCache::watch_cb(int opcode, uint64_t ver, bufferlist& bl) return -EIO; } + string name = normal_name(info.obj); + switch (info.op) { case UPDATE_OBJ: - cache.put(info.ns, info.obj_info); + cache.put(name, info.obj_info); break; default: RGW_LOG(0) << "WARNING: got unknown notification op: " << info.op << dendl; diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h index cc9eb4da3ff02..74db39709529a 100644 --- a/src/rgw/rgw_common.h +++ b/src/rgw/rgw_common.h @@ -162,7 +162,7 @@ class RGWEnv { public: RGWConf *conf; - RGWEnv() : conf(NULL) {} + RGWEnv(); ~RGWEnv(); void reinit(char **envp); const char *get(const char *name, const char *def_val = NULL); diff --git a/src/rgw/rgw_env.cc b/src/rgw/rgw_env.cc index 68bd646baa85c..40e2f205c3990 100644 --- a/src/rgw/rgw_env.cc +++ b/src/rgw/rgw_env.cc @@ -6,6 +6,11 @@ RGWEnv rgw_env; +RGWEnv::RGWEnv() +{ + conf = new RGWConf; +} + RGWEnv::~RGWEnv() { delete conf; @@ -27,9 +32,6 @@ void RGWEnv::reinit(char **envp) env_map[name] = val; } - if (!conf) - conf = new RGWConf; - conf->init(this); } -- 2.39.5