store: при равной полноте точек побеждает пришедшая доставка
- байтовый порядок канонических форм остался тай-брейком только внутри одной доставки: на живом корпусе он решал 98,8% спорных координат и системно хранил меньшее значение, из-за чего step_count терял род и verify:archive был красным - правило перестало быть коммутативным осознанно, поэтому порядок свёртки приведён к журнальному: проход воркера прекращается на отложенной доставке, а свёртка вне порядка журнала пишет WARN - заведены счётчики PointsHeld и PointsErased — удержание полнотой и единственное направление, в котором правило теряет содержание
This commit is contained in:
@@ -30,8 +30,19 @@ type Outcome struct {
|
||||
// ретеншену трогать нельзя.
|
||||
Partial int
|
||||
// Incomparable — столкновений с несравнимыми наборами полей. На живом потоке
|
||||
// их не было ни разу, и на этом стоит отказ от объединения полей.
|
||||
// они единичны, и на этом стоит отказ от объединения полей.
|
||||
Incomparable int
|
||||
// PointsHeld — точек, удержанных правилом полноты против пришедшей
|
||||
// доставки. Здесь по той же причине, что EntitiesHeld: сходимость
|
||||
// отпечатка удержание не проверяет ПО ПОСТРОЕНИЮ — живой приём и пересборка
|
||||
// пользуются одним правилом и одинаково сойдутся на одинаково удержанной
|
||||
// точке. То есть слишком строгое правило полноты выглядело бы идеальной
|
||||
// сходимостью.
|
||||
PointsHeld int
|
||||
// PointsErased — точек, чьё содержание унесла пришедшая победительница.
|
||||
// Здесь по той же причине, что PointsHeld, и с большим весом: это
|
||||
// единственное направление, в котором правило слияния теряет содержание.
|
||||
PointsErased int
|
||||
// EntitiesHeld — версий сущностей, удержанных правилом «не теряем
|
||||
// содержания». Без него правило слияния сущностей проверить нечем:
|
||||
// сходимость отпечатка его не проверяет ПО ПОСТРОЕНИЮ — живой приём и
|
||||
@@ -54,6 +65,8 @@ func (o *Outcome) Add(other Outcome) {
|
||||
o.FailedOther += other.FailedOther
|
||||
o.Partial += other.Partial
|
||||
o.Incomparable += other.Incomparable
|
||||
o.PointsHeld += other.PointsHeld
|
||||
o.PointsErased += other.PointsErased
|
||||
o.EntitiesHeld += other.EntitiesHeld
|
||||
o.EntitiesDiverging += other.EntitiesDiverging
|
||||
}
|
||||
@@ -118,6 +131,8 @@ func (p Player) Play(ctx context.Context, deliveryID string) (Outcome, error) {
|
||||
out.Partial++
|
||||
}
|
||||
out.Incomparable += st.Incomparable
|
||||
out.PointsHeld += st.PointsHeld
|
||||
out.PointsErased += st.PointsErased
|
||||
out.EntitiesHeld += st.EntitiesHeld
|
||||
out.EntitiesDiverging += st.EntitiesDiverging
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user