-
Type:
Bug
-
Resolution: Gone away
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Server Programmability
-
Programmability 2025-07-21, Programmability 2025-08-04
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Given an IDL defined in the namespace mongo (i.e. set to global.cpp_namespace) that defines a customer type with the serializer/deserializer functions in a nested namespace (e.g., mongo::util), the generated code doesn't take into account the specified namespace for the serializer/deserializer functions, causing a symbol not found error at compiling time.
More in details, given the following IDL:
global:
cpp_namespace: "mongo"
...
types:
status:
bson_serialization_type: any
cpp_type: "mongo::Status"
serializer: "mongo::util::serializeStatusToBSON"
deserializer: "mongo::util::deserializeStatusFromBSON"
...
structs:
CoordinatorMetadata
...
fields:
error:
type: status
The compiler generates the following code:
namespace mongo {
...
void CoordinatorMetadata::serialize(BSONObjBuilder* builder) const {
...
if (_error) {
serializeStatusToBSON((*_error), kErrorFieldName, builder);
}
...
}}
The problem is that the function serializeStatusToBSON is defined in the namespace mongo::util, not in mongo.
- is related to
-
SERVER-102771 Add BSON/IDL serialization and deserialization for mongo::Status objects
-
- Closed
-