You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The File block's URL fetch no longer saves every fetched URL into workspace Files. Nothing ever read the saved copy: the parser keeps its own execution file, and the reuse the save once served was removed earlier. Repeated fetches were piling up name (N).html copies in the Files root
Renamed fetchExternalUrlToWorkspace to fetchExternalUrl and removed its save, permission, and upload branch
Name existence checks (fileNameExistsInWorkspaceFolder, getWorkspaceFileByName) now spell the folder predicate as coalesce(folder_id, '') = $folder, matching the unique (workspace_id, coalesce(folder_id, ''), original_name) index, so each check is a point lookup. The old folder_id IS NULL form made root lookups scan the folder-id index
allocateUniqueWorkspaceFileName probes the base name plus (1)…(20), then falls back to a short-id suffix instead of probing up to 1,000 candidates and then failing. The unique index and the existing conflict retry remain the authority
Type of Change
Bug fix
Testing
New file-names.integration.ts (real Postgres). All three tests fail on the pre-change code:
parsing a URL creates no workspace_files row
root/folder scoping, with an EXPLAIN assertion that both lookups use the unique index
the 21st copy of a name gets a short-id suffix, and concurrent uploads of one name all succeed with distinct names
Existing file-versions, provenance, revision, storage-cleanup, and workspace-import integration suites pass
[Medium risk] Refactors file naming and URL fetching logic.
The PR appears safe to merge based on the changes since the previous review.
Summary
The PR stops persisting fetched URLs as workspace Files, uses the unique-index expression for name lookups, and bounds numbered filename allocation before using a short-ID suffix. Since the previous review, the URL-fetch helper was relocated and its imports and mocks were updated.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
name (N).htmlcopies in the Files rootfetchExternalUrlToWorkspacetofetchExternalUrland removed its save, permission, and upload branchfileNameExistsInWorkspaceFolder,getWorkspaceFileByName) now spell the folder predicate ascoalesce(folder_id, '') = $folder, matching the unique(workspace_id, coalesce(folder_id, ''), original_name)index, so each check is a point lookup. The oldfolder_id IS NULLform made root lookups scan the folder-id indexallocateUniqueWorkspaceFileNameprobes the base name plus(1)…(20), then falls back to a short-id suffix instead of probing up to 1,000 candidates and then failing. The unique index and the existing conflict retry remain the authorityType of Change
Testing
file-names.integration.ts(real Postgres). All three tests fail on the pre-change code:workspace_filesrowcheck:auditspassChecklist