diff --git a/distbuild/README.md b/distbuild/README.md index 965abe1..d5f6582 100644 --- a/distbuild/README.md +++ b/distbuild/README.md @@ -37,7 +37,7 @@ type Job struct { // // ID вычисляется как хеш от всех входных файлов, команд запуска и хешей зависимых джобов. // - // Выход джоба целиком опеределяется его ID. Это важное свойство позволяет кешировать + // Выход джоба целиком определяется его ID. Это важное свойство позволяет кешировать // результаты сборки. ID ID @@ -91,7 +91,7 @@ type Job struct { - [`distbuild/pkg/api`](./distbuild/pkg/api) - протокол общения между компонентами. - [`distbuild/pkg/artifact`](./distbuild/pkg/artifact) - кеш артефактов и протокол передачи артефактов между воркерами. - [`distbuild/pkg/filecache`](./distbuild/pkg/filecache) - кеш файлов и протокол передачи файлов между компонентами. -- [`distbuild/pkg/scheduler`](./distbuild/pkg/filecache) - планировщик с экристикой локальности. +- [`distbuild/pkg/scheduler`](./distbuild/pkg/filecache) - планировщик с эвристикой локальности. После того, как все кубики будут готовы, нужно будет соединить их вместе, реализовав `distbuild/pkg/worker`, `distbuild/pkg/client` и `distbuild/pkg/coordinator`. Код в этих пакетах нужно отлаживать на diff --git a/distbuild/pkg/api/README.md b/distbuild/pkg/api/README.md index a44f939..6eaf493 100644 --- a/distbuild/pkg/api/README.md +++ b/distbuild/pkg/api/README.md @@ -7,7 +7,7 @@ ## Worker <-> Coordinator -- Worker и Сoordinator общаются через один запрос `POST /heartbeat`. +- Worker и Coordinator общаются через один запрос `POST /heartbeat`. - Worker посылает `HeartbeatRequest` и получает в ответ `HeartbeatResponse`. - Запрос и ответ передаются в формате json. - Ошибка обработки heartbeat передаётся как текстовая строка. diff --git a/distbuild/pkg/api/heartbeat.go b/distbuild/pkg/api/heartbeat.go index 228573e..dd6b09b 100644 --- a/distbuild/pkg/api/heartbeat.go +++ b/distbuild/pkg/api/heartbeat.go @@ -38,7 +38,7 @@ type HeartbeatRequest struct { // в данный момент. RunningJobs []build.ID - // FreeSlots сообщаяет, сколько еще процессов можно запустить на этом воркере. + // FreeSlots сообщает, сколько еще процессов можно запустить на этом воркере. FreeSlots int // JobResult сообщает координатору, какие джобы завершили исполнение на этом воркере @@ -51,7 +51,7 @@ type HeartbeatRequest struct { // JobSpec описывает джоб, который нужно запустить. type JobSpec struct { - // SourceFiles задаёт список файлов, который должны присутсововать в директории с исходным кодом при запуске этого джоба. + // SourceFiles задаёт список файлов, который должны присутствовать в директории с исходным кодом при запуске этого джоба. SourceFiles map[build.ID]string // Artifacts задаёт воркеров, с которых можно скачать артефакты необходимые этом джобу. diff --git a/distbuild/pkg/build/graph.go b/distbuild/pkg/build/graph.go index 9538ac7..c598883 100644 --- a/distbuild/pkg/build/graph.go +++ b/distbuild/pkg/build/graph.go @@ -6,7 +6,7 @@ type Job struct { // // ID вычисляется как хеш от всех входных файлов, команд запуска и хешей зависимых джобов. // - // Выход джоба целиком опеределяется его ID. Это важное свойство позволяет кешировать + // Выход джоба целиком определяется его ID. Это важное свойство позволяет кешировать // результаты сборки. ID ID diff --git a/distbuild/pkg/filecache/README.md b/distbuild/pkg/filecache/README.md index d912560..c3dfb47 100644 --- a/distbuild/pkg/filecache/README.md +++ b/distbuild/pkg/filecache/README.md @@ -14,5 +14,5 @@ **Обратите внимание:** Несколько клиентов могут начать заливать в кеш один и тот же набор файлов. В наивной реализации, первый клиент залочит файл на запись, а следующие упадут с ошибкой. Ваш код должен обрабатывать эту ситуацию корректно, -тоесть последующие запросы должны дожидаться, пока первый запрос завершится. Для реализации этой логики +то есть последующие запросы должны дожидаться, пока первый запрос завершится. Для реализации этой логики поведения вам поможет пакет [singleflight](https://godoc.org/golang.org/x/sync/singleflight). diff --git a/distbuild/pkg/scheduler/README.md b/distbuild/pkg/scheduler/README.md index e989df6..8ffac5b 100644 --- a/distbuild/pkg/scheduler/README.md +++ b/distbuild/pkg/scheduler/README.md @@ -22,13 +22,13 @@ Ожидающий исполнения джоб всегда находится в первой локальной очереди воркеров, на которых есть результаты работы этого джоба. -Если джоб ждёт выполнения дольше `CacheTimeout` или если в момент `SchedulerJob` джоба небыло в кеше ни на одном -из воркеров, то он находится во всех вторых локальных очередях воркеров, на которых есть хотябы один артефакт +Если джоб ждёт выполнения дольше `CacheTimeout` или если в момент `SchedulerJob` джоба не было в кеше ни на одном +из воркеров, то он попадает во все вторые локальные очереди воркеров, на которых есть хотя бы один артефакт из множества зависимостей этого джоба. Определения первой и второй локальной очереди не зависят от того, в каком порядке в шедулер пришли джобы -и информация о кеше артефактов. Тоесть, если джоб уже находится в глобальной очереди, и в этот момент приходит -информация, что этот джоб находится в кеше на `W0`, то джоб должен быть добавлен +и информация о кеше артефактов. То есть, если джоб уже находится в глобальной очереди, и в этот момент приходит +информация, что этот джоб находится в кеше на воркере `W0`, то джоб должен быть добавлен в первую локальную очередь `W0`. Если джоб ждёт выполнения дольше `DepTimeout`, то он помещается в глобальную очередь.