Что нового
- Расширена
СтратегияПредохранителя: добавлена оконная оценка ошибок по проценту неуспешных вызовов среди последних завершённых операций (PR #11). - Добавлен модуль
ПричиныРазмыканияПредохранителясо значениямиПоследовательныеОшибки,ПроцентОшибок,ПробныйВызов(PR #11). КонтекстРазмыканияПредохранителятеперь содержит причину размыкания и метрики окна оценки: количество вызовов, количество ошибок и процент ошибок (PR #11).- В
СтратегияПредохранителяполуразомкнутое состояние стало настраиваемым: можно задать лимит одновременных пробных вызовов и порог успешных проб для закрытия (PR #11). СтратегияОграниченияВызововтеперь может ожидать освобождения разрешения на вызов до заданного лимита времени; ожидание учитывает сигнал кооперативного прерывания (PR #10).- Добавлен режим равномерного распределения вызовов по интервалу через
ТипыОграниченияВызовов:РавномерноеРаспределение(PR #10). СтратегияОграниченияПараллелизмаполучила настройку максимального ожидания свободного слота:УстановитьМаксимальноеОжиданиеСлота()иМаксимальноеОжиданиеСлота()(PR #9).СтратегияЗапасногоСценарияполучила условие выполнения fallback-сценария черезУстановитьУсловиеЗапасногоСценария()(PR #12).
Исправления поведения
СтратегияПредохранителякорректно обрабатывает поздние параллельные вызовы: поздний успех больше не закрывает уже разомкнутый предохранитель, поздняя ошибка обычного вызова не считается ошибкой пробного вызова, обработчик размыкания вызывается только при фактическом переходе вРазомкнут, а результат устаревшей пробы не влияет на текущее состояние предохранителя (PR #1).СтратегияЗапасногоСценариябольше не скрывает кооперативное прерывание основной операции и не запускает fallback при запрошенном прерывании (PR #2).СтратегияЗапасногоСценарияфиксирует обработчик fallback на момент запускаПрименить, поэтому изменение обработчика во время выполнения операции не влияет на текущий fallback (PR #4).- Геттер
КоличествоВызововЗаИнтервал()вСтратегияОграниченияВызововбольше не запускает окно лимитера, если реальных вызовов ещё не было (PR #3). - Ожидающие операции в
СтратегияОграниченияПараллелизмазавершаются поСигналПрерыванияОперациибез ожидания освобождения слота; отменённые ожидания удаляются из очереди и не блокируют следующий FIFO-элемент (PR #6). СтратегияПовторатеперь прерывает задержку перед следующей попыткой поСигналПрерыванияОперации(PR #8).
Документация и примеры
- Обновлена документация по стратегиям отказоустойчивости (PR #13).
- Добавлены и переработаны примеры для предохранителя, ограничения вызовов, ограничения параллелизма и запасного сценария (commit
cd64b2b). - Обновлены отчёты бенчмарков (commit
5651115).
Full Changelog: v0.2.0...v0.3.0