Skip to content

Параллельные пчёлы обвиняют друг друга: измерение идёт по общему дереву #1116

Description

@gHashTag

Часть #1090.

Доказано прогоном

Две пчелы работали одновременно с непересекающимися границами. Каждую обвинили в записях другой:

06:56:18 queen.observer.outOfBounds  issue=#1098
   paths = rings/SR-02/ChatViewModel.swift          <- файл задачи #1112
07:00:03 queen.observer.outOfBounds  issue=#1112
   paths = BR-OUTPUT/ChatPanelView.swift, tests/swift/ChatSSEEndToEndTest.swift   <- файлы #1098

Ни одна границу не нарушила. Обе получили выговор.

Причина

QueenBranchCommitter.changedPaths спрашивает git, что изменилось в общем рабочем дереве относительно снимка, сделанного при старте пчелы. Пока пчела одна, ответ — её работа. Как только их две, в ответ попадает всё, что успела написать соседка.

Это третье ложное обвинение подряд после #1102 и #1114, и оно опаснее обоих: те были постоянными и потому заметными, это появляется только при параллельной работе — то есть ровно тогда, когда система делает то, ради чего построена.

Коммит в ветку при этом фильтруется по границе (в ветку #1112 попал только её файл), так что чужая работа в чужую ветку не утекла. Врёт именно наблюдатель.

Готово, когда

  • Пчела, писавшая только внутри своей границы, не получает outOfBounds при работающей рядом второй пчеле.
  • Настоящий выход за границу по-прежнему виден, в том числе когда параллельно работает вторая пчела: проверка ломается, если сузить измерение до «ничего не замечать».
  • Доказано прогоном двух одновременных задач, а не рассуждением.

Границы

rings/SR-02/QueenBranchCommitter.swift и rings/SR-02/ChatViewModel.swift.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions