shad-go/distbuild/pkg/filecache
2024-06-05 20:36:34 +03:00
..
client.go Updated to the most recent version, which uses go 1.22 2024-06-05 20:36:34 +03:00
client_test.go Updated to the most recent version, which uses go 1.22 2024-06-05 20:36:34 +03:00
filecache.go Updated to the most recent version, which uses go 1.22 2024-06-05 20:36:34 +03:00
filecache_test.go Updated to the most recent version, which uses go 1.22 2024-06-05 20:36:34 +03:00
handler.go go fix old build tags. 2022-03-15 23:49:56 +03:00
README.md Release filecache, artifactcache and tarstream source code 2023-04-26 16:06:56 +04:00

filecache

Пакет filecache занимается хранением кеша файлов и определяет протокол передачи файлов между частями системы.

filecache.Cache управляет файлами и занимается контролем одновременного доступа. Реализация этого типа вам уже дана.

Передача файлов

Тип filecache.Handler реализует handler, позволяющий заливать и скачивать файлы из кеша.

  • Вызов GET /file?id=123 должен возвращать содержимое файла с id=123.
  • Вызов PUT /file?id=123 должен заливать содержимое файла с id=123.

Обратите внимание: Несколько клиентов могут начать заливать в кеш один и тот же набор файлов. В наивной реализации первый клиент залочит файл на запись, а следующие упадут с ошибкой. Ваш код должен обрабатывать эту ситуацию корректно, то есть последующие запросы должны дожидаться, пока первый запрос завершится. Для реализации этой логики поведения вам поможет пакет singleflight.