Главная » Разборы

COMPOUND NFSv4: один RPC не является общей транзакцией с откатом

Запросить

NFSv4 объединяет несколько операций в COMPOUND, чтобы уменьшить число сетевых обменов. Это полезно на длинном канале, но не делает последовательность атомарной прикладной транзакцией. Ошибка в конце запроса не доказывает отсутствие изменений на предыдущих шагах.

RFC 8881 описывает выполнение операций по порядку без общей гарантии atomicity. При первом неуспешном результате дальнейшая оценка прекращается, а результаты выполненных операций возвращаются клиенту. Поэтому нужно анализировать список результатов, а не только общий неуспешный status.

Например, составной запрос может последовательно выбрать объект, открыть его и выполнить действие. Если поздний этап не прошёл, ранее созданное состояние требует предусмотренной обработки. Нельзя автоматически повторять всю последовательность как новую только потому, что приложение увидело одну общую ошибку. Повторы в session имеют отдельные правила идентификации.

В приёмке проверяют согласованный отказ на разных шагах и фактическое состояние после каждого исхода. Для приложения определяют восстановление и компенсацию там, где это требуется. Уменьшение числа RPC оценивают отдельно от целостности бизнес-операции. Один пакет или одно подтверждение транспорта не являются доказательством выполнения всех действий либо их полного отката.

Основание — Numbered RFC8881 NFSv4.1, RFC7862 NFSv4.2, RFC8276 xattrs and RFC9289 RPC-with-TLS; applicability scoped per task, разделы RFC8881 2.3 COMPOUND and CB_COMPOUND. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Основание — указанные номерные RFC NFS/RPC. Возможности NFSv4.1, NFSv4.2 и дополнительных расширений разделены; их фактическая поддержка сервером и клиентом не подтверждалась. Монтирование, чтение рабочих файлов, запись и восстановление состояния не выполнялись.

Все разборы

Весь каталог Motorola и аналогов — 13 позиций

Возимые и носимые станции, TETRA, PoC и Си-Би — всё, что держим на складе.