Skip to content

Commit 45a070f

Browse files
author
rstam
committed
CSHARP-627: remove FireAndForget keyword.
1 parent 659b2e4 commit 45a070f

19 files changed

+333
-628
lines changed

Driver/Core/CommandResults/SafeModeResult.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
namespace MongoDB.Driver
2222
{
2323
/// <summary>
24-
/// Represents the results of an operation performed with a WriteConcern other than FireAndForget.
24+
/// Represents the results of an operation performed with WriteConcern enabled.
2525
/// </summary>
2626
[Serializable]
2727
[Obsolete("Use WriteConcernResult instead.")]

Driver/Core/CommandResults/WriteConcernResult.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
namespace MongoDB.Driver
2222
{
2323
/// <summary>
24-
/// Represents the results of an operation performed with a WriteConcern other than FireAndForget.
24+
/// Represents the results of an operation performed with WriteConcern enabled.
2525
/// </summary>
2626
[Serializable]
2727
#pragma warning disable 618

Driver/Core/MongoClientSettings.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ public static MongoClientSettings FromConnectionStringBuilder(MongoConnectionStr
421421
clientSettings.VerifySslCertificate = builder.VerifySslCertificate;
422422
clientSettings.WaitQueueSize = builder.ComputedWaitQueueSize;
423423
clientSettings.WaitQueueTimeout = builder.WaitQueueTimeout;
424-
clientSettings.WriteConcern = builder.GetWriteConcern(false); // fireAndForget default for MongoClientSettings is false
424+
clientSettings.WriteConcern = builder.GetWriteConcern(true); // WriteConcern is enabled by default for MongoClient
425425
return clientSettings;
426426
}
427427

@@ -451,7 +451,7 @@ public static MongoClientSettings FromUrl(MongoUrl url)
451451
clientSettings.VerifySslCertificate = url.VerifySslCertificate;
452452
clientSettings.WaitQueueSize = url.ComputedWaitQueueSize;
453453
clientSettings.WaitQueueTimeout = url.WaitQueueTimeout;
454-
clientSettings.WriteConcern = url.GetWriteConcern(false); // fireAndForget default for MongoClientSettings is false
454+
clientSettings.WriteConcern = url.GetWriteConcern(true); // WriteConcern is enabled by default for MongoClient
455455
return clientSettings;
456456
}
457457

Driver/Core/MongoCollection.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,7 +1132,7 @@ public virtual IEnumerable<WriteConcernResult> InsertBatch(
11321132
{
11331133
var writeConcern = options.WriteConcern ?? _settings.WriteConcern;
11341134

1135-
List<WriteConcernResult> results = (writeConcern.FireAndForget) ? null : new List<WriteConcernResult>();
1135+
List<WriteConcernResult> results = (writeConcern.Enabled) ? new List<WriteConcernResult>() : null;
11361136

11371137
var writerSettings = GetWriterSettings(connection);
11381138
using (var message = new MongoInsertMessage(writerSettings, FullName, options.CheckElementNames, options.Flags))
@@ -1171,13 +1171,13 @@ public virtual IEnumerable<WriteConcernResult> InsertBatch(
11711171
{
11721172
byte[] lastDocument = message.RemoveLastDocument();
11731173
var intermediateResult = connection.SendMessage(message, writeConcern, _database.Name);
1174-
if (!writeConcern.FireAndForget) { results.Add(intermediateResult); }
1174+
if (writeConcern.Enabled) { results.Add(intermediateResult); }
11751175
message.ResetBatch(lastDocument);
11761176
}
11771177
}
11781178

11791179
var finalResult = connection.SendMessage(message, writeConcern, _database.Name);
1180-
if (!writeConcern.FireAndForget) { results.Add(finalResult); }
1180+
if (writeConcern.Enabled) { results.Add(finalResult); }
11811181

11821182
return results;
11831183
}

Driver/Core/MongoConnectionStringBuilder.cs

Lines changed: 7 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public class MongoConnectionStringBuilder : DbConnectionStringBuilder
3939
{ "connecttimeout", "connectTimeout" },
4040
{ "connecttimeoutms", "connectTimeout" },
4141
{ "database", "database" },
42-
{ "fireandforget", "fireAndForget" },
4342
{ "fsync", "fsync" },
4443
{ "guids", "uuidRepresentation" },
4544
{ "ipv6", "ipv6" },
@@ -81,7 +80,6 @@ public class MongoConnectionStringBuilder : DbConnectionStringBuilder
8180
private ConnectionMode _connectionMode;
8281
private TimeSpan _connectTimeout;
8382
private string _databaseName;
84-
private bool? _fireAndForget;
8583
private bool? _fsync;
8684
private GuidRepresentation _guidRepresentation;
8785
private bool _ipv6;
@@ -187,30 +185,6 @@ public string DatabaseName
187185
}
188186
}
189187

190-
/// <summary>
191-
/// Gets or sets the fireAndForget value.
192-
/// </summary>
193-
public bool? FireAndForget
194-
{
195-
get { return _fireAndForget; }
196-
set
197-
{
198-
if (value != null)
199-
{
200-
if (_safe != null)
201-
{
202-
throw new InvalidOperationException("FireAndForget and Safe are mutually exclusive.");
203-
}
204-
if (value.Value && AnyWriteConcernSettingsAreSet())
205-
{
206-
throw new InvalidOperationException("FireAndForget cannot be set to true if any other write concern values have been set.");
207-
}
208-
}
209-
_fireAndForget = value;
210-
base["fireAndForget"] = (value == null) ? null : XmlConvert.ToString(value.Value);
211-
}
212-
}
213-
214188
/// <summary>
215189
/// Gets or sets the FSync component of the write concern.
216190
/// </summary>
@@ -219,7 +193,6 @@ public bool? FSync
219193
get { return _fsync; }
220194
set
221195
{
222-
if (value != null) { EnsureFireAndForgetIsNotTrue("FSync"); }
223196
_fsync = value;
224197
base["fsync"] = (value == null) ? null : XmlConvert.ToString(value.Value);
225198
}
@@ -259,7 +232,6 @@ public bool? Journal
259232
get { return _journal; }
260233
set
261234
{
262-
if (value != null) { EnsureFireAndForgetIsNotTrue("Journal"); }
263235
_journal = value;
264236
base["journal"] = (value == null) ? null : XmlConvert.ToString(value.Value);
265237
}
@@ -407,18 +379,14 @@ public string ReplicaSetName
407379
/// <summary>
408380
/// Gets or sets the safe value.
409381
/// </summary>
410-
[Obsolete("Use FireAndForget instead.")]
382+
[Obsolete("Use W=0 or W=1 instead.")]
411383
public bool? Safe
412384
{
413385
get { return _safe; }
414386
set
415387
{
416388
if (value != null)
417389
{
418-
if (_fireAndForget != null)
419-
{
420-
throw new InvalidOperationException("FireAndForget and Safe are mutually exclusive.");
421-
}
422390
if (!value.Value && AnyWriteConcernSettingsAreSet())
423391
{
424392
throw new InvalidOperationException("Safe cannot be set to false if any other write concern values have been set.");
@@ -432,12 +400,12 @@ public bool? Safe
432400
/// <summary>
433401
/// Gets or sets the SafeMode to use.
434402
/// </summary>
435-
[Obsolete("Use FireAndForget, FSync, Journal, W and WTimeout instead.")]
403+
[Obsolete("Use FSync, Journal, W and WTimeout instead.")]
436404
public SafeMode SafeMode
437405
{
438406
get
439407
{
440-
if (_fireAndForget != null || _safe != null || AnyWriteConcernSettingsAreSet())
408+
if (_safe != null || AnyWriteConcernSettingsAreSet())
441409
{
442410
#pragma warning disable 618
443411
return new SafeMode(GetWriteConcern(false));
@@ -450,7 +418,6 @@ public SafeMode SafeMode
450418
}
451419
set
452420
{
453-
FireAndForget = null;
454421
Safe = null;
455422
FSync = null;
456423
Journal = null;
@@ -607,7 +574,6 @@ public WriteConcern.WValue W
607574
get { return _w; }
608575
set
609576
{
610-
if (value != null) { EnsureFireAndForgetIsNotTrue("W"); }
611577
_w = value;
612578
base["w"] = (value == null) ? null : value.ToString();
613579
}
@@ -676,7 +642,6 @@ public TimeSpan? WTimeout
676642
get { return _wTimeout; }
677643
set
678644
{
679-
if (value != null) { EnsureFireAndForgetIsNotTrue("WTimeout"); }
680645
if (value != null && value.Value < TimeSpan.Zero)
681646
{
682647
throw new ArgumentOutOfRangeException("value", "WTimeout must be greater than or equal to zero.");
@@ -722,9 +687,6 @@ public override object this[string keyword]
722687
case "database":
723688
DatabaseName = (string)value;
724689
break;
725-
case "fireandforget":
726-
FireAndForget = Convert.ToBoolean(value);
727-
break;
728690
case "fsync":
729691
FSync = Convert.ToBoolean(value);
730692
break;
@@ -870,23 +832,13 @@ public override bool ContainsKey(string keyword)
870832
}
871833

872834
/// <summary>
873-
/// Returns a WriteConcern value based on this instance's settings and a fire and forget default.
835+
/// Returns a WriteConcern value based on this instance's settings and a default enabled value.
874836
/// </summary>
875-
/// <param name="fireAndForgetDefault">The fire and forget default.</param>
837+
/// <param name="enabledDefault">The default enabled value.</param>
876838
/// <returns>A WriteConcern.</returns>
877-
public WriteConcern GetWriteConcern(bool fireAndForgetDefault)
839+
public WriteConcern GetWriteConcern(bool enabledDefault)
878840
{
879-
var fireAndForget = fireAndForgetDefault;
880-
if (_fireAndForget != null) { fireAndForget = _fireAndForget.Value; }
881-
else if (_safe != null) { fireAndForget = !_safe.Value; }
882-
else if (AnyWriteConcernSettingsAreSet()) { fireAndForget = false; }
883-
884-
var writeConcern = new WriteConcern { FireAndForget = fireAndForget };
885-
if (_fsync != null) { writeConcern.FSync = _fsync.Value; }
886-
if (_journal != null) { writeConcern.Journal = _journal.Value; }
887-
if (_w != null) { writeConcern.W = _w; }
888-
if (_wTimeout != null) { writeConcern.WTimeout = _wTimeout.Value; }
889-
return writeConcern;
841+
return WriteConcern.Create(enabledDefault, _safe, _fsync, _journal, _w, _wTimeout);
890842
}
891843

892844
/// <summary>
@@ -905,20 +857,6 @@ private bool AnyWriteConcernSettingsAreSet()
905857
return _fsync != null || _journal != null || _w != null || _wTimeout != null;
906858
}
907859

908-
private void EnsureFireAndForgetIsNotTrue(string propertyName)
909-
{
910-
if (_fireAndForget != null && _fireAndForget.Value)
911-
{
912-
var message = string.Format("{0} cannot be set when FireAndForget is true.", propertyName);
913-
throw new InvalidOperationException(message);
914-
}
915-
if (_safe != null && !_safe.Value)
916-
{
917-
var message = string.Format("{0} cannot be set when Safe is false.", propertyName);
918-
throw new InvalidOperationException(message);
919-
}
920-
}
921-
922860
private string GetServersString(IEnumerable<MongoServerAddress> servers)
923861
{
924862
var sb = new StringBuilder();
@@ -990,7 +928,6 @@ private void ResetValues()
990928
_connectionMode = ConnectionMode.Automatic;
991929
_connectTimeout = MongoDefaults.ConnectTimeout;
992930
_databaseName = null;
993-
_fireAndForget = null;
994931
_fsync = null;
995932
_guidRepresentation = MongoDefaults.GuidRepresentation;
996933
_ipv6 = false;

Driver/Core/MongoServerSettings.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,7 @@ public static MongoServerSettings FromConnectionStringBuilder(MongoConnectionStr
580580
serverSettings.WaitQueueSize = builder.ComputedWaitQueueSize;
581581
serverSettings.WaitQueueTimeout = builder.WaitQueueTimeout;
582582
#pragma warning disable 618
583-
serverSettings.WriteConcern = builder.GetWriteConcern(!MongoDefaults.SafeMode.Enabled);
583+
serverSettings.WriteConcern = builder.GetWriteConcern(MongoDefaults.SafeMode.Enabled);
584584
#pragma warning restore
585585
return serverSettings;
586586
}
@@ -612,7 +612,7 @@ public static MongoServerSettings FromUrl(MongoUrl url)
612612
serverSettings.WaitQueueSize = url.ComputedWaitQueueSize;
613613
serverSettings.WaitQueueTimeout = url.WaitQueueTimeout;
614614
#pragma warning disable 618
615-
serverSettings.WriteConcern = url.GetWriteConcern(!MongoDefaults.SafeMode.Enabled);
615+
serverSettings.WriteConcern = url.GetWriteConcern(MongoDefaults.SafeMode.Enabled);
616616
#pragma warning restore
617617
return serverSettings;
618618
}

Driver/Core/MongoUrl.cs

Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ public class MongoUrl : IEquatable<MongoUrl>
6363
private readonly TimeSpan _connectTimeout;
6464
private readonly string _databaseName;
6565
private readonly MongoCredentials _defaultCredentials;
66-
private readonly bool? _fireAndForget;
6766
private readonly bool? _fsync;
6867
private readonly GuidRepresentation _guidRepresentation;
6968
private readonly bool _ipv6;
@@ -100,7 +99,6 @@ public MongoUrl(string url)
10099
_connectTimeout = builder.ConnectTimeout;
101100
_databaseName = builder.DatabaseName;
102101
_defaultCredentials = builder.DefaultCredentials;
103-
_fireAndForget = builder.FireAndForget;
104102
_fsync = builder.FSync;
105103
_guidRepresentation = builder.GuidRepresentation;
106104
_ipv6 = builder.IPv6;
@@ -181,14 +179,6 @@ public MongoCredentials DefaultCredentials
181179
get { return _defaultCredentials; }
182180
}
183181

184-
/// <summary>
185-
/// Gets the fireAndForget value.
186-
/// </summary>
187-
public bool? FireAndForget
188-
{
189-
get { return _fireAndForget; }
190-
}
191-
192182
/// <summary>
193183
/// Gets the FSync component of the write concern.
194184
/// </summary>
@@ -272,6 +262,7 @@ public string ReplicaSetName
272262
/// <summary>
273263
/// Gets the safe value.
274264
/// </summary>
265+
[Obsolete("Use W=0 or W=1 instead.")]
275266
public bool? Safe
276267
{
277268
get { return _safe; }
@@ -280,12 +271,12 @@ public bool? Safe
280271
/// <summary>
281272
/// Gets the SafeMode to use.
282273
/// </summary>
283-
[Obsolete("Use FireAndForget, FSync, Journal, W and WTimeout instead.")]
274+
[Obsolete("Use FSync, Journal, W and WTimeout instead.")]
284275
public SafeMode SafeMode
285276
{
286277
get
287278
{
288-
if (_fireAndForget != null || _safe != null || AnyWriteConcernSettingsAreSet())
279+
if (_safe != null || AnyWriteConcernSettingsAreSet())
289280
{
290281
#pragma warning disable 618
291282
return new SafeMode(GetWriteConcern(false));
@@ -503,23 +494,13 @@ public override int GetHashCode()
503494
}
504495

505496
/// <summary>
506-
/// Returns a WriteConcern value based on this instance's settings and a fire and forget default.
497+
/// Returns a WriteConcern value based on this instance's settings and a default enabled value.
507498
/// </summary>
508-
/// <param name="fireAndForgetDefault">The fire and forget default.</param>
499+
/// <param name="enabledDefault">The default enabled value.</param>
509500
/// <returns>A WriteConcern.</returns>
510-
public WriteConcern GetWriteConcern(bool fireAndForgetDefault)
511-
{
512-
var fireAndForget = fireAndForgetDefault;
513-
if (_fireAndForget != null) { fireAndForget = _fireAndForget.Value; }
514-
else if (_safe != null) { fireAndForget = !_safe.Value; }
515-
else if (AnyWriteConcernSettingsAreSet()) { fireAndForget = false; }
516-
517-
var writeConcern = new WriteConcern { FireAndForget = fireAndForget };
518-
if (_fsync != null) { writeConcern.FSync = _fsync.Value; }
519-
if (_journal != null) { writeConcern.Journal = _journal.Value; }
520-
if (_w != null) { writeConcern.W = _w; }
521-
if (_wTimeout != null) { writeConcern.WTimeout = _wTimeout.Value; }
522-
return writeConcern;
501+
public WriteConcern GetWriteConcern(bool enabledDefault)
502+
{
503+
return WriteConcern.Create(enabledDefault, _safe, _fsync, _journal, _w, _wTimeout);
523504
}
524505

525506
/// <summary>

0 commit comments

Comments
 (0)