отработаны находки ревью кода
Триаж свёл 62 сырые находки девяти проходов к 33 причинам: 3 блокера, 4 «сейчас», 2 развилки. Все закрыты регрессионными тестами. - схема точки сна определяется по самой точке, а не по индексу в исходном массиве: одна пропущенная точка меняла эпизод и сводку местами - доставка сворачивается одной транзакцией: частичное состояние было недетерминированным (восемь прогонов — семь состояний) - граница размера на распакованном теле: 400 КиБ gzip разворачивались в 400 МиБ мимо max_body_mb - столкновение — расхождение канонических форм, а не байтов; WARN с координатами объекта; payload без HTML-экранирования - выравнивание по местной метке: получасовые зоны уводили часовую выгрузку в minute - доставка из одних суточных сводок больше не отвергается целиком - единицы не переписываются молча; счётчик считает сохранённые точки - все выходы Fold логируются, исход пишется на переживающем отмену контексте Четыре развилки вынесены блокерами в беклог.
This commit is contained in:
+17
-1
@@ -31,7 +31,7 @@ func assignLayers(groups []group, meta Meta, res *Result) error {
|
||||
if delivery == "" {
|
||||
delivery = res.HeaderLayer
|
||||
}
|
||||
if delivery == "" {
|
||||
if delivery == "" && needsDerivedLayer(groups) {
|
||||
return ErrLayerUnknown
|
||||
}
|
||||
}
|
||||
@@ -56,6 +56,22 @@ func assignLayers(groups []group, meta Meta, res *Result) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// needsDerivedLayer говорит, осталась ли в доставке хоть одна группа, которой
|
||||
// слой действительно надо вывести.
|
||||
//
|
||||
// Доставка, состоящая из одних суточных сводок сна, слоя не требует — он у них
|
||||
// назначен схемой. Отказ ради неё был бы необратим: исход детерминирован, и
|
||||
// пересборка из архива повторила бы его вечно, то есть автоматизация,
|
||||
// настроенная только на сон, не донесла бы данных никогда.
|
||||
func needsDerivedLayer(groups []group) bool {
|
||||
for _, g := range groups {
|
||||
if !g.fixed {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// deliveryLayer — самый мелкий слой среди плотных метрик доставки. Пустой,
|
||||
// если плотных метрик нет.
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user