Fix typos

This commit is contained in:
Fedor Korotkiy 2020-04-05 18:19:59 +03:00
parent 6a208e7817
commit e7eb367383
6 changed files with 11 additions and 11 deletions

View file

@ -37,7 +37,7 @@ type Job struct {
// //
// ID вычисляется как хеш от всех входных файлов, команд запуска и хешей зависимых джобов. // ID вычисляется как хеш от всех входных файлов, команд запуска и хешей зависимых джобов.
// //
// Выход джоба целиком опеределяется его ID. Это важное свойство позволяет кешировать // Выход джоба целиком определяется его ID. Это важное свойство позволяет кешировать
// результаты сборки. // результаты сборки.
ID ID ID ID
@ -91,7 +91,7 @@ type Job struct {
- [`distbuild/pkg/api`](./distbuild/pkg/api) - протокол общения между компонентами. - [`distbuild/pkg/api`](./distbuild/pkg/api) - протокол общения между компонентами.
- [`distbuild/pkg/artifact`](./distbuild/pkg/artifact) - кеш артефактов и протокол передачи артефактов между воркерами. - [`distbuild/pkg/artifact`](./distbuild/pkg/artifact) - кеш артефактов и протокол передачи артефактов между воркерами.
- [`distbuild/pkg/filecache`](./distbuild/pkg/filecache) - кеш файлов и протокол передачи файлов между компонентами. - [`distbuild/pkg/filecache`](./distbuild/pkg/filecache) - кеш файлов и протокол передачи файлов между компонентами.
- [`distbuild/pkg/scheduler`](./distbuild/pkg/filecache) - планировщик с экристикой локальности. - [`distbuild/pkg/scheduler`](./distbuild/pkg/filecache) - планировщик с эвристикой локальности.
После того, как все кубики будут готовы, нужно будет соединить их вместе, реализовав `distbuild/pkg/worker`, После того, как все кубики будут готовы, нужно будет соединить их вместе, реализовав `distbuild/pkg/worker`,
`distbuild/pkg/client` и `distbuild/pkg/coordinator`. Код в этих пакетах нужно отлаживать на `distbuild/pkg/client` и `distbuild/pkg/coordinator`. Код в этих пакетах нужно отлаживать на

View file

@ -7,7 +7,7 @@
## Worker <-> Coordinator ## Worker <-> Coordinator
- Worker и Сoordinator общаются через один запрос `POST /heartbeat`. - Worker и Coordinator общаются через один запрос `POST /heartbeat`.
- Worker посылает `HeartbeatRequest` и получает в ответ `HeartbeatResponse`. - Worker посылает `HeartbeatRequest` и получает в ответ `HeartbeatResponse`.
- Запрос и ответ передаются в формате json. - Запрос и ответ передаются в формате json.
- Ошибка обработки heartbeat передаётся как текстовая строка. - Ошибка обработки heartbeat передаётся как текстовая строка.

View file

@ -38,7 +38,7 @@ type HeartbeatRequest struct {
// в данный момент. // в данный момент.
RunningJobs []build.ID RunningJobs []build.ID
// FreeSlots сообщаяет, сколько еще процессов можно запустить на этом воркере. // FreeSlots сообщает, сколько еще процессов можно запустить на этом воркере.
FreeSlots int FreeSlots int
// JobResult сообщает координатору, какие джобы завершили исполнение на этом воркере // JobResult сообщает координатору, какие джобы завершили исполнение на этом воркере
@ -51,7 +51,7 @@ type HeartbeatRequest struct {
// JobSpec описывает джоб, который нужно запустить. // JobSpec описывает джоб, который нужно запустить.
type JobSpec struct { type JobSpec struct {
// SourceFiles задаёт список файлов, который должны присутсововать в директории с исходным кодом при запуске этого джоба. // SourceFiles задаёт список файлов, который должны присутствовать в директории с исходным кодом при запуске этого джоба.
SourceFiles map[build.ID]string SourceFiles map[build.ID]string
// Artifacts задаёт воркеров, с которых можно скачать артефакты необходимые этом джобу. // Artifacts задаёт воркеров, с которых можно скачать артефакты необходимые этом джобу.

View file

@ -6,7 +6,7 @@ type Job struct {
// //
// ID вычисляется как хеш от всех входных файлов, команд запуска и хешей зависимых джобов. // ID вычисляется как хеш от всех входных файлов, команд запуска и хешей зависимых джобов.
// //
// Выход джоба целиком опеределяется его ID. Это важное свойство позволяет кешировать // Выход джоба целиком определяется его ID. Это важное свойство позволяет кешировать
// результаты сборки. // результаты сборки.
ID ID ID ID

View file

@ -14,5 +14,5 @@
**Обратите внимание:** Несколько клиентов могут начать заливать в кеш один и тот же набор файлов. В наивной реализации, **Обратите внимание:** Несколько клиентов могут начать заливать в кеш один и тот же набор файлов. В наивной реализации,
первый клиент залочит файл на запись, а следующие упадут с ошибкой. Ваш код должен обрабатывать эту ситуацию корректно, первый клиент залочит файл на запись, а следующие упадут с ошибкой. Ваш код должен обрабатывать эту ситуацию корректно,
тоесть последующие запросы должны дожидаться, пока первый запрос завершится. Для реализации этой логики то есть последующие запросы должны дожидаться, пока первый запрос завершится. Для реализации этой логики
поведения вам поможет пакет [singleflight](https://godoc.org/golang.org/x/sync/singleflight). поведения вам поможет пакет [singleflight](https://godoc.org/golang.org/x/sync/singleflight).

View file

@ -22,13 +22,13 @@
Ожидающий исполнения джоб всегда находится в первой локальной очереди воркеров, на которых есть Ожидающий исполнения джоб всегда находится в первой локальной очереди воркеров, на которых есть
результаты работы этого джоба. результаты работы этого джоба.
Если джоб ждёт выполнения дольше `CacheTimeout` или если в момент `SchedulerJob` джоба небыло в кеше ни на одном Если джоб ждёт выполнения дольше `CacheTimeout` или если в момент `SchedulerJob` джоба не было в кеше ни на одном
из воркеров, то он находится во всех вторых локальных очередях воркеров, на которых есть хотябы один артефакт из воркеров, то он попадает во все вторые локальные очереди воркеров, на которых есть хотя бы один артефакт
из множества зависимостей этого джоба. из множества зависимостей этого джоба.
Определения первой и второй локальной очереди не зависят от того, в каком порядке в шедулер пришли джобы Определения первой и второй локальной очереди не зависят от того, в каком порядке в шедулер пришли джобы
и информация о кеше артефактов. Тоесть, если джоб уже находится в глобальной очереди, и в этот момент приходит и информация о кеше артефактов. То есть, если джоб уже находится в глобальной очереди, и в этот момент приходит
информация, что этот джоб находится в кеше на `W0`, то джоб должен быть добавлен информация, что этот джоб находится в кеше на воркере `W0`, то джоб должен быть добавлен
в первую локальную очередь `W0`. в первую локальную очередь `W0`.
Если джоб ждёт выполнения дольше `DepTimeout`, то он помещается в глобальную очередь. Если джоб ждёт выполнения дольше `DepTimeout`, то он помещается в глобальную очередь.