Skip to content

Commit a44705b

Browse files
author
Oleksandr Poliakov
committed
pr
1 parent ad157ae commit a44705b

File tree

2 files changed

+60
-20
lines changed

2 files changed

+60
-20
lines changed

src/MongoDB.Driver/Core/Bindings/ICoreSessionExtensions.cs

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,19 @@ public static void AbortTransaction(this ICoreSession session, AbortTransactionO
3737
return;
3838
}
3939

40-
if (session is not CoreSession coreSession)
40+
if (session is CoreSession coreSession)
4141
{
42-
throw new InvalidOperationException("Cannot apply options on non CoreSession.");
42+
coreSession.AbortTransaction(options, cancellationToken);
43+
return;
44+
}
45+
46+
if (session is WrappingCoreSession wrappingCoreSession)
47+
{
48+
wrappingCoreSession.AbortTransaction(options, cancellationToken);
49+
return;
4350
}
4451

45-
coreSession.AbortTransaction(options, cancellationToken);
52+
throw new InvalidOperationException("Cannot apply options on non CoreSession.");
4653
}
4754

4855
/// <summary>
@@ -58,12 +65,17 @@ public static Task AbortTransactionAsync(this ICoreSession session, AbortTransac
5865
return session.AbortTransactionAsync(cancellationToken);
5966
}
6067

61-
if (session is not CoreSession coreSession)
68+
if (session is CoreSession coreSession)
69+
{
70+
return coreSession.AbortTransactionAsync(options, cancellationToken);
71+
}
72+
73+
if (session is WrappingCoreSession wrappingCoreSession)
6274
{
63-
throw new InvalidOperationException("Cannot apply options on non CoreSession.");
75+
return wrappingCoreSession.AbortTransactionAsync(options, cancellationToken);
6476
}
6577

66-
return coreSession.AbortTransactionAsync(options, cancellationToken);
78+
throw new InvalidOperationException("Cannot apply options on non CoreSession.");
6779
}
6880

6981
/// <summary>
@@ -80,12 +92,19 @@ public static void CommitTransaction(this ICoreSession session, CommitTransactio
8092
return;
8193
}
8294

83-
if (session is not CoreSession coreSession)
95+
if (session is CoreSession coreSession)
8496
{
85-
throw new InvalidOperationException("Cannot apply options on non CoreSession.");
97+
coreSession.CommitTransaction(options, cancellationToken);
98+
return;
99+
}
100+
101+
if (session is WrappingCoreSession wrappingCoreSession)
102+
{
103+
wrappingCoreSession.CommitTransaction(options, cancellationToken);
104+
return;
86105
}
87106

88-
coreSession.CommitTransaction(options, cancellationToken);
107+
throw new InvalidOperationException("Cannot apply options on non CoreSession.");
89108
}
90109

91110
/// <summary>
@@ -101,12 +120,17 @@ public static Task CommitTransactionAsync(this ICoreSession session, CommitTrans
101120
return session.CommitTransactionAsync(cancellationToken);
102121
}
103122

104-
if (session is not CoreSession coreSession)
123+
if (session is CoreSession coreSession)
124+
{
125+
return coreSession.CommitTransactionAsync(options, cancellationToken);
126+
}
127+
128+
if (session is WrappingCoreSession wrappingCoreSession)
105129
{
106-
throw new InvalidOperationException("Cannot apply options on non CoreSession.");
130+
return wrappingCoreSession.CommitTransactionAsync(options, cancellationToken);
107131
}
108132

109-
return coreSession.CommitTransactionAsync(options, cancellationToken);
133+
throw new InvalidOperationException("Cannot apply options on non CoreSession.");
110134
}
111135
}
112136
}

src/MongoDB.Driver/Core/Bindings/WrappingCoreSession.cs

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -182,17 +182,25 @@ public ICoreSession Wrapped
182182

183183
// public methods
184184
/// <inheritdoc />
185-
public virtual void AbortTransaction(CancellationToken cancellationToken = default(CancellationToken))
185+
public void AbortTransaction(CancellationToken cancellationToken = default)
186+
=> AbortTransaction(null, cancellationToken);
187+
188+
// TODO: CSOT: Make it public when CSOT will be ready for GA
189+
internal virtual void AbortTransaction(AbortTransactionOptions options, CancellationToken cancellationToken = default)
186190
{
187191
ThrowIfDisposed();
188-
_wrapped.AbortTransaction(cancellationToken);
192+
_wrapped.AbortTransaction(options, cancellationToken);
189193
}
190194

191195
/// <inheritdoc />
192-
public virtual Task AbortTransactionAsync(CancellationToken cancellationToken = default(CancellationToken))
196+
public Task AbortTransactionAsync(CancellationToken cancellationToken = default)
197+
=> AbortTransactionAsync(null, cancellationToken);
198+
199+
// TODO: CSOT: Make it public when CSOT will be ready for GA
200+
internal Task AbortTransactionAsync(AbortTransactionOptions options, CancellationToken cancellationToken = default)
193201
{
194202
ThrowIfDisposed();
195-
return _wrapped.AbortTransactionAsync(cancellationToken);
203+
return _wrapped.AbortTransactionAsync(options, cancellationToken);
196204
}
197205

198206
/// <inheritdoc />
@@ -223,17 +231,25 @@ public long AdvanceTransactionNumber()
223231
}
224232

225233
/// <inheritdoc />
226-
public virtual void CommitTransaction(CancellationToken cancellationToken = default(CancellationToken))
234+
public void CommitTransaction(CancellationToken cancellationToken = default)
235+
=> CommitTransaction(null, cancellationToken);
236+
237+
// TODO: CSOT: Make it public when CSOT will be ready for GA
238+
internal void CommitTransaction(CommitTransactionOptions options, CancellationToken cancellationToken = default)
227239
{
228240
ThrowIfDisposed();
229-
_wrapped.CommitTransaction(cancellationToken);
241+
_wrapped.CommitTransaction(options, cancellationToken);
230242
}
231243

232244
/// <inheritdoc />
233-
public virtual Task CommitTransactionAsync(CancellationToken cancellationToken = default(CancellationToken))
245+
public Task CommitTransactionAsync(CancellationToken cancellationToken = default)
246+
=> CommitTransactionAsync(null, cancellationToken);
247+
248+
// TODO: CSOT: Make it public when CSOT will be ready for GA
249+
internal Task CommitTransactionAsync(CommitTransactionOptions options, CancellationToken cancellationToken = default(CancellationToken))
234250
{
235251
ThrowIfDisposed();
236-
return _wrapped.CommitTransactionAsync(cancellationToken);
252+
return _wrapped.CommitTransactionAsync(options, cancellationToken);
237253
}
238254

239255
/// <inheritdoc />

0 commit comments

Comments
 (0)