Summary
The MongoDB.Driver connects to the database on Big-endian machines (s390x in my case) and operations like collection create and delete work as expected but the connector crashes when attempting an insert or update operation.
How to Reproduce
using System;using MongoDB.Bson;using MongoDB.Driver; namespace Program { class Program { static void Main(string[] args) { MongoClient dbClient = new MongoClient("mongodb://127.0.0.1:27017/"); var database = dbClient.GetDatabase("sample_training"); var collection = database.GetCollection<BsonDocument>("grades"); var document = new BsonDocument { { "student_id", 1 }, { "scores", new BsonArray { new BsonDocument{ {"type", "exam"}, {"score", 88.12334193287023 } }, new BsonDocument\{ {"type", "quiz"}, {"score", 74.92381029342834 } }, new BsonDocument\{ {"type", "homework"}, {"score", 89.97929384290324 } }, new BsonDocument\{ {"type", "homework"}, {"score", 82.12931030513218 } } } }, { "class_id", 480} }; collection.InsertOne(document); } } }
Additional Background
Error message:
Unhandled Exception: System.TimeoutException: A timeout occurred after 30000ms selecting a server using CompositeServerSelector{ Selectors = MongoDB.Driver.MongoClient+AreSessionsSupportedServerSelector, LatencyLimitingServerSelector{ AllowedLatencyRange = 00:00:00.0150000 }, OperationsCountServerSelector }. Client view of cluster state is { ClusterId : "1", Type : "Unknown", State : "Disconnected", Servers : [{ ServerId: "{ ClusterId : 1, EndPoint : "127.0.0.1:27017" }", EndPoint: "127.0.0.1:27017", ReasonChanged: "Heartbeat", State: "Disconnected", ServerVersion: , TopologyVersion: , Type: "Unknown", HeartbeatException: "MongoDB.Driver.MongoConnectionException: An exception occurred while opening a connection to the server. ---> MongoDB.Driver.MongoConnectionException: An exception occurred while receiving a message from the server. ---> System.FormatException: The size of the message is invalid. at MongoDB.Driver.Core.Connections.BinaryConnection.EnsureMessageSizeIsValid(Int32 messageSize) at MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBuffer(CancellationToken cancellationToken) --- End of inner exception stack trace --- at MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBuffer(CancellationToken cancellationToken) at MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBuffer(Int32 responseTo, CancellationToken cancellationToken) --- End of stack trace from previous location --- at MongoDB.Driver.Core.Connections.BinaryConnection.Dropbox.RemoveMessage(Int32 responseTo) at MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveBuffer(Int32 responseTo, CancellationToken cancellationToken) at MongoDB.Driver.Core.Connections.BinaryConnection.ReceiveMessage(Int32 responseTo, IMessageEncoderSelector encoderSelector, MessageEncoderSettings messageEncoderSettings, CancellationToken cancellationToken) at MongoDB.Driver.Core.WireProtocol.CommandUsingQueryMessageWireProtocol`1[[MongoDB.Bson.BsonDocument, MongoDB.Bson, Version=2.19.2.0, Culture=neutral, PublicKeyToken=null]].Execute(IConnection connection, CancellationToken cancellationToken) at MongoDB.Driver.Core.WireProtocol.CommandWireProtocol`1[[MongoDB.Bson.BsonDocument, MongoDB.Bson, Version=2.19.2.0, Culture=neutral, PublicKeyToken=null]].Execute(IConnection connection, CancellationToken cancellationToken) at MongoDB.Driver.Core.Connections.HelloHelper.GetResult(IConnection connection, CommandWireProtocol`1 helloProtocol, CancellationToken cancellationToken) at MongoDB.Driver.Core.Connections.ConnectionInitializer.SendHello(IConnection connection, CancellationToken cancellationToken) at MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelper(CancellationToken cancellationToken) --- End of inner exception stack trace --- at MongoDB.Driver.Core.Connections.BinaryConnection.OpenHelper(CancellationToken cancellationToken) at MongoDB.Driver.Core.Connections.BinaryConnection.Open(CancellationToken cancellationToken) at MongoDB.Driver.Core.Servers.ServerMonitor.InitializeConnection(CancellationToken cancellationToken) at MongoDB.Driver.Core.Servers.ServerMonitor.Heartbeat(CancellationToken cancellationToken)", LastHeartbeatTimestamp: "2023-06-12T14:03:57.6330997Z", LastUpdateTimestamp: "2023-06-12T14:03:57.6331002Z" }] }. at MongoDB.Driver.Core.Clusters.Cluster.ThrowTimeoutException(IServerSelector selector, ClusterDescription description) at MongoDB.Driver.Core.Clusters.Cluster.WaitForDescriptionChangedHelper.HandleCompletedTask(Task completedTask) at MongoDB.Driver.Core.Clusters.Cluster.WaitForDescriptionChanged(IServerSelector selector, ClusterDescription description, Task descriptionChangedTask, TimeSpan timeout, CancellationToken cancellationToken) at MongoDB.Driver.Core.Clusters.Cluster.SelectServer(IServerSelector selector, CancellationToken cancellationToken) at MongoDB.Driver.MongoClient.AreSessionsSupportedAfterServerSelection(CancellationToken cancellationToken) at MongoDB.Driver.MongoClient.AreSessionsSupported(CancellationToken cancellationToken) at MongoDB.Driver.MongoClient.StartImplicitSession(CancellationToken cancellationToken) at MongoDB.Driver.OperationExecutor.StartImplicitSession(CancellationToken cancellationToken) at MongoDB.Driver.MongoCollectionImpl`1[[MongoDB.Bson.BsonDocument, MongoDB.Bson, Version=2.19.2.0, Culture=neutral, PublicKeyToken=null]].UsingImplicitSession[BulkWriteResult`1](Func`2 func, CancellationToken cancellationToken) at MongoDB.Driver.MongoCollectionImpl`1[[MongoDB.Bson.BsonDocument, MongoDB.Bson, Version=2.19.2.0, Culture=neutral, PublicKeyToken=null]].BulkWrite(IEnumerable`1 requests, BulkWriteOptions options, CancellationToken cancellationToken) at MongoDB.Driver.MongoCollectionBase`1.<>c__DisplayClass68_0[[MongoDB.Bson.BsonDocument, MongoDB.Bson, Version=2.19.2.0, Culture=neutral, PublicKeyToken=null]].<InsertOne>b__0(IEnumerable`1 requests, BulkWriteOptions bulkWriteOptions) at MongoDB.Driver.MongoCollectionBase`1[[MongoDB.Bson.BsonDocument, MongoDB.Bson, Version=2.19.2.0, Culture=neutral, PublicKeyToken=null]].InsertOne(BsonDocument document, InsertOneOptions options, Action`2 bulkWrite) at MongoDB.Driver.MongoCollectionBase`1[[MongoDB.Bson.BsonDocument, MongoDB.Bson, Version=2.19.2.0, Culture=neutral, PublicKeyToken=null]].InsertOne(BsonDocument document, InsertOneOptions options, CancellationToken cancellationToken) at MongoDBCRUDExample.Program.Main(String[] args)
I have a fix ready for the bug.