Чтобы прояснить: этот вопрос о Магазине событий Грега Янга.
Я попытался мягко удалить поток, который содержал 2 события:
var slice = con.ReadStreamEventsBackwardAsync(streamName, 0, 1, resolveLinkTos: true).Result;
es.DeleteStreamAsync(streamName, slice.LastEventNumber, hardDelete: false).Wait();
Этот вызовБыл успешным, и расследование магазина выявило новое событие метаданных.Это событие было типа $metadata
и содержало:
{
"$tb": 9223372036854775807
}
$tb
обозначает «усечение до» и описано в Удаление потоков и событий .Документация гласит:
Когда вы удаляете поток, его TruncateBefore или $ tb устанавливается на номер текущего события последнего потока.
Какой (как вы можете видеть вJSON выше) не тот случай.Усечение перед установлено на long.MaxVaue
.Хотя это кажется плохим поведением, это не настоящая проблема. Проблема в том, что я больше не могу записывать в поток. Вызов следующего фрагмента успешно завершен, но не добавляет событие в поток:
await es.AppendToStreamAsync(persistenceId, expectedVersion < 0 ? ExpectedVersion.NoStream : expectedVersion, events);
В приведенном выше фрагменте expectedVersion
установлено на -1
.Метаданные мягкого удаленного потока говорят:
Stream is deleted: False
Meta Stream version: 0
Truncate before: 9223372036854775807
Max count:
Max age:
И чтение фрагмента из последнего события потока показывает:
Last Event number: 1
Next Event number: -1
Status: StreamNotFound
Кто-нибудь сталкивался с такой же проблемой и мог найтирешение, которое позволяет продолжать добавлять события в удаленные потоки?