1import type * as fsx from "@distilled.cloud/aws/fsx";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { FileSystem } from "./FileSystem.ts";
5
6/**
7 * Runtime binding for the `ReleaseFileSystemNfsV3Locks` operation scoped to
8 * one OpenZFS file system (IAM action `fsx:ReleaseFileSystemNfsV3Locks` on
9 * the file system ARN).
10 *
11 * Releases all NFSv3 byte-range locks held on the bound OpenZFS
12 * {@link FileSystem} — the recovery action for clients that crashed while
13 * holding locks and left files stuck. Provide the implementation with
14 * `Effect.provide(AWS.FSx.ReleaseFileSystemNfsV3LocksHttp)`.
15 * ### Operational Recovery
16 * **Example:** Release stuck NFSv3 locks
17 * ```typescript
18 * const releaseLocks = yield* AWS.FSx.ReleaseFileSystemNfsV3Locks(zfs);
19 *
20 * const response = yield* releaseLocks();
21 * yield* Effect.log(`file system ${response.FileSystem?.FileSystemId} locks released`);
22 * ```
23 *
24 * @binding
25 */
26export interface ReleaseFileSystemNfsV3Locks extends Binding.Service<
27 ReleaseFileSystemNfsV3Locks,
28 "AWS.FSx.ReleaseFileSystemNfsV3Locks",
29 (
30 fileSystem: FileSystem,
31 ) => Effect.Effect<
32 (
33 request?: Omit<fsx.ReleaseFileSystemNfsV3LocksRequest, "FileSystemId">,
34 ) => Effect.Effect<
35 fsx.ReleaseFileSystemNfsV3LocksResponse,
36 fsx.ReleaseFileSystemNfsV3LocksError
37 >
38 >
39> {}
40export const ReleaseFileSystemNfsV3Locks =
41 Binding.Service<ReleaseFileSystemNfsV3Locks>(
42 "AWS.FSx.ReleaseFileSystemNfsV3Locks",
43 );