Skip to content

Commit cbc4610

Browse files
CSHARP-4436: .NET/C# driver fails to create new mongo client in xamarin. (#1036)
1 parent d7b8144 commit cbc4610

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

src/MongoDB.Driver.Core/Core/Misc/DnsClientWrapper.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,42 +31,42 @@ internal class DnsClientWrapper : IDnsResolver
3131
#endregion
3232

3333
// private fields
34-
private readonly LookupClient _lookupClient;
34+
private readonly Lazy<LookupClient> _lookupClient;
3535

3636
// constructors
3737
private DnsClientWrapper()
3838
{
39-
_lookupClient = new LookupClient();
39+
_lookupClient = new Lazy<LookupClient>(() => new LookupClient());
4040
}
4141

4242
// public methods
4343
public List<SrvRecord> ResolveSrvRecords(string service, CancellationToken cancellationToken)
4444
{
4545
Ensure.IsNotNull(service, nameof(service));
4646
cancellationToken.ThrowIfCancellationRequested();
47-
var response = _lookupClient.Query(service, QueryType.SRV, QueryClass.IN);
47+
var response = _lookupClient.Value.Query(service, QueryType.SRV, QueryClass.IN);
4848
return GetSrvRecords(response);
4949
}
5050

5151
public async Task<List<SrvRecord>> ResolveSrvRecordsAsync(string service, CancellationToken cancellationToken)
5252
{
5353
Ensure.IsNotNull(service, nameof(service));
54-
var response = await _lookupClient.QueryAsync(service, QueryType.SRV, QueryClass.IN, cancellationToken).ConfigureAwait(false);
54+
var response = await _lookupClient.Value.QueryAsync(service, QueryType.SRV, QueryClass.IN, cancellationToken).ConfigureAwait(false);
5555
return GetSrvRecords(response);
5656
}
5757

5858
public List<TxtRecord> ResolveTxtRecords(string domainName, CancellationToken cancellationToken)
5959
{
6060
Ensure.IsNotNull(domainName, nameof(domainName));
6161
cancellationToken.ThrowIfCancellationRequested();
62-
var response = _lookupClient.Query(domainName, QueryType.TXT, QueryClass.IN);
62+
var response = _lookupClient.Value.Query(domainName, QueryType.TXT, QueryClass.IN);
6363
return GetTxtRecords(response);
6464
}
6565

6666
public async Task<List<TxtRecord>> ResolveTxtRecordsAsync(string domainName, CancellationToken cancellationToken)
6767
{
6868
Ensure.IsNotNull(domainName, nameof(domainName));
69-
var response = await _lookupClient.QueryAsync(domainName, QueryType.TXT, QueryClass.IN, cancellationToken).ConfigureAwait(false);
69+
var response = await _lookupClient.Value.QueryAsync(domainName, QueryType.TXT, QueryClass.IN, cancellationToken).ConfigureAwait(false);
7070
return GetTxtRecords(response);
7171
}
7272

tests/MongoDB.Driver.Core.Tests/Core/Clusters/DnsClientWrapperTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ namespace MongoDB.Driver.Core.Clusters
2929
public class DnsClientWrapperTests
3030
{
3131
[Fact]
32-
public void constructor_should_initialize_instance()
32+
public void constructor_should_initialize_lazy_instance()
3333
{
3434
var subject = CreateSubject();
3535

36-
subject._lookupClient().Should().NotBeNull();
36+
subject._lookupClient().IsValueCreated.Should().BeFalse();
3737
}
3838

3939
[Fact]
@@ -186,6 +186,6 @@ private DnsClientWrapper CreateSubject()
186186

187187
internal static class DnsClientWrapperReflector
188188
{
189-
public static LookupClient _lookupClient(this IDnsResolver dnsResolver) => (LookupClient)Reflector.GetFieldValue(dnsResolver, nameof(_lookupClient));
189+
public static Lazy<LookupClient> _lookupClient(this IDnsResolver dnsResolver) => (Lazy<LookupClient>)Reflector.GetFieldValue(dnsResolver, nameof(_lookupClient));
190190
}
191191
}

0 commit comments

Comments
 (0)