instead of using optional<> for holding reloader, use unique_ptr<>.
as `RGWRealmReloader` is neither
trivially_copy_{assignable,constructible} nor
is_trivially_move_{assignable, constructible}, because of the `Cond`
member variable. but Clang++ and libc++ still tries to rely on a
delgating copy constructor for constructing the
optional<RGWRealmReloader> instance even the optional object is
created `in_place`.
in this change, to workaround this issue, reloader is instead
constructed using make_unique<>
Signed-off-by: Kefu Chai <kchai@redhat.com>
(cherry picked from commit
2494ddbef5ad20cdfccf59911fccadb6f9848da0)
// add a watcher to respond to realm configuration changes
RGWPeriodPusher pusher(store);
RGWFrontendPauser pauser(fes, implicit_tenant_context, &pusher);
- std::optional<RGWRealmReloader> reloader(std::in_place, store,
- service_map_meta, &pauser);
+ auto reloader = std::make_unique<RGWRealmReloader>(store,
+ service_map_meta, &pauser);
RGWRealmWatcher realm_watcher(g_ceph_context, store->svc.zone->get_realm());
realm_watcher.add_watcher(RGWRealmNotify::Reload, *reloader);