-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Closed
Description
CAP/src/DotNetCore.CAP.PostgreSql/IMonitoringApi.PostgreSql.cs
Lines 32 to 47 in c3ec6e8
| public async Task<MediumMessage> GetPublishedMessageAsync(long id) | |
| { | |
| var sql = | |
| $"SELECT * FROM {_pubName} WHERE \"Id\"={id} FOR UPDATE SKIP LOCKED"; | |
| using var connection = new NpgsqlConnection(_options.Value.ConnectionString); | |
| return await connection.QueryFirstOrDefaultAsync<MediumMessage>(sql); | |
| } | |
| public async Task<MediumMessage> GetReceivedMessageAsync(long id) | |
| { | |
| var sql = | |
| $"SELECT * FROM {_recName} WHERE \"Id\"={id} FOR UPDATE SKIP LOCKED"; | |
| using var connection = new NpgsqlConnection(_options.Value.ConnectionString); | |
| return await connection.QueryFirstOrDefaultAsync<MediumMessage>(sql); | |
| } |
CAP/src/DotNetCore.CAP.PostgreSql/IDataStorage.PostgreSql.cs
Lines 55 to 67 in c3ec6e8
| public async Task ChangeReceiveStateAsync(MediumMessage message, StatusName state) | |
| { | |
| var sql = | |
| $"UPDATE {_recName} SET \"Retries\"=@Retries,\"ExpiresAt\"=@ExpiresAt,\"StatusName\"=@StatusName WHERE \"Id\"=@Id"; | |
| using var connection = new NpgsqlConnection(_options.Value.ConnectionString); | |
| await connection.ExecuteAsync(sql, new | |
| { | |
| Id = long.Parse(message.DbId), | |
| message.Retries, | |
| message.ExpiresAt, | |
| StatusName = state.ToString("G") | |
| }); | |
| } |
This make fail to re-execute messages from dashboard
System.ArgumentNullException: Value cannot be null. (Parameter 's')
at System.Int64.Parse(String s)
at DotNetCore.CAP.PostgreSql.PostgreSqlDataStorage.ChangeReceiveStateAsync(MediumMessage message, StatusName state)
at DotNetCore.CAP.Internal.SubscribeDispatcher.ExecuteWithoutRetryAsync(MediumMessage message, ConsumerExecutorDescriptor descriptor, CancellationToken cancellationToken)
At line 62 you are trying parse a null value
This small change fix the issue . Do you accept a pull request?
public async Task<MediumMessage> GetPublishedMessageAsync(long id)
{
var sql =
$"SELECT *, \"Id\" AS \"DbId\" FROM {_pubName} WHERE \"Id\"={id} FOR UPDATE SKIP LOCKED";
using var connection = new NpgsqlConnection(_options.Value.ConnectionString);
return await connection.QueryFirstOrDefaultAsync<MediumMessage>(sql);
}
public async Task<MediumMessage> GetReceivedMessageAsync(long id)
{
var sql =
$"SELECT *, \"Id\" AS \"DbId\" FROM {_recName} WHERE \"Id\"={id} FOR UPDATE SKIP LOCKED";
using var connection = new NpgsqlConnection(_options.Value.ConnectionString);
return await connection.QueryFirstOrDefaultAsync<MediumMessage>(sql);
}
Reactions are currently unavailable