[SERVER-27271] rolesInfo command raises System.InvalidOperationException : Duplicate element name 'roles'. Created: 03/Dec/16  Updated: 05/Apr/17  Resolved: 06/Dec/16

Status: Closed
Project: Core Server
Component/s: Admin
Affects Version/s: 3.4.0
Fix Version/s: 3.4.1, 3.5.1

Type: Bug Priority: Major - P3
Reporter: Alexey Butalov Assignee: Spencer Jackson
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Duplicate
is duplicated by SERVER-27302 MongoDB 3.4 returns document with dup... Closed
Related
Backwards Compatibility: Fully Compatible
Backport Completed:
Sprint: Platforms 2017-01-23
Participants:

 Description   

Empty installation of http://downloads.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-3.4.0.zip on Windows 10 x64.

            var clientSettings = new MongoClientSettings();
            clientSettings.Server = new MongoServerAddress("localhost", 27340);
            var server = new MongoServer(MongoServerSettings.FromClientSettings(clientSettings));
            server.Connect();
            var db = server.GetDatabase("admin");
            var command = new CommandDocument("rolesInfo", 1);
            db.RunCommand(command);
            server.Disconnect();

raises System.InvalidOperationException : Duplicate element name 'roles'.
Previous versions of C# driver raise the same error.
All versions work fine on Mongo 3.2, 3.0, 2.6.
Stack trace:

  at MongoDB.Bson.BsonDocument.Add(BsonElement element) in BsonDocument.cs: line 424
   at MongoDB.Bson.BsonDocument.Add(String name, BsonValue value) in BsonDocument.cs: line 586
   at MongoDB.Bson.Serialization.Serializers.BsonDocumentSerializer.DeserializeValue(BsonDeserializationContext context, BsonDeserializationArgs args) in BsonDocumentSerializer.cs: line 67
   at MongoDB.Bson.Serialization.Serializers.BsonValueSerializerBase`1.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) in BsonValueSerializerBase.cs: line 51
   at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize(IBsonSerializer`1 serializer, BsonDeserializationContext context) in IBsonSerializerExtensions.cs: line 49
   at MongoDB.Driver.CommandResultSerializer`1.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) in CommandResultSerializer.cs: line 39
   at MongoDB.Bson.Serialization.IBsonSerializerExtensions.Deserialize(IBsonSerializer`1 serializer, BsonDeserializationContext context) in IBsonSerializerExtensions.cs: line 49
   at MongoDB.Driver.Core.WireProtocol.CommandWireProtocol`1.ProcessReply(ConnectionId connectionId, ReplyMessage`1 reply) in CommandWireProtocol.cs: line 206
   at MongoDB.Driver.Core.WireProtocol.CommandWireProtocol`1.Execute(IConnection connection, CancellationToken cancellationToken) in CommandWireProtocol.cs: line 111
   at MongoDB.Driver.Core.Servers.Server.ServerChannel.ExecuteProtocol(IWireProtocol`1 protocol, CancellationToken cancellationToken) in Server.cs: line 698
   at MongoDB.Driver.Core.Servers.Server.ServerChannel.Command(DatabaseNamespace databaseNamespace, BsonDocument command, IElementNameValidator commandValidator, Func`1 responseHandling, Boolean slaveOk, IBsonSerializer`1 resultSerializer, MessageEncoderSettings messageEncoderSettings, CancellationToken cancellationToken) in Server.cs: line 348
   at MongoDB.Driver.Core.Operations.CommandOperationBase`1.ExecuteProtocol(IChannelHandle channel, ServerDescription serverDescription, ReadPreference readPreference, CancellationToken cancellationToken) in CommandOperationBase.cs: line 181
   at MongoDB.Driver.Core.Operations.CommandOperationBase`1.ExecuteProtocol(IChannelSource channelSource, ReadPreference readPreference, CancellationToken cancellationToken) in CommandOperationBase.cs: line 206
   at MongoDB.Driver.Core.Operations.WriteCommandOperation`1.Execute(IWriteBinding binding, CancellationToken cancellationToken) in WriteCommandOperation.cs: line 57
   at MongoDB.Driver.MongoDatabase.ExecuteWriteOperation(IWriteOperation`1 operation) in MongoDatabase.cs: line 966
   at MongoDB.Driver.MongoDatabase.RunCommandAs(IMongoCommand command, IBsonSerializer`1 resultSerializer, ReadPreference readPreference) in MongoDatabase.cs: line 992
   at MongoDB.Driver.MongoDatabase.RunCommandAs(IMongoCommand command, ReadPreference readPreference) in MongoDatabase.cs: line 837
   at MongoDB.Driver.MongoDatabase.RunCommandAs(IMongoCommand command) in MongoDatabase.cs: line 821
   at MongoDB.Driver.MongoDatabase.RunCommand(IMongoCommand command) in MongoDatabase.cs: line 799

Seems it's a MongoDB server error.



 Comments   
Comment by Githook User [ 06/Dec/16 ]

Author:

{u'username': u'spencerjackson', u'name': u'Spencer Jackson', u'email': u'spencer.jackson@mongodb.com'}

Message: SERVER-27271 rolesInfo returns duplicate "roles" fields
Branch: v3.4
https://github.com/mongodb/mongo/commit/fa06d911194356baeb709bf68c36e52afa9a9968

Comment by Githook User [ 06/Dec/16 ]

Author:

{u'username': u'spencerjackson', u'name': u'Spencer Jackson', u'email': u'spencer.jackson@mongodb.com'}

Message: SERVER-27271 rolesInfo returns duplicate "roles" fields
Branch: master
https://github.com/mongodb/mongo/commit/aa9f01f7ae2aae1d05d76e8b5919f4c729e6c66f

Comment by Spencer Jackson [ 05/Dec/16 ]

While running rolesInfo in the shell, I can observe the server returning redundant 'roles' fields with WireShark. I took a look and I think I found the bug. Thanks!

Comment by Jeffrey Yemin [ 03/Dec/16 ]

Moving issue to SERVER project after confirming in a vanilla deployment of MongoDB 3.4 that the roles array appears twice in the command reply document.

Comment by Alexey Butalov [ 03/Dec/16 ]

P.S. rolesInfo command executed in Shell doesn't raise this error and produces right result.

Generated at Thu Feb 08 04:14:41 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.