Skip to content

Commit abf6f70

Browse files
committed
Various fixes
1 parent 2657680 commit abf6f70

File tree

5 files changed

+48
-15
lines changed

5 files changed

+48
-15
lines changed

src/MongoDB.Driver/Core/Operations/ClientBulkWriteOperation.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ internal sealed class ClientBulkWriteOperation : RetryableWriteCommandOperationB
3636
private readonly Dictionary<int, BsonValue> _idsMap = new();
3737
private readonly BsonDocument _let;
3838
private readonly RenderArgs<BsonDocument> _renderArgs;
39-
private readonly IBsonSerializationDomain _serializationDomain;
4039
private readonly IBatchableSource<BulkWriteModel> _writeModels;
4140

4241
public ClientBulkWriteOperation(
@@ -45,15 +44,14 @@ public ClientBulkWriteOperation(
4544
MessageEncoderSettings messageEncoderSettings,
4645
RenderArgs<BsonDocument> renderArgs,
4746
IBsonSerializationDomain serializationDomain)
48-
: base(DatabaseNamespace.Admin, messageEncoderSettings)
47+
: base(DatabaseNamespace.Admin, messageEncoderSettings, serializationDomain)
4948
{
5049
Ensure.IsNotNullOrEmpty(writeModels, nameof(writeModels));
5150
_writeModels = new BatchableSource<BulkWriteModel>(writeModels, true);
5251
_bypassDocumentValidation = options?.BypassDocumentValidation;
5352
_errorsOnly = !(options?.VerboseResult).GetValueOrDefault(false);
5453
_let = options?.Let;
5554
_renderArgs = renderArgs;
56-
_serializationDomain = Ensure.IsNotNull(serializationDomain, nameof(serializationDomain));
5755
Comment = options?.Comment;
5856
IsOrdered = (options?.IsOrdered).GetValueOrDefault(true);
5957
WriteConcern = options?.WriteConcern;
@@ -284,7 +282,7 @@ private IAsyncCursor<BsonDocument> GetIndividualResultsCursor(RetryableWriteCont
284282
0,
285283
BsonDocumentSerializer.Instance,
286284
MessageEncoderSettings,
287-
_serializationDomain);
285+
SerializationDomain);
288286
}
289287

290288
private void PopulateBulkWriteResponse(BsonDocument bulkWriteResponse, BulkWriteRawResult bulkWriteResult)

src/MongoDB.Driver/Core/Operations/RetryableDeleteCommandOperation.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,23 @@ internal sealed class RetryableDeleteCommandOperation : RetryableWriteCommandOpe
3737
public RetryableDeleteCommandOperation(
3838
CollectionNamespace collectionNamespace,
3939
BatchableSource<DeleteRequest> deletes,
40-
MessageEncoderSettings messageEncoderSettings)
41-
: base(Ensure.IsNotNull(collectionNamespace, nameof(collectionNamespace)).DatabaseNamespace, messageEncoderSettings)
40+
MessageEncoderSettings messageEncoderSettings,
41+
IBsonSerializationDomain serializationDomain)
42+
: base(Ensure.IsNotNull(collectionNamespace, nameof(collectionNamespace)).DatabaseNamespace, messageEncoderSettings, serializationDomain)
4243
{
4344
_collectionNamespace = Ensure.IsNotNull(collectionNamespace, nameof(collectionNamespace));
4445
_deletes = Ensure.IsNotNull(deletes, nameof(deletes));
4546
}
4647

48+
//EXIT
49+
public RetryableDeleteCommandOperation(
50+
CollectionNamespace collectionNamespace,
51+
BatchableSource<DeleteRequest> deletes,
52+
MessageEncoderSettings messageEncoderSettings)
53+
: this(collectionNamespace, deletes, messageEncoderSettings, BsonSerializer.DefaultSerializationDomain)
54+
{
55+
}
56+
4757
public BsonDocument Let
4858
{
4959
get { return _let; }

src/MongoDB.Driver/Core/Operations/RetryableInsertCommandOperation.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,26 @@ public RetryableInsertCommandOperation(
3737
CollectionNamespace collectionNamespace,
3838
BatchableSource<TDocument> documents,
3939
IBsonSerializer<TDocument> documentSerializer,
40-
MessageEncoderSettings messageEncoderSettings)
41-
: base(Ensure.IsNotNull(collectionNamespace, nameof(collectionNamespace)).DatabaseNamespace, messageEncoderSettings)
40+
MessageEncoderSettings messageEncoderSettings,
41+
IBsonSerializationDomain serializationDomain)
42+
: base(Ensure.IsNotNull(collectionNamespace, nameof(collectionNamespace)).DatabaseNamespace, messageEncoderSettings, serializationDomain)
4243
{
4344
_collectionNamespace = Ensure.IsNotNull(collectionNamespace, nameof(collectionNamespace));
4445
_documents = Ensure.IsNotNull(documents, nameof(documents));
4546
_documentSerializer = Ensure.IsNotNull(documentSerializer, nameof(documentSerializer));
4647
}
4748

49+
//EXIT
50+
public RetryableInsertCommandOperation(
51+
CollectionNamespace collectionNamespace,
52+
BatchableSource<TDocument> documents,
53+
IBsonSerializer<TDocument> documentSerializer,
54+
MessageEncoderSettings messageEncoderSettings)
55+
: this(collectionNamespace, documents, documentSerializer, messageEncoderSettings,
56+
BsonSerializer.DefaultSerializationDomain)
57+
{
58+
}
59+
4860
public bool? BypassDocumentValidation
4961
{
5062
get { return _bypassDocumentValidation; }

src/MongoDB.Driver/Core/Operations/RetryableUpdateCommandOperation.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,23 @@ internal sealed class RetryableUpdateCommandOperation : RetryableWriteCommandOpe
3838
public RetryableUpdateCommandOperation(
3939
CollectionNamespace collectionNamespace,
4040
BatchableSource<UpdateRequest> updates,
41-
MessageEncoderSettings messageEncoderSettings)
42-
: base(Ensure.IsNotNull(collectionNamespace, nameof(collectionNamespace)).DatabaseNamespace, messageEncoderSettings)
41+
MessageEncoderSettings messageEncoderSettings,
42+
IBsonSerializationDomain serializationDomain)
43+
: base(Ensure.IsNotNull(collectionNamespace, nameof(collectionNamespace)).DatabaseNamespace, messageEncoderSettings, serializationDomain)
4344
{
4445
_collectionNamespace = Ensure.IsNotNull(collectionNamespace, nameof(collectionNamespace));
4546
_updates = Ensure.IsNotNull(updates, nameof(updates));
4647
}
4748

49+
//EXIT
50+
public RetryableUpdateCommandOperation(
51+
CollectionNamespace collectionNamespace,
52+
BatchableSource<UpdateRequest> updates,
53+
MessageEncoderSettings messageEncoderSettings)
54+
: this(collectionNamespace, updates, messageEncoderSettings, BsonSerializer.DefaultSerializationDomain)
55+
{
56+
}
57+
4858
public bool? BypassDocumentValidation
4959
{
5060
get { return _bypassDocumentValidation; }

src/MongoDB.Driver/Core/Operations/RetryableWriteCommandOperationBase.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,17 @@ internal abstract class RetryableWriteCommandOperationBase : IWriteOperation<Bso
3737
private int? _maxBatchCount;
3838
private readonly MessageEncoderSettings _messageEncoderSettings;
3939
private bool _retryRequested;
40+
private IBsonSerializationDomain _serializationDomain;
4041
private WriteConcern _writeConcern = WriteConcern.Acknowledged;
4142

4243
public RetryableWriteCommandOperationBase(
4344
DatabaseNamespace databaseNamespace,
44-
MessageEncoderSettings messageEncoderSettings)
45+
MessageEncoderSettings messageEncoderSettings,
46+
IBsonSerializationDomain serializationDomain)
4547
{
4648
_databaseNamespace = Ensure.IsNotNull(databaseNamespace, nameof(databaseNamespace));
4749
_messageEncoderSettings = Ensure.IsNotNull(messageEncoderSettings, nameof(messageEncoderSettings));
50+
_serializationDomain = Ensure.IsNotNull(serializationDomain, nameof(serializationDomain));
4851
}
4952

5053
public BsonValue Comment
@@ -81,6 +84,8 @@ public bool RetryRequested
8184
set { _retryRequested = value; }
8285
}
8386

87+
public IBsonSerializationDomain SerializationDomain => _serializationDomain;
88+
8489
public WriteConcern WriteConcern
8590
{
8691
get { return _writeConcern; }
@@ -116,8 +121,6 @@ public virtual Task<BsonDocument> ExecuteAsync(OperationContext operationContext
116121
public BsonDocument ExecuteAttempt(OperationContext operationContext, RetryableWriteContext context, int attempt, long? transactionNumber)
117122
{
118123
var args = GetCommandArgs(context, attempt, transactionNumber);
119-
var serializationDomain = args.MessageEncoderSettings.GetOrDefault<IBsonSerializationDomain>(
120-
MessageEncoderSettingsName.SerializationDomain, BsonSerializer.DefaultSerializationDomain);
121124
return context.Channel.Command<BsonDocument>(
122125
operationContext,
123126
context.ChannelSource.Session,
@@ -131,14 +134,14 @@ public BsonDocument ExecuteAttempt(OperationContext operationContext, RetryableW
131134
args.ResponseHandling,
132135
BsonDocumentSerializer.Instance,
133136
args.MessageEncoderSettings,
134-
serializationDomain);
137+
_serializationDomain);
135138
}
136139

137140
public Task<BsonDocument> ExecuteAttemptAsync(OperationContext operationContext, RetryableWriteContext context, int attempt, long? transactionNumber)
138141
{
139142
var args = GetCommandArgs(context, attempt, transactionNumber);
140143
var serializationDomain = args.MessageEncoderSettings.GetOrDefault<IBsonSerializationDomain>(
141-
MessageEncoderSettingsName.SerializationDomain, null);
144+
MessageEncoderSettingsName.SerializationDomain, BsonSerializer.DefaultSerializationDomain);
142145
return context.Channel.CommandAsync<BsonDocument>(
143146
operationContext,
144147
context.ChannelSource.Session,

0 commit comments

Comments
 (0)