Details
-
Improvement
-
Status: Closed
-
Major - P3
-
Resolution: Fixed
-
None
-
None
-
Fully Compatible
-
Platforms 2017-01-23
Description
The linter will complain if you use std::atomic<T>, suggesting AtomicWord<T> instead. However, the MONGO_EXPORT_SERVER_PARAMTER macro does not work with an AtomicWord<T> type, requiring all parameters that want to use this macro to be declared with a // NOLINT.
Here's an example of the error I got when trying to declare a server parameter with type AtomicInt32:
src/mongo/db/query/query_knobs.cpp:70:31: error: redefinition of 'internalQueryFacetBufferSizeBytes' with a different type: 'server_parameter_storage_type<AtomicInt32,
|
ServerParameterType::kStartupAndRuntime>::value_type' (aka 'atomic<mongo::AtomicWord<int> >') vs 'AtomicInt32' (aka 'AtomicWord<int>')
|
MONGO_EXPORT_SERVER_PARAMETER(internalQueryFacetBufferSizeBytes, AtomicInt32, 100 * 1024 * 1024);
|
^
|
src/mongo/db/query/query_knobs.h:113:20: note: previous declaration is here
|
extern AtomicInt32 internalQueryFacetBufferSizeBytes; // NOLINT
|
^
|
In file included from src/mongo/db/query/query_knobs.cpp:31:
|
src/mongo/db/server_parameters.h:195:5: error: static_assert failed "This type is not supported as a runtime server parameter."
|
static_assert(paramType == ServerParameterType::kStartupOnly ||
|
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
src/mongo/db/query/query_knobs.cpp:70:1: note: in instantiation of template class 'mongo::ExportedServerParameter<mongo::AtomicWord<int>, mongo::ServerParameterType::kStartupAndRuntime>' requested here
|
MONGO_EXPORT_SERVER_PARAMETER(internalQueryFacetBufferSizeBytes, AtomicInt32, 100 * 1024 * 1024);
|
^
|
src/mongo/db/server_parameters.h:246:5: note: expanded from macro 'MONGO_EXPORT_SERVER_PARAMETER'
|
MONGO_EXPORT_SERVER_PARAMETER_IMPL( \
|
^
|
src/mongo/db/server_parameters.h:239:47: note: expanded from macro 'MONGO_EXPORT_SERVER_PARAMETER_IMPL'
|
ExportedServerParameter<TYPE, PARAM_TYPE> _##NAME(ServerParameterSet::getGlobal(), #NAME, &NAME)
|
^
|
<scratch space>:153:1: note: expanded from here
|
_internalQueryFacetBufferSizeBytes
|
^
|
2 errors generated.
|
scons: *** [build/opt/mongo/db/query/query_knobs.os] Error 1
|
scons: building terminated because of errors.
|
build/opt/mongo/db/query/query_knobs.os failed: Error 1
|
|