public:
RGWArchiveDataSyncModule() {}
+ void init(RGWDataSyncEnv *sync_env, uint64_t instance_id) override;
+
RGWCoroutine *sync_object(RGWDataSyncEnv *sync_env, RGWBucketInfo& bucket_info, rgw_obj_key& key, uint64_t versioned_epoch, rgw_zone_set *zones_trace) override;
RGWCoroutine *remove_object(RGWDataSyncEnv *sync_env, RGWBucketInfo& bucket_info, rgw_obj_key& key, real_time& mtime, bool versioned, uint64_t versioned_epoch, rgw_zone_set *zones_trace) override;
RGWCoroutine *create_delete_marker(RGWDataSyncEnv *sync_env, RGWBucketInfo& bucket_info, rgw_obj_key& key, real_time& mtime,
return 0;
}
+void RGWArchiveDataSyncModule::init(RGWDataSyncEnv *sync_env, uint64_t instance_id) {
+
+ ldout(sync_env->cct, 0) << "Switching to archive zone metadata manager" << dendl;
+
+ // FIXME: this code crashes... migrating the current state (handles, md_logs,
+ // current_log...) in meta_mgr raises errors (threads, locks ...)
+
+ //RGWMetadataManager *current_meta_mgr = sync_env->store->meta_mgr;
+ //RGWMetadataManager *new_meta_mgr = new RGWArchiveMetadataManager(sync_env->cct, sync_env->store);
+ //new_meta_mgr.update_state_from(current_meta_mgr);
+ //delete current_meta_mgr;
+ //current_meta_mgr = new_meta_mgr;
+}
+
RGWCoroutine *RGWArchiveDataSyncModule::sync_object(RGWDataSyncEnv *sync_env, RGWBucketInfo& bucket_info, rgw_obj_key& key, uint64_t versioned_epoch, rgw_zone_set *zones_trace)
{
ldout(sync_env->cct, 0) << "SYNC_ARCHIVE: sync_object: b=" << bucket_info.bucket << " k=" << key << " versioned_epoch=" << versioned_epoch << dendl;
{
}
+RGWArchiveMetadataManager::RGWArchiveMetadataManager(CephContext *_cct, RGWRados *_store)
+ : RGWMetadataManager(_cct, _store)
+{
+ ldout(store->ctx(), 0) << "RGWArchiveMetadataManager() constructor check" << dendl;
+}
+
RGWMetadataManager::~RGWMetadataManager()
{
map<string, RGWMetadataHandler *>::iterator iter;
class RGWMetadataManager {
map<string, RGWMetadataHandler *> handlers;
- CephContext *cct;
- RGWRados *store;
// maintain a separate metadata log for each period
std::map<std::string, RGWMetadataLog> md_logs;
RGWObjVersionTracker *objv_tracker,
RGWMetadataHandler::sync_type_t sync_mode);
+protected:
+ CephContext *cct;
+ RGWRados *store;
+
public:
RGWMetadataManager(CephContext *_cct, RGWRados *_store);
~RGWMetadataManager();
return 0;
}
+class RGWArchiveMetadataManager : public RGWMetadataManager {
+public:
+ RGWArchiveMetadataManager(CephContext *_cct, RGWRados *_store);
+};
+
#endif