shad-go/distbuild/pkg/filecache/README.md
Fedor Korotkiy e7eb367383 Fix typos
2020-04-05 18:19:59 +03:00

18 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# filecache
Пакет `filecache` занимается хранением кеша файлов и определяет протокол передачи файлов между частями системы.
`filecache.Cache` управляет файлами и занимается контролем одновременного доступа. Вы можете реализовать этот
тип поверх `*artifact.Cache`, поведение требуется точно такое же.
## Передача файлов
Тип `filecache.Handler` реализует handler, позволяющий заливать и скачивать файлы из кеша.
- Вызов `GET /file?id=123` должен возвращать содержимое файла с `id=123`.
- Вызов `PUT /file?id=123` должен заливать содержимое файла с `id=123`.
**Обратите внимание:** Несколько клиентов могут начать заливать в кеш один и тот же набор файлов. В наивной реализации,
первый клиент залочит файл на запись, а следующие упадут с ошибкой. Ваш код должен обрабатывать эту ситуацию корректно,
то есть последующие запросы должны дожидаться, пока первый запрос завершится. Для реализации этой логики
поведения вам поможет пакет [singleflight](https://godoc.org/golang.org/x/sync/singleflight).