Skip to content

Commit

Permalink
Fixed issues
Browse files Browse the repository at this point in the history
  • Loading branch information
jinan-agoda committed Feb 27, 2024
1 parent 6f1c823 commit e5b5a55
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 24 deletions.
21 changes: 0 additions & 21 deletions Agoda.Frameworks.DB.Tests/DbRepositoryTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -667,27 +667,6 @@ public void QueryMultipleAsync_Retry_Failure()
Assert.IsNotNull(_onQueryCompleteEvents[1].Error);
}

[Test]
public async Task ExecuteReaderAsync_CancellationToken_Cancelled()
{
var cancellationToken = new CancellationTokenSource(TimeSpan.FromDays(1));
cancellationToken.Cancel();
var maxAttemptCount = 2;
Assert.ThrowsAsync<TaskCanceledException>(async () => await _db.ExecuteReaderAsync<string>("mobile_ro", "db.v1.sp_foo", 1,
maxAttemptCount,
cancellationToken.Token,
new IDbDataParameter[]
{
new SqlParameter("@param1", "value1"),
new SqlParameter("@param2", "value2")
}, reader => { return Task.FromResult("");})
);

_dbResources.Verify(x => x.ChooseDb("mobile_ro").UpdateWeight(It.IsAny<string>(), false), Times.Exactly(maxAttemptCount));
}


protected class FakeStoredProc : IStoredProc<string, string>
{
public string DbName => "mobile_ro";
Expand Down
7 changes: 5 additions & 2 deletions Agoda.Frameworks.DB/DbRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ public Task<T> ExecuteReaderAsync<T>(
string storedProc,
int timeoutSecs,
int maxAttemptCount,
CancellationToken token,
int taskCancellationTimeOutInMilliSecs,
IDbDataParameter[] parameters,
Func<SqlDataReader, Task<T>> callback)
{
Expand All @@ -313,6 +313,8 @@ public Task<T> ExecuteReaderAsync<T>(
Exception error = null;
try
{
var taskCancellationSource = new CancellationTokenSource();
taskCancellationSource.CancelAfter(taskCancellationTimeOutInMilliSecs);
using (var connection = _generateConnection(connectionStr))
{
if (connection is SqlConnection sqlConn)
Expand All @@ -332,7 +334,8 @@ public Task<T> ExecuteReaderAsync<T>(
CommandTimeout = timeoutSecs
};
sqlCommand.Parameters.AddRange(parameters);
using (var reader = await sqlCommand.ExecuteReaderAsync(token))
using (var reader = await sqlCommand.ExecuteReaderAsync(taskCancellationSource.Token))
{
return await callback(reader);
}
Expand Down
2 changes: 1 addition & 1 deletion Agoda.Frameworks.DB/IDbRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ Task<T> ExecuteReaderAsync<T>(
string storedProc,
int timeoutSecs,
int maxAttemptCount,
CancellationToken token,
int taskCancellationTimeOutInMilliSecs,
IDbDataParameter[] parameters,
Func<SqlDataReader, Task<T>> callback);

Expand Down

0 comments on commit e5b5a55

Please sign in to comment.