canopycms 0.0.56 → 0.0.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/branch.d.ts +6 -0
- package/dist/api/branch.d.ts.map +1 -1
- package/dist/api/branch.js +63 -19
- package/dist/api/branch.js.map +1 -1
- package/dist/api/content.d.ts +2 -2
- package/dist/api/entries.d.ts.map +1 -1
- package/dist/api/entries.js +10 -2
- package/dist/api/entries.js.map +1 -1
- package/dist/branch-metadata.d.ts +71 -6
- package/dist/branch-metadata.d.ts.map +1 -1
- package/dist/branch-metadata.js +132 -116
- package/dist/branch-metadata.js.map +1 -1
- package/dist/branch-registry.d.ts +78 -9
- package/dist/branch-registry.d.ts.map +1 -1
- package/dist/branch-registry.js +155 -29
- package/dist/branch-registry.js.map +1 -1
- package/dist/branch-schema-cache.d.ts +126 -11
- package/dist/branch-schema-cache.d.ts.map +1 -1
- package/dist/branch-schema-cache.js +208 -58
- package/dist/branch-schema-cache.js.map +1 -1
- package/dist/cli/generate-ai-content.js +1561 -1159
- package/dist/cli/migrate.d.ts.map +1 -1
- package/dist/cli/migrate.js +25 -0
- package/dist/cli/migrate.js.map +1 -1
- package/dist/cli/sync.js +5 -5
- package/dist/cli/sync.js.map +1 -1
- package/dist/comment-store.d.ts +45 -15
- package/dist/comment-store.d.ts.map +1 -1
- package/dist/comment-store.js +80 -101
- package/dist/comment-store.js.map +1 -1
- package/dist/content-index-generation.d.ts +40 -4
- package/dist/content-index-generation.d.ts.map +1 -1
- package/dist/content-index-generation.js +70 -73
- package/dist/content-index-generation.js.map +1 -1
- package/dist/content-store.d.ts +63 -0
- package/dist/content-store.d.ts.map +1 -1
- package/dist/content-store.js +421 -194
- package/dist/content-store.js.map +1 -1
- package/dist/git-manager.d.ts +15 -10
- package/dist/git-manager.d.ts.map +1 -1
- package/dist/git-manager.js +16 -11
- package/dist/git-manager.js.map +1 -1
- package/dist/resource-generation.d.ts +54 -0
- package/dist/resource-generation.d.ts.map +1 -0
- package/dist/resource-generation.js +156 -0
- package/dist/resource-generation.js.map +1 -0
- package/dist/schema/schema-store.d.ts +29 -2
- package/dist/schema/schema-store.d.ts.map +1 -1
- package/dist/schema/schema-store.js +47 -8
- package/dist/schema/schema-store.js.map +1 -1
- package/dist/sync-core.js +2 -2
- package/dist/sync-core.js.map +1 -1
- package/dist/utils/occ-json-write.d.ts +100 -0
- package/dist/utils/occ-json-write.d.ts.map +1 -0
- package/dist/utils/occ-json-write.js +234 -0
- package/dist/utils/occ-json-write.js.map +1 -0
- package/dist/worker/cms-worker.d.ts.map +1 -1
- package/dist/worker/cms-worker.js +21 -3
- package/dist/worker/cms-worker.js.map +1 -1
- package/package.json +1 -1
|
@@ -160,8 +160,28 @@ export declare class SchemaOps {
|
|
|
160
160
|
private readonly services?;
|
|
161
161
|
constructor(contentRoot: string, entrySchemaRegistry: EntrySchemaRegistry, services?: CanopyServices | undefined);
|
|
162
162
|
/**
|
|
163
|
-
* Invalidate schema cache for this branch after mutations
|
|
164
|
-
*
|
|
163
|
+
* Invalidate schema cache for this branch after mutations, then eagerly
|
|
164
|
+
* re-resolve on THIS host.
|
|
165
|
+
*
|
|
166
|
+
* The eager re-resolve is the durable-snapshot window-E mitigation (see
|
|
167
|
+
* BranchSchemaCache's class docs): the mutating host's own scan is
|
|
168
|
+
* necessarily coherent with the mutation it just made, whereas the
|
|
169
|
+
* editor's follow-up schema read is a separate Lambda invocation with no
|
|
170
|
+
* container affinity — exactly the lazy foreign-host pull whose scan can
|
|
171
|
+
* be served from stale NFS caches and durably persist a fresh-token
|
|
172
|
+
* snapshot of pre-mutation schema. Regen failures are logged and
|
|
173
|
+
* swallowed (mirroring BranchRegistry.invalidate()): the bump alone
|
|
174
|
+
* already restored correctness for every future reader, and a mutation
|
|
175
|
+
* that leaves no valid schema behind (e.g. deleting the last collection)
|
|
176
|
+
* must not fail the request over an uncacheable resolve.
|
|
177
|
+
*
|
|
178
|
+
* Uses `resolveAndPersist()`, NOT `getSchema()`: getSchema()'s cache-read
|
|
179
|
+
* fast path can return a snapshot a DIFFERENT, concurrent host just wrote
|
|
180
|
+
* (its own eager re-resolve, raced against this one, embedding the
|
|
181
|
+
* now-current marker token over ITS OWN stale-NFS-cache scan) — silently
|
|
182
|
+
* skipping the one scan this call exists to guarantee. resolveAndPersist()
|
|
183
|
+
* never reads the cache file, so it cannot be short-circuited that way.
|
|
184
|
+
* See BranchSchemaCache.resolveAndPersist()'s doc comment for the full race.
|
|
165
185
|
*/
|
|
166
186
|
private invalidateSchemaCache;
|
|
167
187
|
/**
|
|
@@ -171,6 +191,13 @@ export declare class SchemaOps {
|
|
|
171
191
|
* indexes for this branch: in-process via the registry and cross-process via
|
|
172
192
|
* the on-disk generation marker. ContentStores (and the marker) are rooted
|
|
173
193
|
* at the branch root, the contentRoot's parent.
|
|
194
|
+
*
|
|
195
|
+
* Uses the combined invalidateBranchContentCaches() helper rather than the
|
|
196
|
+
* content-index-only invalidateContentIndexesDurable(): every call site here
|
|
197
|
+
* is already followed by its own invalidateSchemaCache() call below, so this
|
|
198
|
+
* double-bumps the schema generation marker. That's harmless (bumps are
|
|
199
|
+
* idempotent hints, not counters) and keeps this call uniform with the other
|
|
200
|
+
* bulk-mutation call sites that use the combined helper.
|
|
174
201
|
*/
|
|
175
202
|
private invalidateContentIdIndexes;
|
|
176
203
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-store.d.ts","sourceRoot":"","sources":["../../src/schema/schema-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"schema-store.d.ts","sourceRoot":"","sources":["../../src/schema/schema-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,8 +13,10 @@ import path from 'node:path';
|
|
|
13
13
|
import { z } from 'zod';
|
|
14
14
|
import { atomicWriteFile } from '../utils/atomic-write.js';
|
|
15
15
|
import { withLock } from '../utils/async-mutex.js';
|
|
16
|
+
import { createDebugLogger } from '../utils/debug.js';
|
|
17
|
+
import { getErrorMessage } from '../utils/error.js';
|
|
16
18
|
import { resolveCollectionPath } from '../content-id-index.js';
|
|
17
|
-
import {
|
|
19
|
+
import { invalidateBranchContentCaches } from '../content-index-generation.js';
|
|
18
20
|
import { generateId, isValidId } from '../id.js';
|
|
19
21
|
import { createLogicalPath, validateAndNormalizePath } from '../paths/index.js';
|
|
20
22
|
// ============================================================================
|
|
@@ -80,6 +82,7 @@ const updateEntryTypeInputSchema = z.object({
|
|
|
80
82
|
// ============================================================================
|
|
81
83
|
// SchemaOps Class
|
|
82
84
|
// ============================================================================
|
|
85
|
+
const log = createDebugLogger({ prefix: 'SchemaOps' });
|
|
83
86
|
export class SchemaOps {
|
|
84
87
|
constructor(contentRoot, entrySchemaRegistry, services) {
|
|
85
88
|
this.contentRoot = contentRoot;
|
|
@@ -90,14 +93,43 @@ export class SchemaOps {
|
|
|
90
93
|
// Cache Invalidation
|
|
91
94
|
// --------------------------------------------------------------------------
|
|
92
95
|
/**
|
|
93
|
-
* Invalidate schema cache for this branch after mutations
|
|
94
|
-
*
|
|
96
|
+
* Invalidate schema cache for this branch after mutations, then eagerly
|
|
97
|
+
* re-resolve on THIS host.
|
|
98
|
+
*
|
|
99
|
+
* The eager re-resolve is the durable-snapshot window-E mitigation (see
|
|
100
|
+
* BranchSchemaCache's class docs): the mutating host's own scan is
|
|
101
|
+
* necessarily coherent with the mutation it just made, whereas the
|
|
102
|
+
* editor's follow-up schema read is a separate Lambda invocation with no
|
|
103
|
+
* container affinity — exactly the lazy foreign-host pull whose scan can
|
|
104
|
+
* be served from stale NFS caches and durably persist a fresh-token
|
|
105
|
+
* snapshot of pre-mutation schema. Regen failures are logged and
|
|
106
|
+
* swallowed (mirroring BranchRegistry.invalidate()): the bump alone
|
|
107
|
+
* already restored correctness for every future reader, and a mutation
|
|
108
|
+
* that leaves no valid schema behind (e.g. deleting the last collection)
|
|
109
|
+
* must not fail the request over an uncacheable resolve.
|
|
110
|
+
*
|
|
111
|
+
* Uses `resolveAndPersist()`, NOT `getSchema()`: getSchema()'s cache-read
|
|
112
|
+
* fast path can return a snapshot a DIFFERENT, concurrent host just wrote
|
|
113
|
+
* (its own eager re-resolve, raced against this one, embedding the
|
|
114
|
+
* now-current marker token over ITS OWN stale-NFS-cache scan) — silently
|
|
115
|
+
* skipping the one scan this call exists to guarantee. resolveAndPersist()
|
|
116
|
+
* never reads the cache file, so it cannot be short-circuited that way.
|
|
117
|
+
* See BranchSchemaCache.resolveAndPersist()'s doc comment for the full race.
|
|
95
118
|
*/
|
|
96
119
|
async invalidateSchemaCache() {
|
|
97
|
-
if (this.services)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
120
|
+
if (!this.services)
|
|
121
|
+
return;
|
|
122
|
+
// Get branchRoot from contentRoot (parent directory)
|
|
123
|
+
const branchRoot = path.dirname(this.contentRoot);
|
|
124
|
+
await this.services.branchSchemaCache.invalidate(branchRoot);
|
|
125
|
+
try {
|
|
126
|
+
await this.services.branchSchemaCache.resolveAndPersist(branchRoot, this.entrySchemaRegistry, path.basename(this.contentRoot));
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
log.warn('schema-cache', `Eager schema re-resolve after invalidation failed`, {
|
|
130
|
+
branchRoot,
|
|
131
|
+
error: getErrorMessage(err),
|
|
132
|
+
});
|
|
101
133
|
}
|
|
102
134
|
}
|
|
103
135
|
/**
|
|
@@ -107,9 +139,16 @@ export class SchemaOps {
|
|
|
107
139
|
* indexes for this branch: in-process via the registry and cross-process via
|
|
108
140
|
* the on-disk generation marker. ContentStores (and the marker) are rooted
|
|
109
141
|
* at the branch root, the contentRoot's parent.
|
|
142
|
+
*
|
|
143
|
+
* Uses the combined invalidateBranchContentCaches() helper rather than the
|
|
144
|
+
* content-index-only invalidateContentIndexesDurable(): every call site here
|
|
145
|
+
* is already followed by its own invalidateSchemaCache() call below, so this
|
|
146
|
+
* double-bumps the schema generation marker. That's harmless (bumps are
|
|
147
|
+
* idempotent hints, not counters) and keeps this call uniform with the other
|
|
148
|
+
* bulk-mutation call sites that use the combined helper.
|
|
110
149
|
*/
|
|
111
150
|
async invalidateContentIdIndexes() {
|
|
112
|
-
await
|
|
151
|
+
await invalidateBranchContentCaches(path.dirname(this.contentRoot));
|
|
113
152
|
}
|
|
114
153
|
// --------------------------------------------------------------------------
|
|
115
154
|
// Validation Helpers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-store.js","sourceRoot":"","sources":["../../src/schema/schema-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema-store.js","sourceRoot":"","sources":["../../src/schema/schema-store.ts"],"names":[],"mappings":"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"}
|
package/dist/sync-core.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import fs from 'node:fs/promises';
|
|
7
7
|
import path from 'node:path';
|
|
8
8
|
import { simpleGit } from 'simple-git';
|
|
9
|
-
import {
|
|
9
|
+
import { invalidateBranchContentCaches } from './content-index-generation.js';
|
|
10
10
|
import { filePathExists } from './utils/fs.js';
|
|
11
11
|
/** Git tag marking the last known sync point, used as the merge base for `sync both` 3-way merges. */
|
|
12
12
|
export const SYNC_BASE_TAG = 'canopycms-sync-base';
|
|
@@ -173,7 +173,7 @@ export async function pushContentToWorkspace(options) {
|
|
|
173
173
|
return { fileCount: postStatus.files.length };
|
|
174
174
|
}
|
|
175
175
|
finally {
|
|
176
|
-
await
|
|
176
|
+
await invalidateBranchContentCaches(branchPath);
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
179
|
//# sourceMappingURL=sync-core.js.map
|
package/dist/sync-core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-core.js","sourceRoot":"","sources":["../src/sync-core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"sync-core.js","sourceRoot":"","sources":["../src/sync-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared optimistic-concurrency-control (OCC) JSON write machinery, extracted
|
|
3
|
+
* from the near-identical logic in comment-store.ts and branch-metadata.ts.
|
|
4
|
+
* Both stores keep a `version` + `writeId` pair inside their JSON payload and
|
|
5
|
+
* use temp-file + rename (or temp-file + link for brand-new files) so a
|
|
6
|
+
* concurrent writer is detected rather than silently overwritten.
|
|
7
|
+
*/
|
|
8
|
+
export declare class OccWriteConflictError extends Error {
|
|
9
|
+
constructor(message?: string);
|
|
10
|
+
}
|
|
11
|
+
export interface OccWriteResult {
|
|
12
|
+
version: number;
|
|
13
|
+
writeId: string;
|
|
14
|
+
}
|
|
15
|
+
export interface WriteOccJsonFileOptions {
|
|
16
|
+
/** Version the caller last observed, or null when creating a brand-new file. */
|
|
17
|
+
expectedVersion: number | null;
|
|
18
|
+
/**
|
|
19
|
+
* How long to wait after the rename before reading the file back to verify
|
|
20
|
+
* this write's writeId is still present. Default 50ms; pass 0 in tests.
|
|
21
|
+
*/
|
|
22
|
+
settleMs?: number;
|
|
23
|
+
/** Append a trailing newline after the serialized JSON. Default false. */
|
|
24
|
+
trailingNewline?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Write a JSON file using optimistic concurrency control.
|
|
28
|
+
*
|
|
29
|
+
* - New file (`expectedVersion: null`): writes a temp file in the same
|
|
30
|
+
* directory, then `fs.link()`s it onto the target. link() is atomic and
|
|
31
|
+
* fails with EEXIST if the target already exists, giving exclusive-create
|
|
32
|
+
* semantics without the atomicity risk of `writeFile({flag: 'wx'})` — a
|
|
33
|
+
* crash mid-write with 'wx' can leave a partial file that then fails
|
|
34
|
+
* JSON.parse on every subsequent read, permanently breaking the resource.
|
|
35
|
+
* The temp file is unlinked afterward either way (link creates a second
|
|
36
|
+
* name for the same inode; it does not consume the source).
|
|
37
|
+
* - Existing file: writes a temp file, rechecks the target's current version
|
|
38
|
+
* against `expectedVersion` (fast-fail before paying for a rename), then
|
|
39
|
+
* atomically renames the temp file onto the target, waits `settleMs` for
|
|
40
|
+
* concurrent renames on shared filesystems to land, and reads the file back
|
|
41
|
+
* to confirm this write's `writeId` won. Any losing writeId means another
|
|
42
|
+
* process's write landed after ours (or concurrently), so this call throws
|
|
43
|
+
* {@link OccWriteConflictError}.
|
|
44
|
+
*
|
|
45
|
+
* Temp files are always in the SAME directory as the target: rename and link
|
|
46
|
+
* both require the source and destination to be on the same filesystem, and
|
|
47
|
+
* writing into the same directory also invalidates any local NFS dentry
|
|
48
|
+
* cache for that directory, which the subsequent read-back relies on.
|
|
49
|
+
*
|
|
50
|
+
* ## Guarantee — read this before relying on it for cross-host correctness
|
|
51
|
+
*
|
|
52
|
+
* The post-rename writeId verification detects lost writes reliably only
|
|
53
|
+
* between writers sharing the SAME NFS client (i.e. the same host process, or
|
|
54
|
+
* another process on the same host / local filesystem). Across hosts on EFS,
|
|
55
|
+
* a foreign process's rename can remain invisible to this client's directory
|
|
56
|
+
* dentry/attribute cache for the attribute-cache window (commonly ~3-60s on
|
|
57
|
+
* default EFS mounts) — so a losing writer's read-back can still observe ITS
|
|
58
|
+
* OWN writeId (served from cache) and wrongly conclude it won. The version
|
|
59
|
+
* precheck has the same blind spot: it also reads through that cache, so two
|
|
60
|
+
* concurrent cross-host writers can both see the same `expectedVersion` and
|
|
61
|
+
* both pass. The `settleMs` wait is cheap same-host jitter absorption only —
|
|
62
|
+
* it mitigates nothing for the cross-host case, and is kept solely because it
|
|
63
|
+
* is harmless and occasionally helps same-host callers avoid a spurious retry.
|
|
64
|
+
*
|
|
65
|
+
* For files where a cross-host lost update is unacceptable, callers must ALSO
|
|
66
|
+
* serialize writers with {@link withOccFileLock}, which is enforced by the NFS
|
|
67
|
+
* server itself (mkdir-based locking) rather than by client-side caching.
|
|
68
|
+
*/
|
|
69
|
+
export declare function writeOccJsonFile(filePath: string, payload: Record<string, unknown>, options: WriteOccJsonFileOptions): Promise<OccWriteResult>;
|
|
70
|
+
export interface WithOccRetryOptions {
|
|
71
|
+
/** Maximum number of attempts, including the first. Default 10. */
|
|
72
|
+
maxAttempts?: number;
|
|
73
|
+
/** Additional predicate for errors worth retrying, beyond OccWriteConflictError. */
|
|
74
|
+
isRetryable?: (err: unknown) => boolean;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Retry an OCC write operation on conflict, with exponential backoff + jitter.
|
|
78
|
+
* Non-blocking — the caller's `operation` is expected to reload state (so it
|
|
79
|
+
* observes the latest version) and reapply its change on each attempt.
|
|
80
|
+
*/
|
|
81
|
+
export declare function withOccRetry<T>(operation: () => Promise<T>, options?: WithOccRetryOptions): Promise<T>;
|
|
82
|
+
/**
|
|
83
|
+
* Serialize access to `filePath` across processes using a server-enforced
|
|
84
|
+
* filesystem lock (proper-lockfile), for callers that need a genuine
|
|
85
|
+
* cross-host mutual-exclusion guarantee rather than the best-effort detection
|
|
86
|
+
* that {@link writeOccJsonFile} alone provides.
|
|
87
|
+
*
|
|
88
|
+
* proper-lockfile's locks are mkdir-based: creating a directory is an atomic
|
|
89
|
+
* operation the NFS server itself enforces, so this is immune to the client
|
|
90
|
+
* dentry/attribute caching that undermines writeId verification across hosts.
|
|
91
|
+
* It also auto-refreshes the lock while the holding process is alive, so
|
|
92
|
+
* `stale` only matters when a holder dies without releasing (crash, kill -9).
|
|
93
|
+
*
|
|
94
|
+
* Tuned for brief interactive metadata writes (small JSON files, sub-second
|
|
95
|
+
* critical sections) — shorter and less patient than provisioning-lock.ts's
|
|
96
|
+
* settings, which are sized for build-time git clone/push operations that can
|
|
97
|
+
* legitimately take many seconds.
|
|
98
|
+
*/
|
|
99
|
+
export declare function withOccFileLock<T>(filePath: string, fn: () => Promise<T>): Promise<T>;
|
|
100
|
+
//# sourceMappingURL=occ-json-write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"occ-json-write.d.ts","sourceRoot":"","sources":["../../src/utils/occ-json-write.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,SAAqC;CAIzD;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,gFAAgF;IAChF,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,cAAc,CAAC,CA4DzB;AAED,MAAM,WAAW,mBAAmB;IAClC,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oFAAoF;IACpF,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAA;CACxC;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,CAAC,CAAC,CAmBZ;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAyE3F"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
4
|
+
import lockfile from 'proper-lockfile';
|
|
5
|
+
import { getErrorMessage, isFileExistsError, isNodeError } from './error.js';
|
|
6
|
+
import { createDebugLogger } from './debug.js';
|
|
7
|
+
const log = createDebugLogger({ prefix: 'OccJsonWrite' });
|
|
8
|
+
/**
|
|
9
|
+
* Shared optimistic-concurrency-control (OCC) JSON write machinery, extracted
|
|
10
|
+
* from the near-identical logic in comment-store.ts and branch-metadata.ts.
|
|
11
|
+
* Both stores keep a `version` + `writeId` pair inside their JSON payload and
|
|
12
|
+
* use temp-file + rename (or temp-file + link for brand-new files) so a
|
|
13
|
+
* concurrent writer is detected rather than silently overwritten.
|
|
14
|
+
*/
|
|
15
|
+
export class OccWriteConflictError extends Error {
|
|
16
|
+
constructor(message = 'Concurrent modification detected') {
|
|
17
|
+
super(message);
|
|
18
|
+
this.name = 'OccWriteConflictError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Write a JSON file using optimistic concurrency control.
|
|
23
|
+
*
|
|
24
|
+
* - New file (`expectedVersion: null`): writes a temp file in the same
|
|
25
|
+
* directory, then `fs.link()`s it onto the target. link() is atomic and
|
|
26
|
+
* fails with EEXIST if the target already exists, giving exclusive-create
|
|
27
|
+
* semantics without the atomicity risk of `writeFile({flag: 'wx'})` — a
|
|
28
|
+
* crash mid-write with 'wx' can leave a partial file that then fails
|
|
29
|
+
* JSON.parse on every subsequent read, permanently breaking the resource.
|
|
30
|
+
* The temp file is unlinked afterward either way (link creates a second
|
|
31
|
+
* name for the same inode; it does not consume the source).
|
|
32
|
+
* - Existing file: writes a temp file, rechecks the target's current version
|
|
33
|
+
* against `expectedVersion` (fast-fail before paying for a rename), then
|
|
34
|
+
* atomically renames the temp file onto the target, waits `settleMs` for
|
|
35
|
+
* concurrent renames on shared filesystems to land, and reads the file back
|
|
36
|
+
* to confirm this write's `writeId` won. Any losing writeId means another
|
|
37
|
+
* process's write landed after ours (or concurrently), so this call throws
|
|
38
|
+
* {@link OccWriteConflictError}.
|
|
39
|
+
*
|
|
40
|
+
* Temp files are always in the SAME directory as the target: rename and link
|
|
41
|
+
* both require the source and destination to be on the same filesystem, and
|
|
42
|
+
* writing into the same directory also invalidates any local NFS dentry
|
|
43
|
+
* cache for that directory, which the subsequent read-back relies on.
|
|
44
|
+
*
|
|
45
|
+
* ## Guarantee — read this before relying on it for cross-host correctness
|
|
46
|
+
*
|
|
47
|
+
* The post-rename writeId verification detects lost writes reliably only
|
|
48
|
+
* between writers sharing the SAME NFS client (i.e. the same host process, or
|
|
49
|
+
* another process on the same host / local filesystem). Across hosts on EFS,
|
|
50
|
+
* a foreign process's rename can remain invisible to this client's directory
|
|
51
|
+
* dentry/attribute cache for the attribute-cache window (commonly ~3-60s on
|
|
52
|
+
* default EFS mounts) — so a losing writer's read-back can still observe ITS
|
|
53
|
+
* OWN writeId (served from cache) and wrongly conclude it won. The version
|
|
54
|
+
* precheck has the same blind spot: it also reads through that cache, so two
|
|
55
|
+
* concurrent cross-host writers can both see the same `expectedVersion` and
|
|
56
|
+
* both pass. The `settleMs` wait is cheap same-host jitter absorption only —
|
|
57
|
+
* it mitigates nothing for the cross-host case, and is kept solely because it
|
|
58
|
+
* is harmless and occasionally helps same-host callers avoid a spurious retry.
|
|
59
|
+
*
|
|
60
|
+
* For files where a cross-host lost update is unacceptable, callers must ALSO
|
|
61
|
+
* serialize writers with {@link withOccFileLock}, which is enforced by the NFS
|
|
62
|
+
* server itself (mkdir-based locking) rather than by client-side caching.
|
|
63
|
+
*/
|
|
64
|
+
export async function writeOccJsonFile(filePath, payload, options) {
|
|
65
|
+
const { expectedVersion, settleMs = 50, trailingNewline = false } = options;
|
|
66
|
+
const newVersion = expectedVersion === null ? 1 : expectedVersion + 1;
|
|
67
|
+
const writeId = randomUUID();
|
|
68
|
+
const data = { ...payload, version: newVersion, writeId };
|
|
69
|
+
const content = JSON.stringify(data, null, 2) + (trailingNewline ? '\n' : '');
|
|
70
|
+
const dir = path.dirname(filePath);
|
|
71
|
+
await fs.mkdir(dir, { recursive: true });
|
|
72
|
+
const tempPath = `${filePath}.${Date.now()}.${Math.random().toString(36).slice(2)}.tmp`;
|
|
73
|
+
await fs.writeFile(tempPath, content, 'utf-8');
|
|
74
|
+
if (expectedVersion === null) {
|
|
75
|
+
try {
|
|
76
|
+
await fs.link(tempPath, filePath);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
await fs.unlink(tempPath).catch(() => { });
|
|
80
|
+
if (isFileExistsError(err)) {
|
|
81
|
+
throw new OccWriteConflictError();
|
|
82
|
+
}
|
|
83
|
+
throw err;
|
|
84
|
+
}
|
|
85
|
+
await fs.unlink(tempPath).catch(() => { });
|
|
86
|
+
return { version: newVersion, writeId };
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
// Fast-fail before the rename: not a correctness guarantee (see the
|
|
90
|
+
// cross-host caveat above) but avoids an unnecessary rename + settle +
|
|
91
|
+
// read-back cycle for the common same-host conflict case.
|
|
92
|
+
let currentVersion = null;
|
|
93
|
+
try {
|
|
94
|
+
const current = JSON.parse(await fs.readFile(filePath, 'utf-8'));
|
|
95
|
+
currentVersion = current.version ?? 0;
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
currentVersion = null;
|
|
99
|
+
}
|
|
100
|
+
if (currentVersion !== expectedVersion) {
|
|
101
|
+
throw new OccWriteConflictError();
|
|
102
|
+
}
|
|
103
|
+
await fs.rename(tempPath, filePath);
|
|
104
|
+
if (settleMs > 0) {
|
|
105
|
+
await new Promise((resolve) => setTimeout(resolve, settleMs));
|
|
106
|
+
}
|
|
107
|
+
const afterWrite = JSON.parse(await fs.readFile(filePath, 'utf-8'));
|
|
108
|
+
if (afterWrite.writeId !== writeId) {
|
|
109
|
+
throw new OccWriteConflictError();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
await fs.unlink(tempPath).catch(() => { });
|
|
114
|
+
throw err;
|
|
115
|
+
}
|
|
116
|
+
return { version: newVersion, writeId };
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Retry an OCC write operation on conflict, with exponential backoff + jitter.
|
|
120
|
+
* Non-blocking — the caller's `operation` is expected to reload state (so it
|
|
121
|
+
* observes the latest version) and reapply its change on each attempt.
|
|
122
|
+
*/
|
|
123
|
+
export async function withOccRetry(operation, options) {
|
|
124
|
+
const maxAttempts = options?.maxAttempts ?? 10;
|
|
125
|
+
const isRetryable = options?.isRetryable;
|
|
126
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
127
|
+
try {
|
|
128
|
+
return await operation();
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
const retryable = err instanceof OccWriteConflictError || (isRetryable?.(err) ?? false);
|
|
132
|
+
if (retryable && attempt < maxAttempts) {
|
|
133
|
+
const baseDelay = Math.min(10 * Math.pow(2, attempt - 1), 100);
|
|
134
|
+
const jitter = Math.random() * baseDelay;
|
|
135
|
+
await new Promise((resolve) => setTimeout(resolve, baseDelay + jitter));
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
throw err;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
throw new Error('Unreachable');
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Serialize access to `filePath` across processes using a server-enforced
|
|
145
|
+
* filesystem lock (proper-lockfile), for callers that need a genuine
|
|
146
|
+
* cross-host mutual-exclusion guarantee rather than the best-effort detection
|
|
147
|
+
* that {@link writeOccJsonFile} alone provides.
|
|
148
|
+
*
|
|
149
|
+
* proper-lockfile's locks are mkdir-based: creating a directory is an atomic
|
|
150
|
+
* operation the NFS server itself enforces, so this is immune to the client
|
|
151
|
+
* dentry/attribute caching that undermines writeId verification across hosts.
|
|
152
|
+
* It also auto-refreshes the lock while the holding process is alive, so
|
|
153
|
+
* `stale` only matters when a holder dies without releasing (crash, kill -9).
|
|
154
|
+
*
|
|
155
|
+
* Tuned for brief interactive metadata writes (small JSON files, sub-second
|
|
156
|
+
* critical sections) — shorter and less patient than provisioning-lock.ts's
|
|
157
|
+
* settings, which are sized for build-time git clone/push operations that can
|
|
158
|
+
* legitimately take many seconds.
|
|
159
|
+
*/
|
|
160
|
+
export async function withOccFileLock(filePath, fn) {
|
|
161
|
+
const dir = path.dirname(filePath);
|
|
162
|
+
await fs.mkdir(dir, { recursive: true });
|
|
163
|
+
// Acquisition retries are OUR loop, not proper-lockfile's built-in
|
|
164
|
+
// `retries`: the built-in loop retries blindly on ANY error, so a waiter
|
|
165
|
+
// whose target directory was deleted mid-poll (deleteBranch's rm removing
|
|
166
|
+
// `.canopy-meta/` while a save is queued on its lock) would burn the whole
|
|
167
|
+
// multi-second budget re-hitting ENOENT before failing. Our loop retries
|
|
168
|
+
// only genuine contention (ELOCKED) and fails fast on ENOENT (the resource
|
|
169
|
+
// is gone — retrying cannot succeed and must not resurrect the directory).
|
|
170
|
+
//
|
|
171
|
+
// The retry budget must exceed `stale` (10s): a holder that died without
|
|
172
|
+
// releasing (kill -9) is only taken over once its lock goes stale, so
|
|
173
|
+
// waiters that give up sooner turn every crashed holder into ~10s of hard
|
|
174
|
+
// failures. Base delays 50ms * 1.6^n capped at 2s over 13 retries sum to
|
|
175
|
+
// ~13.5s, comfortably past one stale takeover; jitter only adds to that.
|
|
176
|
+
const MAX_ATTEMPTS = 14;
|
|
177
|
+
let release = null;
|
|
178
|
+
for (let attempt = 1; release === null; attempt++) {
|
|
179
|
+
try {
|
|
180
|
+
// Lock the FILE, not the directory: proper-lockfile keys its
|
|
181
|
+
// module-level `locks{}` bookkeeping (release fn, refresh timer) by
|
|
182
|
+
// the resource path passed here. Two concurrent withOccFileLock calls
|
|
183
|
+
// for DIFFERENT files in the SAME directory (comments.json and
|
|
184
|
+
// branch.json both under one `.canopy-meta/`) would otherwise collide
|
|
185
|
+
// on that shared directory key: releasing one lock stops the other's
|
|
186
|
+
// refresh timer, marks it released internally, and leaks its on-disk
|
|
187
|
+
// `.lock` directory. `realpath: false` because the resource path need
|
|
188
|
+
// not exist on disk (brand-new files).
|
|
189
|
+
release = await lockfile.lock(filePath, {
|
|
190
|
+
lockfilePath: `${filePath}.lock`,
|
|
191
|
+
realpath: false,
|
|
192
|
+
stale: 10_000,
|
|
193
|
+
retries: 0,
|
|
194
|
+
// A compromised lock (the lock dir vanished or refresh failed
|
|
195
|
+
// mid-hold, e.g. the branch directory containing it was deleted)
|
|
196
|
+
// must not crash the process, which is proper-lockfile's default.
|
|
197
|
+
// Our critical sections are short and idempotent-on-conflict (OCC
|
|
198
|
+
// verify inside); log and let the section finish.
|
|
199
|
+
onCompromised: (err) => {
|
|
200
|
+
log.warn('lock', `Lock compromised mid-hold for ${filePath}`, {
|
|
201
|
+
error: getErrorMessage(err),
|
|
202
|
+
});
|
|
203
|
+
},
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
const code = isNodeError(err) ? err.code : undefined;
|
|
208
|
+
const contended = code === 'ELOCKED';
|
|
209
|
+
if (!contended || attempt >= MAX_ATTEMPTS) {
|
|
210
|
+
// Non-contention failure (e.g. ENOENT: the directory was deleted
|
|
211
|
+
// under us) or budget exhausted: surface as the standard conflict
|
|
212
|
+
// type so adopters' boundary translation turns it into their public
|
|
213
|
+
// retriable conflict error instead of a raw ELOCKED/ENOENT leaking
|
|
214
|
+
// out as an opaque 500.
|
|
215
|
+
throw new OccWriteConflictError(`Could not acquire file lock: ${getErrorMessage(err)}`);
|
|
216
|
+
}
|
|
217
|
+
const baseDelay = Math.min(50 * Math.pow(1.6, attempt - 1), 2000);
|
|
218
|
+
const jitter = Math.random() * baseDelay;
|
|
219
|
+
await new Promise((resolve) => setTimeout(resolve, baseDelay + jitter));
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
try {
|
|
223
|
+
return await fn();
|
|
224
|
+
}
|
|
225
|
+
finally {
|
|
226
|
+
// Best-effort: a failed release is recovered by `stale` once this
|
|
227
|
+
// process's lockfile heartbeat stops (crash) or the lock naturally
|
|
228
|
+
// expires, so this is logged rather than rethrown.
|
|
229
|
+
await release().catch((err) => {
|
|
230
|
+
log.warn('lock', `Failed to release lock for ${filePath}`, { error: getErrorMessage(err) });
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=occ-json-write.js.map
|