WebKit Bugzilla
Attachment 369822 Details for
Bug 197870
: Pruning old file logic should not stop after removing 10 files if there are more files can be removed.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-197870-20190513225104.patch (text/plain), 6.11 KB, created by
dewei_zhu
on 2019-05-13 22:51:05 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
dewei_zhu
Created:
2019-05-13 22:51:05 PDT
Size:
6.11 KB
patch
obsolete
>Subversion Revision: 245272 >diff --git a/Websites/perf.webkit.org/ChangeLog b/Websites/perf.webkit.org/ChangeLog >index 5a7a581f1493a9c6ff9ea0c3cbba6ab92957412e..4f6532377454513a19d0bd046a802e4a96f1d4c8 100644 >--- a/Websites/perf.webkit.org/ChangeLog >+++ b/Websites/perf.webkit.org/ChangeLog >@@ -1,3 +1,18 @@ >+2019-05-13 Dewei Zhu <dewei_zhu@apple.com> >+ >+ Pruning old file logic should not stop after removing 10 files if there are more files can be removed. >+ https://bugs.webkit.org/show_bug.cgi?id=197870 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Pruning old file logic should keep removing removable files to make enough space for a new file upload. >+ >+ * public/include/uploaded-file-helpers.php: Modify 'prune_old_files' to allow to remove moren than 10 files. >+ * server-tests/privileged-api-upload-file-tests.js: Added unit tests for this change. >+ (makeRandomAlnumStringForLength): Helper function to generate random content for a given length. >+ * server-tests/resources/test-server.js: Update total file size limit for this change. >+ (TestServer.prototype.testConfig): >+ > 2019-03-25 Dewei Zhu <dewei_zhu@apple.com> > > Primary cluster of measurement set should always contain latest point. >diff --git a/Websites/perf.webkit.org/public/include/uploaded-file-helpers.php b/Websites/perf.webkit.org/public/include/uploaded-file-helpers.php >index 2f36a9244f9d565017a0ebbc04fea01f12a552a7..28245b8e74e1f940cebc977c3bd411c5fd9522db 100644 >--- a/Websites/perf.webkit.org/public/include/uploaded-file-helpers.php >+++ b/Websites/perf.webkit.org/public/include/uploaded-file-helpers.php >@@ -162,7 +162,7 @@ function prune_old_files($db, $size_needed, $remote_user) > WHERE file_id = commitset_root_file AND commitset_patch_file IS NOT NULL AND file_deleted_at IS NULL > AND NOT EXISTS (SELECT request_id FROM build_requests WHERE request_commit_set = commitset_set AND request_status <= 'running') > $user_filter >- ORDER BY file_created_at LIMIT 10", $params); >+ ORDER BY file_created_at", $params); > if (!$build_product_query) > return FALSE; > while ($row = $db->fetch_next_row($build_product_query)) { >@@ -179,7 +179,7 @@ function prune_old_files($db, $size_needed, $remote_user) > WHERE (commitset_root_file = file_id OR commitset_patch_file = file_id) > AND request_commit_set = commitset_set AND request_status <= 'running') > $user_filter >- ORDER BY file_created_at LIMIT 10", $params); >+ ORDER BY file_created_at", $params); > if (!$unused_file_query) > return FALSE; > while ($row = $db->fetch_next_row($unused_file_query)) { >diff --git a/Websites/perf.webkit.org/server-tests/privileged-api-upload-file-tests.js b/Websites/perf.webkit.org/server-tests/privileged-api-upload-file-tests.js >index 1b902fad61ff10cfabf4c217abd806dd53279121..e41244fdf0422f95b351d09e7445e0dba31536c3 100644 >--- a/Websites/perf.webkit.org/server-tests/privileged-api-upload-file-tests.js >+++ b/Websites/perf.webkit.org/server-tests/privileged-api-upload-file-tests.js >@@ -13,6 +13,15 @@ const prepareServerTest = require('./resources/common-operations.js').prepareSer > describe('/privileged-api/upload-file', function () { > prepareServerTest(this); > TemporaryFile.inject(); >+ function makeRandomAlnumStringForLength(length) >+ { >+ let string = ''; >+ const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; >+ const charactersLength = characters.length; >+ for (let i = 0; i < length; i++) >+ string += characters.charAt(Math.floor(Math.random() * charactersLength)); >+ return string; >+ } > > it('should return "NotFileSpecified" when newFile not is specified', () => { > return PrivilegedAPI.sendRequest('upload-file', {}, {useFormData: true}).then(() => { >@@ -196,6 +205,28 @@ describe('/privileged-api/upload-file', function () { > }) > }); > >+ it('should prune all removable files to get space for a file upload', async () => { >+ const db = TestServer.database(); >+ const limitInMB = TestServer.testConfig().uploadFileLimitInMB; >+ const userQuotaInMB = TestServer.testConfig().uploadUserQuotaInMB; >+ const splitCount = 40; >+ const contentLength = userQuotaInMB * 1024 * 1024 / splitCount; >+ for (let i = 0; i < splitCount; i += 1) { >+ const content = makeRandomAlnumStringForLength(contentLength); >+ const stream = await TemporaryFile.makeTemporaryFile('file-' + i, content); >+ await PrivilegedAPI.sendRequest('upload-file', {newFile: stream}, {useFormData: true}); >+ } >+ let rows = await db.selectAll('uploaded_files'); >+ assert.equal(rows.length, splitCount); >+ >+ const stream = await TemporaryFile.makeTemporaryFileOfSizeInMB('limit.dat', limitInMB, 'a'); >+ const response = await PrivilegedAPI.sendRequest('upload-file', {newFile: stream}, {useFormData: true}); >+ rows = await db.selectAll('uploaded_files'); >+ assert.equal(rows.length, splitCount + 1); >+ const deletedFiles = rows.filter((row) => row['deleted_at']); >+ assert.equal(deletedFiles.length, 16); >+ }); >+ > it('should return "FileSizeQuotaExceeded" when there is no file to delete', () => { > const db = TestServer.database(); > const limitInMB = TestServer.testConfig().uploadFileLimitInMB; >diff --git a/Websites/perf.webkit.org/server-tests/resources/test-server.js b/Websites/perf.webkit.org/server-tests/resources/test-server.js >index ad60c46d7eb6cb4b02658e2ca764c8995233d3a1..7273006d3c3bde66264b8ccab706bf34287d8d9f 100644 >--- a/Websites/perf.webkit.org/server-tests/resources/test-server.js >+++ b/Websites/perf.webkit.org/server-tests/resources/test-server.js >@@ -80,7 +80,7 @@ class TestServer { > }, > 'uploadFileLimitInMB': 2, > 'uploadUserQuotaInMB': 5, >- 'uploadTotalQuotaInMB': 6, >+ 'uploadTotalQuotaInMB': 7, > 'uploadDirectory': Config.value('dataDirectory') + '/uploaded', > 'universalSlavePassword': null, > 'maintenanceMode': false,
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 197870
:
369822
|
369901