]>
git.proxmox.com Git - ceph.git/blob - ceph/src/rgw/rgw_sync_module.cc
1 #include "rgw_common.h"
2 #include "rgw_coroutine.h"
3 #include "rgw_cr_rados.h"
4 #include "rgw_sync_module.h"
5 #include "rgw_data_sync.h"
7 #include "rgw_sync_module_log.h"
8 #include "rgw_sync_module_es.h"
10 #include <boost/asio/yield.hpp>
12 #define dout_subsys ceph_subsys_rgw
14 RGWStatRemoteObjCBCR::RGWStatRemoteObjCBCR(RGWDataSyncEnv
*_sync_env
,
15 RGWBucketInfo
& _bucket_info
, rgw_obj_key
& _key
) : RGWCoroutine(_sync_env
->cct
),
17 bucket_info(_bucket_info
), key(_key
) {
20 RGWCallStatRemoteObjCR::RGWCallStatRemoteObjCR(RGWDataSyncEnv
*_sync_env
,
21 RGWBucketInfo
& _bucket_info
, rgw_obj_key
& _key
) : RGWCoroutine(_sync_env
->cct
),
23 bucket_info(_bucket_info
), key(_key
) {
26 int RGWCallStatRemoteObjCR::operate() {
29 call(new RGWStatRemoteObjCR(sync_env
->async_rados
, sync_env
->store
,
30 sync_env
->source_zone
,
31 bucket_info
, key
, &mtime
, &size
, &attrs
));
34 ldout(sync_env
->cct
, 0) << "RGWStatRemoteObjCR() returned " << retcode
<< dendl
;
35 return set_cr_error(retcode
);
37 ldout(sync_env
->cct
, 20) << "stat of remote obj: z=" << sync_env
->source_zone
38 << " b=" << bucket_info
.bucket
<< " k=" << key
39 << " size=" << size
<< " mtime=" << mtime
<< dendl
;
41 RGWStatRemoteObjCBCR
*cb
= allocate_callback();
43 cb
->set_result(mtime
, size
, std::move(attrs
));
48 ldout(sync_env
->cct
, 0) << "RGWStatRemoteObjCR() callback returned " << retcode
<< dendl
;
49 return set_cr_error(retcode
);
56 void rgw_register_sync_modules(RGWSyncModulesManager
*modules_manager
)
58 RGWSyncModuleRef
default_module(std::make_shared
<RGWDefaultSyncModule
>());
59 modules_manager
->register_module("rgw", default_module
, true);
61 RGWSyncModuleRef
log_module(std::make_shared
<RGWLogSyncModule
>());
62 modules_manager
->register_module("log", log_module
);
64 RGWSyncModuleRef
es_module(std::make_shared
<RGWElasticSyncModule
>());
65 modules_manager
->register_module("elasticsearch", es_module
);