]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
common,test: g_ceph_context->put() upon return
authorKefu Chai <kchai@redhat.com>
Tue, 15 Nov 2016 06:21:03 +0000 (14:21 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 24 Nov 2016 14:38:28 +0000 (22:38 +0800)
commitcb1cda96713b2ec0f6418c4cbe3d964c2020729c
tree2172eb81f79a3a93c1b3d1b74f31bfadeeb0a216
parente01b89ed6be6b99fec5c725f4bc5769b42468cac
common,test: g_ceph_context->put() upon return

prior to this change, global_init() could create a new CephContext
and assign it to g_ceph_context. it's our responsibilty to release
the CephContext explicitly using cct->put() before the application
quits. but sometimes, we fail to do so.

in this change, global_init() will return an intrusive_ptr<CephContext>,
which calls `g_ceph_context->put()` in its dtor. this ensures that
the CephContext is always destroyed before main() returns. so the
log is flushed before _log_exp_length is destroyed.

there are two cases where global_pre_init() is called directly.
- ceph_conf.cc: g_ceph_context->put() will be called by an intrusive_ptr<>
  deleter.
- rgw_main.cc: global_init() is called later on on the success code
  path, so it will be taken care of.

Fixes: http://tracker.ceph.com/issues/17762
Signed-off-by: Kefu Chai <kchai@redhat.com>
130 files changed:
src/ceph_fuse.cc
src/ceph_mds.cc
src/ceph_mgr.cc
src/ceph_mon.cc
src/ceph_osd.cc
src/ceph_syn.cc
src/global/global_init.cc
src/global/global_init.h
src/librados-config.cc
src/os/bluestore/bluefs_tool.cc
src/rbd_replay/rbd-replay.cc
src/rgw/librgw.cc
src/rgw/rgw_admin.cc
src/rgw/rgw_lib.h
src/rgw/rgw_main.cc
src/rgw/rgw_object_expirer.cc
src/rgw/rgw_token.cc
src/test/ObjectMap/test_keyvaluedb_iterators.cc
src/test/ObjectMap/test_object_map.cc
src/test/TestSignalHandlers.cc
src/test/TestTimers.cc
src/test/admin_socket.cc
src/test/bench/small_io_bench_dumb.cc
src/test/bench/small_io_bench_fs.cc
src/test/bench/tp_bench.cc
src/test/bench_log.cc
src/test/common/Throttle.cc
src/test/common/get_command_descriptions.cc
src/test/common/test_async_compressor.cc
src/test/common/test_shared_cache.cc
src/test/common/test_sharedptr_registry.cc
src/test/compressor/test_compression.cc
src/test/crush/CrushWrapper.cc
src/test/crush/crush.cc
src/test/crypto_init.cc
src/test/erasure-code/TestErasureCode.cc
src/test/erasure-code/TestErasureCodeExample.cc
src/test/erasure-code/TestErasureCodeIsa.cc
src/test/erasure-code/TestErasureCodeJerasure.cc
src/test/erasure-code/TestErasureCodeLrc.cc
src/test/erasure-code/TestErasureCodePlugin.cc
src/test/erasure-code/TestErasureCodePluginIsa.cc
src/test/erasure-code/TestErasureCodePluginJerasure.cc
src/test/erasure-code/TestErasureCodePluginLrc.cc
src/test/erasure-code/TestErasureCodePluginShec.cc
src/test/erasure-code/TestErasureCodeShec.cc
src/test/erasure-code/TestErasureCodeShec_all.cc
src/test/erasure-code/TestErasureCodeShec_arguments.cc
src/test/erasure-code/TestErasureCodeShec_thread.cc
src/test/erasure-code/ceph_erasure_code.cc
src/test/erasure-code/ceph_erasure_code_benchmark.cc
src/test/erasure-code/ceph_erasure_code_non_regression.cc
src/test/filestore/TestFileStore.cc
src/test/fio/fio_ceph_objectstore.cc
src/test/journal/test_main.cc
src/test/librados/list.cc
src/test/librados/misc.cc
src/test/librados/tier.cc
src/test/mds/TestMDSAuthCaps.cc
src/test/mds/TestSessionFilter.cc
src/test/messenger/simple_client.cc
src/test/messenger/simple_server.cc
src/test/messenger/xio_client.cc
src/test/mon/PGMap.cc
src/test/mon/test-mon-msg.cc
src/test/mon/test_mon_workloadgen.cc
src/test/msgr/perf_msgr_client.cc
src/test/msgr/perf_msgr_server.cc
src/test/msgr/test_async_driver.cc
src/test/msgr/test_async_networkstack.cc
src/test/msgr/test_msgr.cc
src/test/msgr/test_userspace_event.cc
src/test/objectstore/Allocator_test.cc
src/test/objectstore/BitAllocator_test.cc
src/test/objectstore/ObjectStoreTransactionBenchmark.cc
src/test/objectstore/TestRocksdbOptionParse.cc
src/test/objectstore/chain_xattr.cc
src/test/objectstore/store_test.cc
src/test/objectstore/test_bluefs.cc
src/test/objectstore/test_bluestore_types.cc
src/test/objectstore/test_idempotent.cc
src/test/objectstore/test_idempotent_sequence.cc
src/test/objectstore/test_kv.cc
src/test/objectstore/test_memstore_clone.cc
src/test/objectstore/workload_generator.cc
src/test/objectstore_bench.cc
src/test/os/TestLFNIndex.cc
src/test/osd/TestOSDMap.cc
src/test/osd/TestOSDScrub.cc
src/test/osd/TestPGLog.cc
src/test/osdc/object_cacher_stress.cc
src/test/perf_counters.cc
src/test/perf_local.cc
src/test/rbd_mirror/random_write.cc
src/test/rgw/test_http_manager.cc
src/test/rgw/test_rgw_compression.cc
src/test/rgw/test_rgw_period_history.cc
src/test/test_arch.cc
src/test/test_cors.cc
src/test/test_filejournal.cc
src/test/test_mempool.cc
src/test/test_mutate.cc
src/test/test_rgw_admin_log.cc
src/test/test_rgw_admin_meta.cc
src/test/test_rgw_admin_opstate.cc
src/test/test_snap_mapper.cc
src/test/test_striper.cc
src/test/test_trans.cc
src/test/test_workqueue.cc
src/test/testkeys.cc
src/test/testmsgr.cc
src/test/unit.h
src/test/xattr_bench.cc
src/tools/ceph-client-debug.cc
src/tools/ceph_authtool.cc
src/tools/ceph_conf.cc
src/tools/ceph_kvstore_tool.cc
src/tools/ceph_monstore_tool.cc
src/tools/ceph_objectstore_tool.cc
src/tools/ceph_osdomap_tool.cc
src/tools/cephfs/cephfs-data-scan.cc
src/tools/cephfs/cephfs-journal-tool.cc
src/tools/cephfs/cephfs-table-tool.cc
src/tools/crushtool.cc
src/tools/monmaptool.cc
src/tools/osdmaptool.cc
src/tools/rados/rados.cc
src/tools/rbd/rbd.cc
src/tools/rbd_mirror/main.cc
src/tools/rbd_nbd/rbd-nbd.cc