int RGWDataChangesLog::add_entry(rgw_bucket& bucket) {
lock.Lock();
- ChangeStatusPtr& status = changes[bucket.name];
- if (!status) {
+
+ ChangeStatusPtr status;
+ if (!changes.find(bucket.name, status)) {
status = ChangeStatusPtr(new ChangeStatus);
+ changes.add(bucket.name, status);
}
lock.Unlock();
#include "rgw_string.h"
#include "common/Formatter.h"
+#include "common/lru_map.h"
#include "rgw_formats.h"
typedef std::tr1::shared_ptr<ChangeStatus> ChangeStatusPtr;
- map<string, ChangeStatusPtr> changes;
+ lru_map<string, ChangeStatusPtr> changes;
public:
- RGWDataChangesLog(CephContext *_cct, RGWRados *_store) : cct(_cct), store(_store), lock("RGWDataChangesLog") {
+ RGWDataChangesLog(CephContext *_cct, RGWRados *_store) : cct(_cct), store(_store), lock("RGWDataChangesLog"),
+ changes(1000) /* FIXME */ {
num_shards = 128; /* FIXME */
oids = new string[num_shards];