|
13 | 13 | using System.Diagnostics;
|
14 | 14 | using System.Linq;
|
15 | 15 | using System.Runtime.CompilerServices;
|
| 16 | +using System.Runtime.ExceptionServices; |
16 | 17 | using System.Runtime.Serialization;
|
17 | 18 | using System.Text;
|
18 | 19 | using System.Threading.Tasks;
|
@@ -800,8 +801,15 @@ private void FailChunkExecution(ChunkExecutionFailure message)
|
800 | 801 | replayAll.ReplyTo.Tell(new EventReplayFailure(cause));
|
801 | 802 | break;
|
802 | 803 |
|
| 804 | + case SelectCurrentPersistenceIds select: |
| 805 | + // SqlJournal handled this failure case by using the default PipeTo failure |
| 806 | + // handler which sends a Status.Failure message back to the sender. |
| 807 | + select.ReplyTo.Tell(new Status.Failure(cause)); |
| 808 | + break; |
| 809 | + |
803 | 810 | default:
|
804 |
| - throw new Exception($"Unknown persistence journal request type [{request.GetType()}]"); |
| 811 | + Log.Error(cause, $"Batching failure not reported to original sender. Unknown batched persistence journal request type [{request.GetType()}]."); |
| 812 | + break; |
805 | 813 | }
|
806 | 814 | }
|
807 | 815 |
|
@@ -1096,10 +1104,12 @@ protected virtual async Task HandleSelectCurrentPersistenceIds(SelectCurrentPers
|
1096 | 1104 | command.Parameters.Clear();
|
1097 | 1105 | AddParameter(command, "@Ordering", DbType.Int64, message.Offset);
|
1098 | 1106 |
|
1099 |
| - var reader = await command.ExecuteReaderAsync(); |
1100 |
| - while (await reader.ReadAsync()) |
| 1107 | + using (var reader = await command.ExecuteReaderAsync()) |
1101 | 1108 | {
|
1102 |
| - result.Add(reader.GetString(0)); |
| 1109 | + while (await reader.ReadAsync()) |
| 1110 | + { |
| 1111 | + result.Add(reader.GetString(0)); |
| 1112 | + } |
1103 | 1113 | }
|
1104 | 1114 |
|
1105 | 1115 | message.ReplyTo.Tell(new CurrentPersistenceIds(result, highestOrderingNumber));
|
|
0 commit comments