remove hard limit on mutable file size #694
Labels
No Label
0.2.0
0.3.0
0.4.0
0.5.0
0.5.1
0.6.0
0.6.1
0.7.0
0.8.0
0.9.0
1.0.0
1.1.0
1.10.0
1.10.1
1.10.2
1.10a2
1.11.0
1.12.0
1.12.1
1.13.0
1.14.0
1.15.0
1.15.1
1.2.0
1.3.0
1.4.1
1.5.0
1.6.0
1.6.1
1.7.0
1.7.1
1.7β
1.8.0
1.8.1
1.8.2
1.8.3
1.8β
1.9.0
1.9.0-s3branch
1.9.0a1
1.9.0a2
1.9.0b1
1.9.1
1.9.2
1.9.2a1
LeastAuthority.com automation
blocker
cannot reproduce
cloud-branch
code
code-dirnodes
code-encoding
code-frontend
code-frontend-cli
code-frontend-ftp-sftp
code-frontend-magic-folder
code-frontend-web
code-mutable
code-network
code-nodeadmin
code-peerselection
code-storage
contrib
critical
defect
dev-infrastructure
documentation
duplicate
enhancement
fixed
invalid
major
minor
n/a
normal
operational
packaging
somebody else's problem
supercritical
task
trivial
unknown
was already fixed
website
wontfix
worksforme
No Milestone
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Reference: tahoe-lafs/trac-2024-07-25#694
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Reformatting for Trac wiki escape.
Thank you for the bug report, sigmonsays. There is a hardcoded limit on the maximum size of mutable files. Directories are stored inside mutable files. The directory into which you are linking your new file would grow beyond the limit by the addition of this link.
I believe the first thing to do is to remove the hardcoded limit, and I'm accordingly changing the title of this ticket to "remove hard limit on mutable file size". The line of code in question is [publish.py line 145]source:src/allmydata/mutable/publish.py@20090222233056-4233b-171d02bfd1df45fff4af7a4f64863755379e855a#L145. Someone go fix it! Just remove the
MAX_SEGMENT_SIZE
hardcoded parameter and all two places that it is used.There is already a unit test in [test_mutable.py line 359]source:src/allmydata/test/test_mutable.py@20090218222301-4233b-49132283585996c7cee159d1ce2a9133bdd00aa7#L359 that makes sure that Tahoe raises a failure when you try to create a mutable file that is bigger than 3,500,000 bytes. Change that test to make sure that Tahoe doesn't raise a failure and instead that the file is created.
After that, however, you might start to learn why we put that limit in -- it is because modifying a mutable file requires downloading and re-uploading the entirety of that mutable file, and storing the entirety of it in RAM while changing it. So the more links you keep in that directory of yours, the slower it is going to be to read the directory or to change it, and the more RAM will be used.
Ultimately we need to implement efficient modification of mutable files without downloading and re-uploading the whole file -- that is the subject of #393 (mutable: implement MDMF).
In the mean-time, there are also some tickets about optimizing the CPU usage when processing large directories. Fixing these would not fix the problem that the entire directory has to be downloaded and re-uploaded, but these tickets might also be important: #327 (performance measurement of directories), #329
(dirnodes could cache encrypted/serialized entries for speed), #383 (large directories take a long time to modify), #414 (profiling on directory unpacking).
tahoe put reeturns "error, got 413 request entity too large"to remove hard limit on mutable file sizeAttachment 694.diff (15866 bytes) added
I tried my hand at fixing this, and am attaching a patch. Comments?
Looks good! Please change the doc:
to something like:
You can use
darcs unrecord
to undo the effect of your previousdarcs record
and then usedarcs record
again to make a new patch and attach it to this ticket. By the way, please name it with a trailing '.txt' this time.Attachment 694.txt (16323 bytes) added
Done. Thanks for the feedback.
Fixed by changeset:db939750a8831c1e and changeset:efcc45951d3544ee. Thanks, Kevan!