]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix lru
authorYehuda Sadeh <yehuda@hq.newdream.net>
Mon, 11 Jul 2011 21:26:16 +0000 (14:26 -0700)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Mon, 11 Jul 2011 21:26:16 +0000 (14:26 -0700)
src/rgw/rgw_cache.h
src/rgw/rgw_common.h
src/rgw/rgw_env.cc

index dd8e17dc62fe45bbed243ecf8b0428b80a9a8621..7935eb4100f412a23897b726e349e41f08bc2520 100644 (file)
@@ -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 <class T>
 int RGWCache<T>::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<T>::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;
index cc9eb4da3ff028f7125ff6c080fe8b81577f2539..74db39709529a84446833495583229d34302eeb2 100644 (file)
@@ -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);
index 68bd646baa85c37b9304af8fa51187f8c3500848..40e2f205c3990891789103632945d87a063da595 100644 (file)
@@ -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);
 }