diff options
author | Mathias Stearn <mathias@10gen.com> | 2016-04-26 19:25:09 -0400 |
---|---|---|
committer | Mathias Stearn <mathias@10gen.com> | 2016-05-10 14:23:16 -0400 |
commit | bef7b9a89f3a24ed563e958ab789595ac1cc39cc (patch) | |
tree | f3baed779e45e03a6f80b1b96dd31fb16f47b1b4 /src/mongo | |
parent | 23c5d7e44c5447769a46e6d4e10ae6237e8de5fd (diff) | |
download | mongo-bef7b9a89f3a24ed563e958ab789595ac1cc39cc.tar.gz |
SERVER-23873 Optimize checking for interrupt
Diffstat (limited to 'src/mongo')
37 files changed, 75 insertions, 23 deletions
diff --git a/src/mongo/db/client.h b/src/mongo/db/client.h index 5a500f4cf78..407a0bac868 100644 --- a/src/mongo/db/client.h +++ b/src/mongo/db/client.h @@ -38,7 +38,6 @@ #include "mongo/db/client_basic.h" #include "mongo/db/namespace_string.h" -#include "mongo/db/operation_context.h" #include "mongo/db/service_context.h" #include "mongo/platform/random.h" #include "mongo/platform/unordered_set.h" @@ -48,8 +47,9 @@ namespace mongo { -class Collection; class AbstractMessagingPort; +class Collection; +class OperationContext; typedef long long ConnectionId; diff --git a/src/mongo/db/commands/copydb_start_commands.cpp b/src/mongo/db/commands/copydb_start_commands.cpp index e37695e4181..609c1167184 100644 --- a/src/mongo/db/commands/copydb_start_commands.cpp +++ b/src/mongo/db/commands/copydb_start_commands.cpp @@ -44,6 +44,7 @@ #include "mongo/db/commands.h" #include "mongo/db/commands/copydb.h" #include "mongo/db/jsobj.h" +#include "mongo/db/operation_context.h" #include "mongo/rpc/get_status_from_command_result.h" #include "mongo/util/log.h" diff --git a/src/mongo/db/commands/list_databases.cpp b/src/mongo/db/commands/list_databases.cpp index 88978246b19..7867efa38e6 100644 --- a/src/mongo/db/commands/list_databases.cpp +++ b/src/mongo/db/commands/list_databases.cpp @@ -33,6 +33,7 @@ #include "mongo/db/catalog/database_holder.h" #include "mongo/db/client.h" #include "mongo/db/commands.h" +#include "mongo/db/operation_context.h" #include "mongo/db/service_context.h" #include "mongo/db/storage/storage_engine.h" diff --git a/src/mongo/db/curop_metrics.cpp b/src/mongo/db/curop_metrics.cpp index 78d2ca3d41c..558659ae554 100644 --- a/src/mongo/db/curop_metrics.cpp +++ b/src/mongo/db/curop_metrics.cpp @@ -26,6 +26,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/base/counter.h" #include "mongo/db/curop.h" #include "mongo/db/operation_context.h" diff --git a/src/mongo/db/operation_context.cpp b/src/mongo/db/operation_context.cpp index 1434ee5ddc7..c8e4ad61137 100644 --- a/src/mongo/db/operation_context.cpp +++ b/src/mongo/db/operation_context.cpp @@ -38,21 +38,9 @@ namespace mongo { OperationContext::OperationContext(Client* client, unsigned int opId, Locker* locker) : _client(client), _opId(opId), _locker(locker) {} -ServiceContext* OperationContext::getServiceContext() const { - return _client->getServiceContext(); -} - -Client* OperationContext::getClient() const { - return _client; -} - void OperationContext::markKilled(ErrorCodes::Error killCode) { invariant(killCode != ErrorCodes::OK); _killCode.compareAndSwap(ErrorCodes::OK, killCode); } -ErrorCodes::Error OperationContext::getKillStatus() const { - return _killCode.loadRelaxed(); -} - } // namespace mongo diff --git a/src/mongo/db/operation_context.h b/src/mongo/db/operation_context.h index 249b89bdf37..0c26404dae1 100644 --- a/src/mongo/db/operation_context.h +++ b/src/mongo/db/operation_context.h @@ -30,6 +30,7 @@ #include "mongo/base/disallow_copying.h" #include "mongo/base/status.h" +#include "mongo/db/client.h" #include "mongo/db/concurrency/d_concurrency.h" #include "mongo/db/storage/recovery_unit.h" #include "mongo/db/storage/storage_options.h" @@ -140,12 +141,16 @@ public: /** * Returns the service context under which this operation context runs. */ - ServiceContext* getServiceContext() const; + ServiceContext* getServiceContext() const { + return _client->getServiceContext(); + } /** * Returns the client under which this context runs. */ - Client* getClient() const; + Client* getClient() const { + return _client; + } virtual uint64_t getRemainingMaxTimeMicros() const = 0; @@ -201,7 +206,9 @@ public: * May be called by any thread that has locked the Client owning this operation context, or * without lock by the thread executing on behalf of this operation context. */ - ErrorCodes::Error getKillStatus() const; + ErrorCodes::Error getKillStatus() const { + return _killCode.loadRelaxed(); + } /** * Shortcut method, which checks whether getKillStatus returns a non-OK value. Has the same diff --git a/src/mongo/db/operation_context_impl.cpp b/src/mongo/db/operation_context_impl.cpp index dc4fc72df33..67483b4c961 100644 --- a/src/mongo/db/operation_context_impl.cpp +++ b/src/mongo/db/operation_context_impl.cpp @@ -79,7 +79,7 @@ OperationContextImpl::OperationContextImpl() : OperationContext( &cc(), nextOpId.fetchAndAdd(1), clientOperationInfoDecoration(cc()).getLocker()), _writesAreReplicated(true) { - StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getServiceContext()->getGlobalStorageEngine(); _recovery.reset(storageEngine->newRecoveryUnit()); auto client = getClient(); @@ -172,7 +172,7 @@ void OperationContextImpl::checkForInterrupt() { } Status OperationContextImpl::checkForInterruptNoAssert() { - if (getGlobalServiceContext()->getKillAllOperations()) { + if (getServiceContext()->getKillAllOperations()) { return Status(ErrorCodes::InterruptedAtShutdown, "interrupted at shutdown"); } diff --git a/src/mongo/db/operation_context_impl.h b/src/mongo/db/operation_context_impl.h index e3474939d7b..1ebee1a0f77 100644 --- a/src/mongo/db/operation_context_impl.h +++ b/src/mongo/db/operation_context_impl.h @@ -33,7 +33,7 @@ namespace mongo { -class OperationContextImpl : public OperationContext { +class OperationContextImpl final : public OperationContext { public: virtual ~OperationContextImpl(); diff --git a/src/mongo/db/server_parameters_test.cpp b/src/mongo/db/server_parameters_test.cpp index 379a9947154..fc480be9e02 100644 --- a/src/mongo/db/server_parameters_test.cpp +++ b/src/mongo/db/server_parameters_test.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/unittest/unittest.h" #include "mongo/db/operation_context_noop.h" diff --git a/src/mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store_test.cpp b/src/mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store_test.cpp index 6da2107aa61..5fa803ea2e0 100644 --- a/src/mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store_test.cpp +++ b/src/mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store_test.cpp @@ -28,8 +28,9 @@ * it in the license file. */ -#include "mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store.h" +#include "mongo/platform/basic.h" +#include "mongo/db/storage/ephemeral_for_test/ephemeral_for_test_record_store.h" #include "mongo/db/storage/ephemeral_for_test/ephemeral_for_test_recovery_unit.h" #include "mongo/db/storage/record_store_test_harness.h" diff --git a/src/mongo/db/storage/kv/kv_database_catalog_entry.cpp b/src/mongo/db/storage/kv/kv_database_catalog_entry.cpp index b88eeb6bc20..158d638b142 100644 --- a/src/mongo/db/storage/kv/kv_database_catalog_entry.cpp +++ b/src/mongo/db/storage/kv/kv_database_catalog_entry.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/kv/kv_database_catalog_entry.h" #include "mongo/db/operation_context.h" diff --git a/src/mongo/db/storage/mmap_v1/dur.cpp b/src/mongo/db/storage/mmap_v1/dur.cpp index 0bfb6d44e45..d7037b87b19 100644 --- a/src/mongo/db/storage/mmap_v1/dur.cpp +++ b/src/mongo/db/storage/mmap_v1/dur.cpp @@ -81,6 +81,7 @@ #include "mongo/db/client.h" #include "mongo/db/commands/server_status.h" #include "mongo/db/concurrency/lock_state.h" +#include "mongo/db/operation_context.h" #include "mongo/db/storage/mmap_v1/aligned_builder.h" #include "mongo/db/storage/mmap_v1/dur_commitjob.h" #include "mongo/db/storage/mmap_v1/dur_journal.h" diff --git a/src/mongo/db/storage/mmap_v1/dur_journal_writer.cpp b/src/mongo/db/storage/mmap_v1/dur_journal_writer.cpp index ff24018a0c6..176cf3b3ae6 100644 --- a/src/mongo/db/storage/mmap_v1/dur_journal_writer.cpp +++ b/src/mongo/db/storage/mmap_v1/dur_journal_writer.cpp @@ -40,6 +40,7 @@ #include "mongo/stdx/functional.h" #include "mongo/stdx/thread.h" #include "mongo/util/log.h" +#include "mongo/util/timer.h" namespace mongo { namespace dur { diff --git a/src/mongo/db/storage/mmap_v1/heap_record_store_btree.cpp b/src/mongo/db/storage/mmap_v1/heap_record_store_btree.cpp index 123a94fdeb9..eaf0981c688 100644 --- a/src/mongo/db/storage/mmap_v1/heap_record_store_btree.cpp +++ b/src/mongo/db/storage/mmap_v1/heap_record_store_btree.cpp @@ -31,6 +31,8 @@ #define MONGO_LOG_DEFAULT_COMPONENT ::mongo::logger::LogComponent::kStorage +#include "mongo/platform/basic.h" + #include "mongo/db/storage/mmap_v1/heap_record_store_btree.h" #include "mongo/base/checked_cast.h" diff --git a/src/mongo/db/storage/mmap_v1/mmap_v1_record_store_test.cpp b/src/mongo/db/storage/mmap_v1/mmap_v1_record_store_test.cpp index 3386bb057d1..0328ea2d7c5 100644 --- a/src/mongo/db/storage/mmap_v1/mmap_v1_record_store_test.cpp +++ b/src/mongo/db/storage/mmap_v1/mmap_v1_record_store_test.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/operation_context_noop.h" #include "mongo/db/storage/mmap_v1/extent.h" #include "mongo/db/storage/mmap_v1/record.h" diff --git a/src/mongo/db/storage/mmap_v1/record_store_v1_capped.cpp b/src/mongo/db/storage/mmap_v1/record_store_v1_capped.cpp index 350a9fc1cdf..1c678074ace 100644 --- a/src/mongo/db/storage/mmap_v1/record_store_v1_capped.cpp +++ b/src/mongo/db/storage/mmap_v1/record_store_v1_capped.cpp @@ -33,6 +33,7 @@ #include "mongo/db/storage/mmap_v1/record_store_v1_capped.h" #include "mongo/db/client.h" +#include "mongo/db/operation_context.h" #include "mongo/db/storage/mmap_v1/extent.h" #include "mongo/db/storage/mmap_v1/extent_manager.h" #include "mongo/db/storage/mmap_v1/mmap.h" diff --git a/src/mongo/db/storage/record_store_test_capped_visibility.cpp b/src/mongo/db/storage/record_store_test_capped_visibility.cpp index 1f7d7afa87c..addf258d4f3 100644 --- a/src/mongo/db/storage/record_store_test_capped_visibility.cpp +++ b/src/mongo/db/storage/record_store_test_capped_visibility.cpp @@ -26,6 +26,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" #include <memory> diff --git a/src/mongo/db/storage/record_store_test_datafor.cpp b/src/mongo/db/storage/record_store_test_datafor.cpp index 4bb9a0fbca1..f29300d9525 100644 --- a/src/mongo/db/storage/record_store_test_datafor.cpp +++ b/src/mongo/db/storage/record_store_test_datafor.cpp @@ -28,8 +28,9 @@ * it in the license file. */ -#include "mongo/db/storage/record_store_test_harness.h" +#include "mongo/platform/basic.h" +#include "mongo/db/storage/record_store_test_harness.h" #include "mongo/db/record_id.h" #include "mongo/db/storage/record_data.h" diff --git a/src/mongo/db/storage/record_store_test_datasize.cpp b/src/mongo/db/storage/record_store_test_datasize.cpp index b39d62d27b3..03f06bd0834 100644 --- a/src/mongo/db/storage/record_store_test_datasize.cpp +++ b/src/mongo/db/storage/record_store_test_datasize.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" diff --git a/src/mongo/db/storage/record_store_test_deleterecord.cpp b/src/mongo/db/storage/record_store_test_deleterecord.cpp index 87249d51a17..372b67e1915 100644 --- a/src/mongo/db/storage/record_store_test_deleterecord.cpp +++ b/src/mongo/db/storage/record_store_test_deleterecord.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" diff --git a/src/mongo/db/storage/record_store_test_harness.cpp b/src/mongo/db/storage/record_store_test_harness.cpp index 75561e1429b..6512e3bfff1 100644 --- a/src/mongo/db/storage/record_store_test_harness.cpp +++ b/src/mongo/db/storage/record_store_test_harness.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" diff --git a/src/mongo/db/storage/record_store_test_insertrecord.cpp b/src/mongo/db/storage/record_store_test_insertrecord.cpp index 03f8bcebc7a..0ebca91645a 100644 --- a/src/mongo/db/storage/record_store_test_insertrecord.cpp +++ b/src/mongo/db/storage/record_store_test_insertrecord.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" diff --git a/src/mongo/db/storage/record_store_test_manyiter.cpp b/src/mongo/db/storage/record_store_test_manyiter.cpp index 842e2681abc..ead99310fc4 100644 --- a/src/mongo/db/storage/record_store_test_manyiter.cpp +++ b/src/mongo/db/storage/record_store_test_manyiter.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" diff --git a/src/mongo/db/storage/record_store_test_randomiter.cpp b/src/mongo/db/storage/record_store_test_randomiter.cpp index 140e063069a..18379372f83 100644 --- a/src/mongo/db/storage/record_store_test_randomiter.cpp +++ b/src/mongo/db/storage/record_store_test_randomiter.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" diff --git a/src/mongo/db/storage/record_store_test_recorditer.cpp b/src/mongo/db/storage/record_store_test_recorditer.cpp index 1815352b6af..c9367e81ce4 100644 --- a/src/mongo/db/storage/record_store_test_recorditer.cpp +++ b/src/mongo/db/storage/record_store_test_recorditer.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" #include <algorithm> diff --git a/src/mongo/db/storage/record_store_test_recordstore.cpp b/src/mongo/db/storage/record_store_test_recordstore.cpp index 2e2fb9c3bfd..3f9603575fa 100644 --- a/src/mongo/db/storage/record_store_test_recordstore.cpp +++ b/src/mongo/db/storage/record_store_test_recordstore.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" diff --git a/src/mongo/db/storage/record_store_test_repairiter.cpp b/src/mongo/db/storage/record_store_test_repairiter.cpp index fd71f1a7523..7c158d4b6e7 100644 --- a/src/mongo/db/storage/record_store_test_repairiter.cpp +++ b/src/mongo/db/storage/record_store_test_repairiter.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" diff --git a/src/mongo/db/storage/record_store_test_storagesize.cpp b/src/mongo/db/storage/record_store_test_storagesize.cpp index 61303b7967d..76c870404bf 100644 --- a/src/mongo/db/storage/record_store_test_storagesize.cpp +++ b/src/mongo/db/storage/record_store_test_storagesize.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" diff --git a/src/mongo/db/storage/record_store_test_touch.cpp b/src/mongo/db/storage/record_store_test_touch.cpp index 14181ec0c9b..50cb891cca1 100644 --- a/src/mongo/db/storage/record_store_test_touch.cpp +++ b/src/mongo/db/storage/record_store_test_touch.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" diff --git a/src/mongo/db/storage/record_store_test_truncate.cpp b/src/mongo/db/storage/record_store_test_truncate.cpp index b38ee3cb806..8f29c838705 100644 --- a/src/mongo/db/storage/record_store_test_truncate.cpp +++ b/src/mongo/db/storage/record_store_test_truncate.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" diff --git a/src/mongo/db/storage/record_store_test_updaterecord.cpp b/src/mongo/db/storage/record_store_test_updaterecord.cpp index cd27acf9c69..0d1f4749460 100644 --- a/src/mongo/db/storage/record_store_test_updaterecord.cpp +++ b/src/mongo/db/storage/record_store_test_updaterecord.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_updaterecord.h" diff --git a/src/mongo/db/storage/record_store_test_updatewithdamages.cpp b/src/mongo/db/storage/record_store_test_updatewithdamages.cpp index efbac5038d7..30850daffe5 100644 --- a/src/mongo/db/storage/record_store_test_updatewithdamages.cpp +++ b/src/mongo/db/storage/record_store_test_updatewithdamages.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_harness.h" diff --git a/src/mongo/db/storage/record_store_test_validate.cpp b/src/mongo/db/storage/record_store_test_validate.cpp index d55d8229526..f8d08afbef4 100644 --- a/src/mongo/db/storage/record_store_test_validate.cpp +++ b/src/mongo/db/storage/record_store_test_validate.cpp @@ -28,6 +28,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/storage/record_store_test_validate.h" diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp index 45669016720..4b85a47c304 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp @@ -30,9 +30,12 @@ #define MONGO_LOG_DEFAULT_COMPONENT ::mongo::logger::LogComponent::kStorage +#include "mongo/platform/basic.h" + +#include "mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.h" + #include "mongo/base/init.h" #include "mongo/bson/bsonobjbuilder.h" -#include "mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.h" #include "mongo/db/storage/wiredtiger/wiredtiger_session_cache.h" #include "mongo/db/storage/wiredtiger/wiredtiger_util.h" #include "mongo/stdx/condition_variable.h" diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp index 4acc3e34e05..4b45925bc08 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp @@ -31,6 +31,8 @@ #define MONGO_LOG_DEFAULT_COMPONENT ::mongo::logger::LogComponent::kStorage +#include "mongo/platform/basic.h" + #include "mongo/db/storage/wiredtiger/wiredtiger_session_cache.h" #include "mongo/base/error_codes.h" diff --git a/src/mongo/rpc/metadata/config_server_metadata.cpp b/src/mongo/rpc/metadata/config_server_metadata.cpp index 1eaa2ef112f..dae494bc505 100644 --- a/src/mongo/rpc/metadata/config_server_metadata.cpp +++ b/src/mongo/rpc/metadata/config_server_metadata.cpp @@ -26,6 +26,8 @@ * it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/rpc/metadata/config_server_metadata.h" #include "mongo/bson/util/bson_check.h" diff --git a/src/mongo/s/s_only.cpp b/src/mongo/s/s_only.cpp index 8d63a0cb05b..56d4238f3bc 100644 --- a/src/mongo/s/s_only.cpp +++ b/src/mongo/s/s_only.cpp @@ -38,6 +38,7 @@ #include "mongo/db/auth/authorization_session.h" #include "mongo/db/client.h" #include "mongo/db/commands.h" +#include "mongo/db/operation_context.h" #include "mongo/db/service_context.h" #include "mongo/db/stats/counters.h" #include "mongo/db/write_concern_options.h" |