|
|
|
@ -27,13 +27,20 @@ |
|
|
|
Путь, квота и TTL читаются при старте чат-сервиса; изменение требует его restart. |
|
|
|
Путь, квота и TTL читаются при старте чат-сервиса; изменение требует его restart. |
|
|
|
enabled проверяется на каждом запросе. Лимит одинаков для каждого UID отдельно, |
|
|
|
enabled проверяется на каждом запросе. Лимит одинаков для каждого UID отдельно, |
|
|
|
размер UID суммируется по всем группам на этом сервере. Значение в МиБ (1024*1024 байт). |
|
|
|
размер UID суммируется по всем группам на этом сервере. Значение в МиБ (1024*1024 байт). |
|
|
|
Счётчики used/reserved хранятся в памяти дискового worker и восстанавливаются с диска. |
|
|
|
Счётчики used/reserved/files/directories хранятся в памяти дискового worker и восстанавливаются с диска только при старте. |
|
|
|
Каталоги не учитываются. Сохранённые файлы удалённых участников также занимают квоту. |
|
|
|
Каталоги не занимают байтовую квоту. files/directories считают опубликованные файлы и каталоги внутри деревьев UID |
|
|
|
|
|
|
|
по всем группам; корни групп, корни UID и .uploads исключены. Пустой опубликованный файл считается файлом. |
|
|
|
|
|
|
|
Сохранённые файлы удалённых участников также занимают квоту. |
|
|
|
При начале загрузки резервируется размер нового файла или положительный прирост при замене. |
|
|
|
При начале загрузки резервируется размер нового файла или положительный прирост при замене. |
|
|
|
WRITE не изменяет used; COMMIT обновляет used на разницу размеров и освобождает резерв. |
|
|
|
WRITE не изменяет used; COMMIT обновляет used на разницу размеров и освобождает резерв. |
|
|
|
ABORT/Cancel/TTL освобождают резерв после удаления temp; REMOVE вычитает размер файла. |
|
|
|
ABORT/Cancel/TTL освобождают резерв после удаления temp; REMOVE вычитает размер файла. |
|
|
|
Переименование внутри UID и операции с каталогами не меняют размер. |
|
|
|
Переименование внутри UID не меняет размер и числа объектов. Новый COMMIT увеличивает files на 1; |
|
|
|
Повторы BEGIN/COMMIT/REMOVE не меняют учёт повторно. |
|
|
|
замена существующего файла, включая нулевой размер, сохраняет files. MKDIR увеличивает directories на 1, |
|
|
|
|
|
|
|
REMOVE уменьшает соответствующий счётчик. Для mkdir учитывается факт создания даже при последующей ошибке sync. |
|
|
|
|
|
|
|
BEGIN/WRITE/ABORT/Cancel/TTL не увеличивают files: temp не опубликован. |
|
|
|
|
|
|
|
Все изменения корректируют счётчики инкрементально, без обхода каталога пользователя; |
|
|
|
|
|
|
|
QUOTA только читает их из памяти. LIST выполняет свой обычный обход для отображения записей, не пересчитывая статистику. |
|
|
|
|
|
|
|
Повторы BEGIN/COMMIT/MKDIR/REMOVE не меняют учёт повторно. |
|
|
|
Уже превышенная квота не удаляет данные: чтение, удаление и уменьшение файла доступны, |
|
|
|
Уже превышенная квота не удаляет данные: чтение, удаление и уменьшение файла доступны, |
|
|
|
новый положительный прирост запрещён. Физический temp может занимать больше места, |
|
|
|
новый положительный прирост запрещён. Физический temp может занимать больше места, |
|
|
|
чем резерв прироста; нехватка места файловой системы остаётся отдельной I/O-ошибкой. |
|
|
|
чем резерв прироста; нехватка места файловой системы остаётся отдельной I/O-ошибкой. |
|
|
|
@ -51,11 +58,11 @@ src == owner. Удалённые записи и source=1 (плейсхолде |
|
|
|
Открытый fd/UUID загрузки не отменяют повторную проверку членства. |
|
|
|
Открытый fd/UUID загрузки не отменяют повторную проверку членства. |
|
|
|
Файлы удалённого участника сохраняются на диске, но через сервис не доступны. |
|
|
|
Файлы удалённого участника сохраняются на диске, но через сервис не доступны. |
|
|
|
|
|
|
|
|
|
|
|
Wire, версия 3 |
|
|
|
Wire, версия 4 |
|
|
|
-------------- |
|
|
|
-------------- |
|
|
|
|
|
|
|
|
|
|
|
Все числа LE, без сырых структур и padding. Фиксированный заголовок 125 байт: |
|
|
|
Все числа LE, без сырых структур и padding. Фиксированный заголовок 125 байт: |
|
|
|
0 protocol_version:u8 = 3 |
|
|
|
0 protocol_version:u8 = 4 |
|
|
|
1 kind:u8 (1=request, 2=response) |
|
|
|
1 kind:u8 (1=request, 2=response) |
|
|
|
2 command:u8 |
|
|
|
2 command:u8 |
|
|
|
3 status:u16 (request=0) |
|
|
|
3 status:u16 (request=0) |
|
|
|
@ -145,8 +152,9 @@ Windows удерживает родительские каталоги без SH |
|
|
|
15 STREAM_CANCEL: клиент отменяет конкретный поток. Поздние DATA не публикуются. |
|
|
|
15 STREAM_CANCEL: клиент отменяет конкретный поток. Поздние DATA не публикуются. |
|
|
|
|
|
|
|
|
|
|
|
16 QUOTA: owner=UID, path/target пустые, cursor=0, data_len=0. |
|
|
|
16 QUOTA: owner=UID, path/target пустые, cursor=0, data_len=0. |
|
|
|
Права чтения те же, что у STAT/LIST выбранного участника. Ответ data_len=24: |
|
|
|
Права чтения те же, что у STAT/LIST выбранного участника. Ответ data_len=40: |
|
|
|
used:u64, limit:u64, reserved:u64, LE, в байтах. Размер общий для UID во всех группах. |
|
|
|
used:u64, limit:u64, reserved:u64, files:u64, directories:u64, LE. |
|
|
|
|
|
|
|
Первые три значения в байтах, последние два — числа объектов. Снимок общий для UID во всех группах. |
|
|
|
Не резервирует место и не занимает квитанцию мутации. used может превышать limit |
|
|
|
Не резервирует место и не занимает квитанцию мутации. used может превышать limit |
|
|
|
после уменьшения лимита; сервер не выдаёт фиктивный нулевой размер при ошибке учёта. |
|
|
|
после уменьшения лимита; сервер не выдаёт фиктивный нулевой размер при ошибке учёта. |
|
|
|
|
|
|
|
|
|
|
|
@ -224,7 +232,7 @@ Upload/Download/New folder/Rename/Delete, прогресс и Cancel transfer. |
|
|
|
Чужой UID доступен только для чтения. Автор может быть offline. |
|
|
|
Чужой UID доступен только для чтения. Автор может быть offline. |
|
|
|
Open скачивает в выбранный пользователем локальный файл и открывает его |
|
|
|
Open скачивает в выбранный пользователем локальный файл и открывает его |
|
|
|
приложением ОС после завершения. Смена контекста отбрасывает поздние ответы. |
|
|
|
приложением ОС после завершения. Смена контекста отбрасывает поздние ответы. |
|
|
|
Для выбранного UID строка хранилища показывает занято/всего и резерв текущих загрузок. |
|
|
|
Для выбранного UID строка хранилища показывает занято/всего, число файлов/каталогов и резерв текущих загрузок. |
|
|
|
Точные байты доступны в tooltip. QUOTA запрашивается отдельно от LIST при выборе |
|
|
|
Точные байты доступны в tooltip. QUOTA запрашивается отдельно от LIST при выборе |
|
|
|
сервера/UID, обновлении каталога, завершении передачи и каждые две секунды видимого окна. |
|
|
|
сервера/UID, обновлении каталога, завершении передачи и каждые две секунды видимого окна. |
|
|
|
Поздние ответы старого UID/сервера игнорируются. BUSY при стартовом сканировании |
|
|
|
Поздние ответы старого UID/сервера игнорируются. BUSY при стартовом сканировании |
|
|
|
@ -256,7 +264,8 @@ Stop сервиса/группы завершает все принадлежа |
|
|
|
|
|
|
|
|
|
|
|
tests/test_member_files: wire/UTF-8, произвольные блоки, повторы, EOF, версии, |
|
|
|
tests/test_member_files: wire/UTF-8, произвольные блоки, повторы, EOF, версии, |
|
|
|
короткая замена, SHA256, пустой файл, независимые квоты UID, общий учёт по группам, |
|
|
|
короткая замена, SHA256, пустой файл, независимые квоты UID, общий учёт по группам, |
|
|
|
резервирование/повторы/TTL, стартовый scan и его ошибки, ссылки, expiry/restart, 10-секундный |
|
|
|
резервирование/повторы/TTL, инкрементальные files/directories, замены пустых файлов, |
|
|
|
|
|
|
|
создание/удаление/rename каталогов, отсутствие runtime-rescan, стартовый scan и его ошибки, ссылки, expiry/restart, 10-секундный |
|
|
|
fd idle и принадлежность work/done потокам. |
|
|
|
fd idle и принадлежность work/done потокам. |
|
|
|
tests/test_member_files_network: настоящие A/B/M, подписанная storage-роль, |
|
|
|
tests/test_member_files_network: настоящие A/B/M, подписанная storage-роль, |
|
|
|
параллельные upload/download одного пира, local loopback, пустые файлы, побайтная |
|
|
|
параллельные upload/download одного пира, local loopback, пустые файлы, побайтная |
|
|
|
@ -275,7 +284,7 @@ stream progress раз в секунду показывает ID/направл |
|
|
|
в кольце, активность I/O, причину ожидания и скорость B/s. Router логирует переходы |
|
|
|
в кольце, активность I/O, причину ожидания и скорость B/s. Router логирует переходы |
|
|
|
receive paused/resumed и peer receive busy без повторного сообщения на каждый блок. |
|
|
|
receive paused/resumed и peer receive busy без повторного сообщения на каждый блок. |
|
|
|
quota scan started/ready показывают путь, число пользователей и время обхода; |
|
|
|
quota scan started/ready показывают путь, число пользователей и время обхода; |
|
|
|
quota updated показывает UID/операцию/used/reserved; quota exceeded — used/reserved/growth/limit. |
|
|
|
quota updated показывает UID/операцию/used/reserved/files/directories; quota exceeded — used/reserved/growth/limit. |
|
|
|
По request_id видны GUI post → core request → router seq → server rx → ACL → |
|
|
|
По request_id видны GUI post → core request → router seq → server rx → ACL → |
|
|
|
disk queued/start/done → response tx → GUI result/bridge → directory ready. |
|
|
|
disk queued/start/done → response tx → GUI result/bridge → directory ready. |
|
|
|
PID создания worker, PID отправки задачи и startup PID позволяют однозначно |
|
|
|
PID создания worker, PID отправки задачи и startup PID позволяют однозначно |
|
|
|
|