Fix typos
This commit is contained in:
parent
6a208e7817
commit
e7eb367383
6 changed files with 11 additions and 11 deletions
|
@ -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`. Код в этих пакетах нужно отлаживать на
|
||||||
|
|
|
@ -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 передаётся как текстовая строка.
|
||||||
|
|
|
@ -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 задаёт воркеров, с которых можно скачать артефакты необходимые этом джобу.
|
||||||
|
|
|
@ -6,7 +6,7 @@ type Job struct {
|
||||||
//
|
//
|
||||||
// ID вычисляется как хеш от всех входных файлов, команд запуска и хешей зависимых джобов.
|
// ID вычисляется как хеш от всех входных файлов, команд запуска и хешей зависимых джобов.
|
||||||
//
|
//
|
||||||
// Выход джоба целиком опеределяется его ID. Это важное свойство позволяет кешировать
|
// Выход джоба целиком определяется его ID. Это важное свойство позволяет кешировать
|
||||||
// результаты сборки.
|
// результаты сборки.
|
||||||
ID ID
|
ID ID
|
||||||
|
|
||||||
|
|
|
@ -14,5 +14,5 @@
|
||||||
|
|
||||||
**Обратите внимание:** Несколько клиентов могут начать заливать в кеш один и тот же набор файлов. В наивной реализации,
|
**Обратите внимание:** Несколько клиентов могут начать заливать в кеш один и тот же набор файлов. В наивной реализации,
|
||||||
первый клиент залочит файл на запись, а следующие упадут с ошибкой. Ваш код должен обрабатывать эту ситуацию корректно,
|
первый клиент залочит файл на запись, а следующие упадут с ошибкой. Ваш код должен обрабатывать эту ситуацию корректно,
|
||||||
тоесть последующие запросы должны дожидаться, пока первый запрос завершится. Для реализации этой логики
|
то есть последующие запросы должны дожидаться, пока первый запрос завершится. Для реализации этой логики
|
||||||
поведения вам поможет пакет [singleflight](https://godoc.org/golang.org/x/sync/singleflight).
|
поведения вам поможет пакет [singleflight](https://godoc.org/golang.org/x/sync/singleflight).
|
||||||
|
|
|
@ -22,13 +22,13 @@
|
||||||
Ожидающий исполнения джоб всегда находится в первой локальной очереди воркеров, на которых есть
|
Ожидающий исполнения джоб всегда находится в первой локальной очереди воркеров, на которых есть
|
||||||
результаты работы этого джоба.
|
результаты работы этого джоба.
|
||||||
|
|
||||||
Если джоб ждёт выполнения дольше `CacheTimeout` или если в момент `SchedulerJob` джоба небыло в кеше ни на одном
|
Если джоб ждёт выполнения дольше `CacheTimeout` или если в момент `SchedulerJob` джоба не было в кеше ни на одном
|
||||||
из воркеров, то он находится во всех вторых локальных очередях воркеров, на которых есть хотябы один артефакт
|
из воркеров, то он попадает во все вторые локальные очереди воркеров, на которых есть хотя бы один артефакт
|
||||||
из множества зависимостей этого джоба.
|
из множества зависимостей этого джоба.
|
||||||
|
|
||||||
Определения первой и второй локальной очереди не зависят от того, в каком порядке в шедулер пришли джобы
|
Определения первой и второй локальной очереди не зависят от того, в каком порядке в шедулер пришли джобы
|
||||||
и информация о кеше артефактов. Тоесть, если джоб уже находится в глобальной очереди, и в этот момент приходит
|
и информация о кеше артефактов. То есть, если джоб уже находится в глобальной очереди, и в этот момент приходит
|
||||||
информация, что этот джоб находится в кеше на `W0`, то джоб должен быть добавлен
|
информация, что этот джоб находится в кеше на воркере `W0`, то джоб должен быть добавлен
|
||||||
в первую локальную очередь `W0`.
|
в первую локальную очередь `W0`.
|
||||||
|
|
||||||
Если джоб ждёт выполнения дольше `DepTimeout`, то он помещается в глобальную очередь.
|
Если джоб ждёт выполнения дольше `DepTimeout`, то он помещается в глобальную очередь.
|
||||||
|
|
Loading…
Reference in a new issue